Внедрение Rest Easy с Tomcat - PullRequest
       25

Внедрение Rest Easy с Tomcat

2 голосов
/ 03 августа 2011

У меня есть динамический веб-проект с набором jsp и настраиваемым сервлетом контроллера, который прекрасно работает. Но мне также нужно внедрить в нее услугу отдыха, и поэтому я изменил Интернет. XML, чтобы содержать простой сервлет отдыха также. и класс приложения, который вызывает остальной легкий ресурс. Но, когда я добавляю изменения в файл web.xml, он попадает в простой сервлет, но выдает исключение ..

java.lang.ClassNotFoundException: org.scannotation.AnnotationDB$CrossReferenceException

Web.xml:

   <servlet>
<display-name>ControllerServlet</display-name>
<servlet-name>ControllerServlet</servlet-name>
<servlet-class>com.example.ControllerServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet>
<servlet-name>CollRestApi</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
    <init-param>
      <param-name>javax.ws.rs.Application</param-name>
      <param-value>com.exampl.RestApiApplication</param-value>
    </init-param>
 </servlet>
<servlet-mapping>
    <servlet-name>ControllerServlet</servlet-name>
    <url-pattern>/ControllerServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>CollRestApi</servlet-name>
    <url-pattern>/or/*</url-pattern>
</servlet-mapping>

Rest Api Применение:

public class RestApiApplication extends Application{

private Set<Object> singletons = new HashSet();
private Set<Class<?>> empty = new HashSet();

public RestApiApplication() {
    // ADD YOUR RESTFUL RESOURCES HERE
    this.singletons.add(new CollRestApi());
}

public Set<Class<?>> getClasses()
{
    return this.empty;
}

public Set<Object> getSingletons()
{
    return this.singletons;
}}

И CollRestApi .. оказывает услуги ..

   @Path("api")@Consumes({ "application/xml", "application/json" })@Produces({application/xml", "application/json" })public class CollRestApi {

/**
 * @return
 */
@GET
@Path("ab")
public Response do() {
    System.out.println("Inside the do Method.");

}}

Ответы [ 3 ]

4 голосов
/ 29 августа 2011

Я только что столкнулся с той же проблемой, используя maven и netbeans.Ответ заключается в добавлении репозитория jboss maven в ваш файл pom.xml.Простое добавление <dependency>....</dependency>, например, с помощью браузера NetBeans Maven, не устанавливает зависимости resteasy.

<repositories>
        <repository>
            <id>jboss</id>
            <url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>
        </repository>
</repositories>
4 голосов
/ 10 августа 2011

Очевидно, вам нужно добавить scannotation.jar в ваш путь к классам.RESTEasy 2.2.2.GA зависит от scannotation-1.0.3 и javassist-3.12.1.GA.jar, которые вам также нужны.

0 голосов
/ 21 февраля 2013

У меня было то же исключение, и я исправил его так:

Возможно ли, что у вас есть библиотеки resteasy **. Jar в другом месте (например, в директории tomcat lib), чем в других библиотеках, поддерживающих resteasyкак scannotation-1.0.3.jar (например, в вашем файле war WEB-INF / lib)?

В такой конфигурации ваши классы resteasy будут запускаться в другом загрузчике классов, который не видит scannotation-1.0.3.jar классы.

=> Попробуйте поместить все восстановленные файлы jar в любое из мест (желательно в файл .war).

...