在旧的JBoss AS(4.2.2)中部署Jersey webapp-无法访问资源

时间:2019-04-25 10:04:59

标签: java rest jboss jersey ear

我的目标是在JBoss(4.2.2)耳中部署Jersey(1.9)Web应用程序。该版本的JBoss没有RestEasy随附的现成的JAX-RS实现。

我无法从客户端访问端点。

在JBoss application.xml 文件中,添加了以下几行:

<module>
    <web>
        <web-uri>sharedall-restservices.war</web-uri>
        <context-root>/rest</context-root>
    </web>
</module>

我的战争与其他放置在那里的战争/罐子一起位于deploy / ear目录中。

在战争的 web.xml 中,我有以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee">

    <display-name>Jersey REST</display-name>
    <servlet>
        <servlet-name>rest-services</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>

        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.shaylois.rest</param-value>
        </init-param>


        <init-param>
            <param-name>jersey.config.server.provider.scanning.recursive</param-name>
            <param-value>false</param-value>
        </init-param>

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

    </servlet>
    <servlet-mapping>
        <servlet-name>rest-services</servlet-name>
        <url-pattern>/services</url-pattern>
    </servlet-mapping>
</web-app>

该Web应用程序爆炸并成功部署,并在日志文件中通知我Jersey以及(反)序列化提供程序已找到该资源。但是和我在一起...

以下是该资源的简短摘要:

@Path("/predefinedMessages")
public class PredefinedMessageServiceResource {

    private PredefinedMessageServicePOJO pojo = new PredefinedMessageServicePOJO();

    @GET
    @Produces("application/protobuf")
    public PredefinedMessageProtoCollection getPredefinedMessages() {
        return pojo.getPredefinedMessages();
    }
}

这是我尝试从客户端访问它的方式:

WebResource webResource = jerseyWebClient.resource("http://localhost:8080/rest/services/predefinedMessages");    

ClientResponse returnedByServer = webResource.accept("application/protobuf").get(ClientResponse.class);

我收到404错误代码。 在JBoss的tomcat日志中,我可以看到尝试访问资源:

127.0.0.1 - GET /rest/services/predefinedMessages HTTP/1.1 404 77

在我看来,我的资源位于其他URL。我被困在确定它是哪个URL的阶段,并且在哪里配置它出错了。

在此先感谢那些愿意提供帮助的好奇心和乐于助人的人。

编辑:发布问题后不久,我发现了错误。像往常一样。 :) web.xml 中的行<url-pattern>/services</url-pattern>更改为<url-pattern>/services/*</url-pattern>

0 个答案:

没有答案