2
我想使用CXF但不使用弹簧来运行简单的Web应用程序。我能够使用Jersey实现一个Servlet,现在我正在尝试使用CXF。以下是我的web.xml。使用CXF而不使用弹簧的JAX-RS
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Output Socket</display-name>
<servlet>
<servlet-name>JAXServlet</servlet-name>
<servlet-class>
org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet
</servlet-class>
<init-param>
<param-name>jaxrs.serviceClasses</param-name>
<param-value>org.myCompany.servlet</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JAXServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
而在pom.xml中,我有以下依赖项。
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>2.6.1</version>
</dependency>
我不确定这个配置。
<init-param>
<param-name>jaxrs.serviceClasses</param-name>
<param-value>org.myCompany.servlet</param-value>
</init-param>
一旦我在我的tomcat中部署war文件,我收到以下异常。
抛出java.lang.ClassNotFoundException:org.myCompany.servlet
我在做什么错在这里。任何帮助,将不胜感激
我发现了这个问题。这是一个愚蠢的错误。我只放了包,而不是完整的类路径名。我说的原因是我在同一个包中有两个Java类。有没有办法只提到包名?如果你知道你能否解释一下,我是否需要拥有所有这些依赖关系?我只需要一个servlet后端在调用url时运行 – user3919392 2015-04-03 14:33:57
您不能只提及包名称需要完整的类名,但是您可以列出所有以逗号分隔的类:org.myCompany.servlet.MyClass1, org.myCompany.servlet.MyClass2 ....我不确定你需要cxf-rt-frontend-jaxws依赖性原因它是用于SOAP Web服务的 – jMounir 2015-04-03 14:46:29
对不起,我明白了。非常感谢 – user3919392 2015-04-03 14:50:14