ДЖЕРСИ и JAX-RS

Я пытаюсь развернуть простейшую службу REST с использованием трикотажа и JAX-RS, но получаю эту ошибку:

ОШИБКА HTTP: 404 NOT_FOUND RequestURI=/hosting/demo/example Powered by Jetty://

Там, где я думаю, что все сделал правильно, ниже приведен код, который я использую для этого.

POM.XML (вставка только части, относящейся к джерси)

<dependency>
    <!-- the implementation of JAX-RS -->
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
    <version>1.0.1</version>
</dependency>
<dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-core</artifactId>
        <version>1.0.1</version>
</dependency>
<dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-client</artifactId>
        <version>1.0.1</version>
        <scope>compile</scope>
</dependency>

WEB.XML

<servlet>
        <servlet-name>jersey</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>mop.core.service.restservices</param-value>
        </init-param>
</servlet>
<servlet-mapping>
        <servlet-name>jersey</servlet-name>
        <url-pattern>/demo</url-pattern>
</servlet-mapping>

У моего класса есть @GET

package mop.core.service.restservices;

import javax.swing.JOptionPane;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("/example")
public class PricePointRestService {
    @GET
    @Produces("text/plain")
    public String getPricePoint(){
        JOptionPane.showMessageDialog(null, "GET CALLED");
        return "hello";
    }

       @POST
       @Produces("application/xml")
       @Consumes({"application/x-www-form-urlencoded", "multipart/form-data"})
       public String doPost(@FormParam("xml") String xml) {
           return "<xml></xml>";
       }
}

URL-адрес, который я нажал: http://localhost/hosting/demo/example


person Community    schedule 09.06.2009    source источник


Ответы (4)


Измените шаблон URL-адреса в файле web.xml на:

<url-pattern>/demo/*</url-pattern>
person Damo    schedule 09.06.2009

Вы уверены, что часть URL-адреса «хостинг» верна? В какой среде развернуто веб-приложение? Можете ли вы открыть какие-либо страницы в веб-приложении?

Попробуйте добавить jsp в веб-приложение и посмотрите, сможете ли вы это сделать.

person Pablojim    schedule 09.06.2009
comment
Да, часть хостинга верна, так как я работаю над установленным проектом. Все приложение работает нормально, проблема, которую я выяснил, заключалась в проблеме совместимости ASM 2.2.3 и Jersey, для которой требуется ASm 3.1. - person ; 10.06.2009

Проблема, которую я выяснил, заключалась в проблеме совместимости ASM 2.2.3 и Jersey, для которой требуется ASM 3.1. Hibernate зависит от ASm 2.2.3.

Об этой ошибке сообщается по адресу http://opensource.atlassian.com/projects/hibernate/browse/EJB-358?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Я пытаюсь найти обходные пути для этого, но, похоже, они не работают, так как cglib 2.2 и cglib-nodep также не помогают.

javassist нельзя использовать через XML-файл конфигурации спящего режима, для этого требуется файл hibernate.properties, где проект, над которым я работаю, использует hibernate.cfg.xml.

Любое решение?

person Community    schedule 10.06.2009

Согласен с Дамо:

<url-pattern>/demo/*</url-pattern>

Также добавьте:

<load-on-startup>1</load-on-startup>

до:

</servlet>

Я предполагаю, что вы используете Maven. Hibernate 3.2.4 отлично работает на ASM 3.1, поэтому вы можете игнорировать эту зависимость. Эта запись будет работать с Джерси.

   <dependency><!--  hibernate 3.2.4.ga -->
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate</artifactId>
        <version>3.2.6.ga</version>
            <exclusions>
                    <exclusion>
                            <groupId>asm</groupId>
                            <artifactId>asm</artifactId>
                    </exclusion>
                    <exclusion>
                            <groupId>asm</groupId>
                            <artifactId>asm-attrs</artifactId>
                    </exclusion>              
                    <exclusion>
                            <groupId>cglib</groupId>
                            <artifactId>cglib</artifactId>
                    </exclusion>
            </exclusions>

    </dependency>
person stevedbrown    schedule 09.06.2009