首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JBOSS 6部署问题,JAX-RS与泽西

JBOSS 6部署问题,JAX-RS与泽西
EN

Stack Overflow用户
提问于 2017-07-27 07:12:39
回答 1查看 511关注 0票数 6

我的问题是:

如何在JBOSS中启用包扫描,以便它知道在哪里查找war文件中的实现类和提供程序(带有@Provider注释的提供程序)?

为什么我的过滤器没有被应用程序类注册,而我必须用web.xml进行注册?

场景

我使用泽西岛创建了一个Jax-RS the服务,并将其部署到JBOSS-6中,首先我遇到了一个错误,描述了JBOSS将无法扫描包,这是我在web.xml中提供的用于查找Rest the服务实现的错误。因此,方法是创建一个Application类(我没有具体原因使用泽西岛本身提供的ResourceConfig ),并在getClasses方法中注册了WebService实现,如下所示:

代码语言:javascript
复制
public class MainApplication extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        HashSet<Class<?>> set = new HashSet<Class<?>>();
         set.add(RESTWSImplementation.class);
         set.add(SomeFilter.class);
        return set;
    }   
}

它对我有些帮助,但过滤器仍然没有注册。即

代码语言:javascript
复制
 set.add(SomeFilter.class);

好像不起作用,所以我在我的web.xml中提到了这个过滤器,

代码语言:javascript
复制
<init-param>
        <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
        <param-value>test.SomeFilter</param-value>
</init-param>

然后一切都完美无缺。然而,从下面的文字,我期待它得到立即注册。

,所以我的问题是,

  1. 如何在JBOSS中启用包扫描,以便它知道在哪里查找实现类和提供程序(带有@Provider注释的类)?
  2. 为什么我的过滤器没有被应用程序类注册,而我必须在web.xml中完成它?

编辑: pom.xml

代码语言:javascript
复制
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>POCTEST</groupId>
  <artifactId>POCTEST</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
            <version>1.8</version>
        </dependency>
    <dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20090211</version>
</dependency>
</dependencies>
</project>
EN

回答 1

Stack Overflow用户

发布于 2017-07-27 07:19:22

请出示你的pom.xml。

可能您正在使用:

代码语言:javascript
复制
    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>${jaksonVersion}</version>
    </dependency>

尝试:

代码语言:javascript
复制
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>${restEasyVersion}</version>
    </dependency>

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson2-provider</artifactId>
        <version>${restEasyVersion}</version>
    </dependency>

编辑:

或者您可以尝试在servlet标记中添加init (在web.xml中):

代码语言:javascript
复制
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.your.package</param-value>
    </init-param>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45343755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档