【问题标题】:Jersey Web Service is not working in Gatein 3.6 with JBOSS AS7Jersey Web 服务在 Gatein 3.6 中与 JBOSS AS7 不兼容
【发布时间】:2013-12-16 07:22:57
【问题描述】:

我在我的 Gatein 3.6(使用 Jboss AS7)中创建了一个示例球衣服务器。下面是创建球衣服务器的步骤。

我在 web.xml 文件中添加了以下代码行。

泽西 REST 服务com.sun.jersey.spi.container.servlet.ServletContainercom.sun.jersey.config.property.packagesde.vogella.jersey.first1泽西 REST 服务/rest/*

类文件是

包 de.vogella.jersey.first; 导入 javax.ws.rs.GET; 导入 javax.ws.rs.Path; 导入 javax.ws.rs.Produces; 导入 javax.ws.rs.core.MediaType; // 普通的旧 Java 对象,它不扩展为类或实现 // 一个接口 // 该类使用@GET 注释为HTTP GET 请求注册其方法。 // 使用@Produces注解,它定义了它可以传递几种MIME类型, // 文本、XML 和 HTML。 // 浏览器默认请求 HTML MIME 类型。 //将路径设置为基本URL + /hello @Path("/你好") 公共课你好{ // 如果 TEXT_PLAIN 是请求,则调用此方法 @得到 @Produces(MediaType.TEXT_PLAIN) 公共字符串sayPlainTextHello(){ 返回“你好泽西岛”; } // 如果 XML 是请求,则调用此方法 @得到 @Produces(MediaType.TEXT_XML) 公共字符串sayXMLHello(){ 返回“”+“你好泽西”+“”; } // 如果 HTML 是请求,则调用此方法 @得到 @Produces(MediaType.TEXT_HTML) 公共字符串sayHtmlHello(){ 返回“”+“”+“你好泽西”+“” +“”+“你好泽西”+“”+“”; } }

但不幸的是,我在启动服务器时遇到了异常

17:17:22,649 错误 [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/cisms]](MSC 服务线程 1-6)StandardWrapper.Throwable: com .sun.jersey.core.spi.scanning.ScannerException: URI vfs:/E:/BMITDevelopment/GateIn-3.6.0.Final-jbossas7/standalone/deployments/cisms.war/WEB-INF/的URI方案vfs不支持 classes/com/radiant/cisms/workFlow/core/。此类 URI 不支持包扫描部署。 尝试使用不同的部署机制,例如使用 javax.ws.rs.core.Application 的扩展显式声明根资源和提供程序类 在 com.sun.jersey.core.spi.scanning.PackageNamesScanner.scan(PackageNamesScanner.java:225) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.core.spi.scanning.PackageNamesScanner.scan(PackageNamesScanner.java:139) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:78) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:116) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.api.core.PackagesResourceConfig.(PackagesResourceConfig.java:81) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.api.core.PackagesResourceConfig.(PackagesResourceConfig.java:92) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:677) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:655) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:206) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:342) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:516) [jersey-bundle-1.4.jar:1.4] 在 javax.servlet.GenericServlet.init(GenericServlet.java:242) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final] 在 org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1202) [jbossweb-7.0.13.Final.jar:] 在 org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1102) [jbossweb-7.0.13.Final.jar:] 在 org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3655) [jbossweb-7.0.13.Final.jar:] 在 org.apache.catalina.core.StandardContext.start(StandardContext.java:3873) [jbossweb-7.0.13.Final.jar:] 在 org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_30] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_30] 在 java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_30]

17:17:22,665 错误 [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/cisms]](MSC 服务线程 1-6)Servlet /cisms 抛出负载() 异常:com.sun.jersey.core.spi.scanning.ScannerException: URI vfs:/E:/BMITDevelopment/GateIn-3.6.0.Final-jbossas7/standalone/deployments/cisms.war的URI方案vfs不支持 /WEB-INF/classes/com/radiant/cisms/workFlow/core/。此类 URI 不支持包扫描部署。 尝试使用不同的部署机制,例如使用 javax.ws.rs.core.Application 的扩展显式声明根资源和提供程序类 在 com.sun.jersey.core.spi.scanning.PackageNamesScanner.scan(PackageNamesScanner.java:225) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.core.spi.scanning.PackageNamesScanner.scan(PackageNamesScanner.java:139) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:78) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:116) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.api.core.PackagesResourceConfig.(PackagesResourceConfig.java:81) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.api.core.PackagesResourceConfig.(PackagesResourceConfig.java:92) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:677) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:655) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:206) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:342) [jersey-bundle-1.4.jar:1.4] 在 com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:516) [jersey-bundle-1.4.jar:1.4] 在 javax.servlet.GenericServlet.init(GenericServlet.java:242) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final] 在 org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1202) [jbossweb-7.0.13.Final.jar:] 在 org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1102) [jbossweb-7.0.13.Final.jar:] 在 org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3655) [jbossweb-7.0.13.Final.jar:] 在 org.apache.catalina.core.StandardContext.start(StandardContext.java:3873) [jbossweb-7.0.13.Final.jar:] 在 org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_30] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_30] 在 java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_30]

提前致谢 乔斯尼

【问题讨论】:

    标签: java rest jboss


    【解决方案1】:

    我为此写了一篇博客。在另一个论坛上得到了回答,但总结是您需要在 web.xml 中禁用 resteasy 扫描并将 jboss-deployment-structure.xml 文件添加到 META-INF

    这 2 个文件应该看起来像这样(根据我在博客中的示例)

    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"  
          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>hellows</display-name>  
          <servlet>  
               <servlet-name>hellows servlet</servlet-name>  
               <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>  
               <init-param>  
                    <param-name>javax.ws.rs.Application</param-name>  
                    <param-value>com.vbranden.HelloApplication</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>hellows servlet</servlet-name>  
               <url-pattern>/*</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.resources</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>  
     </web-app>  
    

    jboss-deployment-structure.xml(进入 META-INF)

    <?xml version="1.0" encoding="UTF-8"?>  
     <jboss-deployment-structure>  
     <deployment>  
     <exclude-subsystems>  
      <subsystem name="resteasy" />  
     </exclude-subsystems>  
     <exclusions>  
      <module name="javaee.api" />  
      <module name="javax.ws.rs.api"/>  
      <module name="org.jboss.resteasy.resteasy-jaxrs" />  
     </exclusions>  
     <local-last value="true" />  
     </deployment>  
     </jboss-deployment-structure> 
    

    这里有完整的例子

    http://blog.vbranden.com/2015/03/creating-jersey-webservice-in-gatein.html

    【讨论】:

      【解决方案2】:

      在将 Jersey 应用程序从 Tomcat 迁移到 Jersey 版本 1.9 的 Wildfly 8 (JBossAS) 时,我遇到了这个问题。将 Jersey 库版本升级到 1.10 时已解决。

      <dependency>
          <groupId>com.sun.jersey</groupId>
          <artifactId>jersey-server</artifactId>
          <version>1.10</version>
      </dependency>
      

      【讨论】:

        猜你喜欢
        • 2011-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-24
        • 1970-01-01
        • 1970-01-01
        • 2011-10-02
        • 2013-09-04
        相关资源
        最近更新 更多