2015-04-03 2 views
2

Я хочу запустить простое веб-приложение с использованием CXF, но не используя пружину. Я смог реализовать сервлет, используя Джерси, и теперь я пытаюсь использовать CXF. Ниже приведен мой web.xml.JAX-RS с CXF без использования пружины

<!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, я получаю следующее исключение.

java.lang.ClassNotFoundException: org.myCompany.servlet

я делаю ничего плохого здесь. Любая помощь будет оценена

ответ

3

Вам понадобится следующая конфигурация:

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

Это место, где вы должны упомянуть классы обслуживания. и ошибка говорит, что он не находит класс org.myCompany.servlet. Будьте уверены, что ваш класс обслуживания существует с хорошим пакетом и именем.

+0

Я нашел проблему. Это была глупая ошибка. Я только поставил пакет, а не полное имя пути класса. Причина, по которой я сказал, что у меня есть два класса Java в одном пакете. Есть ли способ назвать только имя пакета? И если вы знаете, можете ли вы объяснить, нужны ли мне все эти зависимости? Мне просто нужен серверный бэкэнд для запуска, когда URL-адрес называется – user3919392

+0

. Вы не можете назвать только имя пакета, полное имя класса требуется, но вы можете перечислить все ваши классы, разделенные запятой, как это: org.myCompany.servlet.MyClass1, org.myCompany.servlet.MyClass2 .... Я не уверен, что вам нужна зависимость cxf-rt-frontend-jaxws, потому что это для веб-служб SOAP. – jMounir

+0

жаль, что у меня это получилось. Большое спасибо – user3919392

Смежные вопросы