我尝试使用restful服务从angular 5应用程序向java应用程序提交POST请求时,从tomcat上运行的java应用程序收到以下错误:
java:445)org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)atg.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:637)at org.apache.tomcat.util .net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:318)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615 )atg.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:745)引起:java.lang.AbstractMethodError:javax。 ws.rs.core.Response.getStatusInfo()Ljavax / WS / RS /核心/响应$ StatusType; 在javax.ws.rs的javax.ws.rs.WebApplicationException.computeExceptionMessage(WebApplicationException.java:211)。53)atg.jboss.seam.resteasy.ResteasyResourceAdapter.getResource(ResteasyResourceAdapter.java:121)at org.jboss.seam.servlet.SeamResourceServlet.service(SeamResourceServlet.java:80)at javax.servlet.http.HttpServlet.service (HttpServlet.java:731)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)... 44多个2018年9月26日下午11点26分22秒org.apache.catalina.core.StandardWrapperValve在路径[/ jboss-seam-jpa]的上下文中调用SEVERE:servlet [Seam Resource Servlet]的Servlet.service()抛出异常[Servlet执行引发异常],原因是java.lang.AbstractMethodError:javax.ws.rs .core.Response.getStatusInfo()Ljavax / WS / RS /核心/响应$ StatusType; 在javax.ws的javax.ws.rs.WebApplicationException.computeExceptionMessage(WebApplicationException.java:211)。
Angular 5应用程序代码:
const httpOptions = {
headers: new HttpHeaders({ 'Accept': 'application/json', 'Content-Type': 'application/json' })
};
private baseUrl = 'http://localhost:8080/jboss-seam-jpa/seam/resource/rest';
addLocation(locationTemp: Location): Observable<any> {
return this.http.post(`${this.baseUrl}/Trips/Location`, JSON.stringify(locationTemp), httpOptions);
}
Java代码:
@POST
@Path("Location")
@Consumes("application/json")
public Response addLocation(Location location) {
myDao.addLocation(location);
return Response.ok().entity("Location added successfully").build();
}
java应用程序中的一些jar:
这是web.xml的核心过滤器配置,请注意@GET请求从角应用程序到java应用程序正常工作。
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT,DELETE</param-value>
</init-param>
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>Content-Type, Accept, Authorization</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
发布于 2018-09-28 10:15:53
从堆栈跟踪看起来你正在从浏览器的不同主机和端口做请求,而Tomcat不喜欢这样。我看到两种可能的解决方案,一种是将Tomcat CORS过滤器配置为接受来自所有主机和端口的请求,或者只接受所需的解决方案,尽管这可能不是希望在生产中使用的解决方案。
https://stackoverflow.com/questions/-100006171
复制相似问题