在Jboss AS 7上部署Jersey webapp
目前在JBoss4/5上运行一些WebApp,我正在测试迁移到jboss7。当我尝试在JBoss AS 7上部署一个基于jersey的webapp(带有独立预览配置文件的完整配置文件)时,我得到: 我对它做了一些研究,发现RestEasy是嵌入到应用服务器中的默认JAX-RS实现。像和)这样的帖子提到RestEasy部署器将接管在Jboss AS 7上部署Jersey webapp,jboss,migration,jersey,jboss7.x,Jboss,Migration,Jersey,Jboss7.x,目前在JBoss4/5上运行一些WebApp,我正在测试迁移到jboss7。当我尝试在JBoss AS 7上部署一个基于jersey的webapp(带有独立预览配置文件的完整配置文件)时,我得到: 我对它做了一些研究,发现RestEasy是嵌入到应用服务器中的默认JAX-RS实现。像和)这样的帖子提到RestEasy部署器将接管 在AS 6中,删除deployer似乎更容易,而我还没有看到AS 7的任何解决方案。在独立配置中,您可以通过修改configuration/standalone.xml
在AS 6中,删除deployer似乎更容易,而我还没有看到AS 7的任何解决方案。在独立配置中,您可以通过修改configuration/standalone.xml并删除extensions和profile部分中对JAXR的引用来克服这一问题。注意,尽管我在standalone.xml中注释了这些部分,JBoss在下一次启动时会自动删除这些引用…我在JBoss AS7上运行了Jersey WS 我对JBOSS所做的只是删除standalone.xml中与jax rs相关的所有内容 我的jersey示例代码来自: 我为jersey所做的唯一一件事就是从web.xml中删除init参数,并将jersey lib复制到WebContent/web-INF/lib
<!--<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>sample.hello.resources</param-value>
</init-param>-->
除了在
standalone.xml
中删除整个jaxrs子系统之外,在jboss部署结构中不包括RESTEasy模块。xml
也可以工作
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
<deployment>
<exclusions>
<module name="org.jboss.resteasy.resteasy-atom-provider" />
<module name="org.jboss.resteasy.resteasy-cdi" />
<module name="org.jboss.resteasy.resteasy-jaxrs" />
<module name="org.jboss.resteasy.resteasy-jaxb-provider" />
<module name="org.jboss.resteasy.resteasy-jackson-provider" />
<module name="org.jboss.resteasy.resteasy-jsapi" />
<module name="org.jboss.resteasy.resteasy-multipart-provider" />
<module name="org.jboss.resteasy.async-http-servlet-30" />
</exclusions>
</deployment>
</jboss-deployment-structure>
也请查看
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.providers</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.resources</param-name>
<param-value>false</param-value>
</context-param>
轻松扫描
假的
resteasy.scan.providers
假的
resteasy.scan.resources
假的
对我来说效果很好我相信正确的方法是使用与应用服务器无关的JAX-RS应用程序部署。不需要弄乱任何JBoss配置。您只需要在JAX-RSWeb应用程序中进行扩展。你可以找到一个例子。然后,您需要将其放在web.xml中
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>jersey.MyApplication</param-value>
</init-param>
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.providers</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.resources</param-name>
<param-value>false</param-value>
</context-param>
<load-on-startup>1</load-on-startup>
</servlet>
Jersey Web应用程序
com.sun.jersey.spi.container.servlet.ServletContainer
javax.ws.rs.Application
jersey.MyApplication
轻松扫描
假的
resteasy.scan.providers
假的
resteasy.scan.resources
假的
1.
包扫描机制在JBoss7.x上无法正常工作。我已经在JBoss 7.0.2.Final和JBoss 7.1.1.Final中成功地测试了这种方法。我们可以更新“服务器不可知”的方法以包括JBoss 7.1.1和Servlet 3.0吗
在3.0版web xml中无效。以下是我在JBoss 7.1.1和Jersey 1.17.1中的工作原理。无需修改standalone.xml
或domain.xml
。除了在web.xml中过滤restEasy之外,Jersey还可以使用Jackson。您可以阅读有关此配置的信息
为了节省猜测配置的时间,我发布了来自测试项目的web.xml
和pom.xml
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>TestJerseyonJBoss</display-name>
<servlet>
<servlet-name>Jersey REST Service</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.test.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 REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.providers</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.resources</param-name>
<param-value>false</param-value>
</context-param>
</web-app>
<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>TestJerseyOnJBoss</groupId>
<artifactId>TestJerseyOnJBoss</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.3.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>
TestJerseyonJBoss
泽西岛休息服务
com.sun.jersey.spi.container.servlet.ServletContainer
com.sun.jersey.config.property.packages
com.test.rest
com.sun.jersey.api.json.POJOMappingFeature
真的
1.
泽西岛休息服务
/休息/*
轻松扫描
假的
resteasy.scan.providers
假的
resteasy.scan.resources
假的
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>TestJerseyonJBoss</display-name>
<servlet>
<servlet-name>Jersey REST Service</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.test.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 REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.providers</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.resources</param-name>
<param-value>false</param-value>
</context-param>
</web-app>
<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>TestJerseyOnJBoss</groupId>
<artifactId>TestJerseyOnJBoss</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.3.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>
4.0.0
TestJerseyOnJBoss
TestJerseyOnJBoss
0.0.1-快照
战争
src
maven编译器插件
3.1
1.7
1.7
maven战争插件
2.3
网络内容
假的
泽西岛
球衣束
1.17.1
泽西岛
泽西json
1.17.1
asm
asm
3.3.1
罐子
编译
您应该将jaxrs子系统排除在您的部署激活之外 将其添加到META-INF/jboss-deployment-structure.xml中
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<exclude-subsystems>
<subsystem name="jaxrs" />
</exclude-subsystems>
<deployment>
</jboss-deployment-structure>
请注意,排除子系统功能和部署结构:1.2是在7.1.2中添加的,因此在7.1.1中不起作用。
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<exclude-subsystems>
<subsystem name="jaxrs" />
</exclude-subsystems>
</deployment>
</jboss-deployment-structure>
将完成这一技巧,与7.3AS配合使用效果很好。ctomc在结束部分时遗漏了一个小斜杠。:-在web.xml文件中添加文件
轻松扫描
假的
resteasy.scan.providers
假的
resteasy.scan.resources
假的
并注释掉init参数
这在jboss-as-7.1.1.Final中得到了解决,在standalone.xml中我没有做任何更改。
其他选项:
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>org.foo</param-value>
</init-param>
com.sun.jersey.config.property.packages
org.foo
如果您的意思是您的编辑没有持续,则需要在进行XML编辑之前关闭服务器。对运行时所做的任何更改都将在重新启动时被覆盖。脱机或通过管理控制台或CLI进行的更改将保持不变。通过这种方式,您可以根据需要创建和加载自定义服务器配置文件。如何关闭用于EAR/lib的resteasy扫描仪?对我也很有用!有点伤心
In web.xml file add the files
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.providers</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.resources</param-name>
<param-value>false</param-value>
</context-param>
and comment out the init-param
<!-- <init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value></param-value>
</init-param> -->
This worked out for me in jboss-as-7.1.1.Final and i did not do any changes in standalone.xml.
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>org.foo</param-value>
</init-param>