我正在创建一个简单的restful 服务并使用soapui 对其进行测试。 每次我收到错误:500:内部服务器错误。 在服务器日志中,它显示 class not found 。添加 jar 就会开始发生冲突。 我认为这只是 jar 问题,但不知道确切的 jar。
web.xml:-
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>Service</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.service</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
jar :-
com.springsource.org.objectweb.asm_2.2.3.jar
jersey-client.jar
jersey-core.jar
jersey-gf-server.jar
Java 代码:-
package com.service;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Path("/cal/")
public class RestService {
@GET
@Path("/one/")
@Produces("application/xml")
public String sanction(){
return new Sanction().servesRequest();
}
}
wadl 路径:- http://localhost:8090/Service/rest/application.wadl
我尝试过更改 jar、更改 jersey servlet 类名、eclipse、netbeans 等等,但无法将其放在地板上。
最佳答案
这是 jar 问题。 我正在从 https://jersey.java.net/download.html 下载 jars其中包含 3 个文件夹,即 api、ext、lib,但我没有错误地使用这些文件夹中的所有 jar。 我还必须更改 web.xml,因为这些 jar 用于 jersey2.19,所以新的 web.xml 就像
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>Service</display-name>
<servlet>
<servlet-name>REST Web </servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.service</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>REST Web </servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
关于java - 无法测试 Restful Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31398881/