gpt4 book ai didi

rest - 尝试访问服务器上的 rest API 时出现错误 500(在开发期间正在本地主机上工作)

转载 作者:行者123 更新时间:2023-11-28 23:11:18 25 4
gpt4 key购买 nike

我创建了一个 Rest API 来让我的网站与 mysql 数据库进行通信。在本地开发它时,我可以使用 tomcat 服务器在 eclipse 上运行应用程序,然后使用如下路径从 javascript 访问我的 api:

localhost:8080/backend/api/paintings

此路径提供数据库中的所有画作。

我现在租了一个 VPS 并在上面安装了所有东西(我认为)以使其工作,但是当尝试访问相同的路径时我得到错误 500,即使没有任何改变并且 tomcat 正在运行(我可以访问 mydomain .com:8080 并显示 apache tomcat 页面)。

我的 Rest API 是使用 Java EE 构建的。

我收到的错误信息是

message "Servlet.init()" pour la servlet [mpart] a généré une exception

description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête.

exception
javax.servlet.ServletException: "Servlet.init()" pour la servlet [mpart] a généré une exception
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:528)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:810)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.base/java.lang.Thread.run(Thread.java:834)

cause mère
java.lang.NoSuchMethodError: 'java.util.Map javax.ws.rs.core.Application.getProperties()'
org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:331)
org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:392)
org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177)
org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369)
javax.servlet.GenericServlet.init(GenericServlet.java:158)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:528)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:810)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.base/java.lang.Thread.run(Thread.java:834)

我尝试通过这两种方法从我的js代码访问api

mydomain.com:8080/backend/api/paintings 
localhost:8080/backend/api/paintings

两者都报错。

我可以提供任何类型的代码来帮助解决这个问题。

这是我的 web.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>mpart</display-name>
<servlet>
<servlet-name>mpart</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>fr.demarquez.mpart.controllers</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>
fr.demarquez.mpart.configs.CORSFilter;
fr.demarquez.mpart.configs.LocalDateTimeAdapter;
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mpart</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>

最佳答案

您正在将 mpart servlet 映射到 /api/* 但使用 /bacend/api* 端点访问它。你能试试这个吗?

''' /后端/API/*'''

关于rest - 尝试访问服务器上的 rest API 时出现错误 500(在开发期间正在本地主机上工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57842431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com