Jersey:如何在几个Web模块中共享ExceptionMapper?

时间:2013-01-29 21:13:54

标签: java rest java-ee jersey jax-rs

当我的异常映射器类位于.war包中时,它可以很好地工作。问题是我有几个.war包,它们共享相同的异常层次结构。我正在考虑将我的异常映射器类放入实用程序jar并将它们放入" / lib"应用程序服务器的文件夹。此实用程序jar已包含我的自定义异常类。事实证明,一旦将Jersey放在.war包之外,Jersey就无法找到我的异常映射器类。

有没有办法启用位于" / lib"中的泽西扫描提供商?夹?

BTW,我的应用服务器是" JBoss AS 6.0"我正在使用Jersey SpringServlet。这是我的web.xml配置代码段:

    <servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>
            com.sample.rest
        </param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/*</url-pattern>       
</servlet-mapping>

干杯!

1 个答案:

答案 0 :(得分:0)

您需要告诉jersey在web.xml中扫描包含ExceptionHandler的软件包。只需将它们分开';'

即可

看起来应该是这样的:

<servlet>
    <servlet-name>Jersey Web Application</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>com.company.app.rest;com.company.util.exception</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>