不使用 Spring 的带有 CXF 的 JAX-RS

JAX-RS with CXF without using Spring

我想 运行 一个使用 CXF 但不使用 spring 的简单 Web 应用程序。我能够使用 Jersey 实现 Servlet,现在我正在尝试使用 CXF。以下是我的 web.xml.

    <!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

我是不是做错了什么。任何帮助将不胜感激

您确实需要以下配置:

<init-param>
       <param-name>jaxrs.serviceClasses</param-name>
       <param-value>org.myCompany.servlet</param-value>
</init-param>

这是您必须提及您的服务的地方 classes。并且错误提示找不到 class org.myCompany.servlet。 因此,请确保您的服务 class 存在且具有正确的包和名称。