当前位置: 首页 > 知识库问答 >
问题:

Jersey Web服务无法在带有JBOSS AS7的Gatein 3.6中工作

微生烨然
2023-03-14

我已经在我的Gatein3.6(使用Jboss AS7)中创建了一个示例jersey服务器。下面是创建jersey服务器的步骤。

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



    <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>de.vogella.jersey.first</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>

类文件是


    package de.vogella.jersey.first;

    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;

    // Plain old Java Object it does not extend as class or implements
    // an interface

    // The class registers its methods for the HTTP GET request using the @GET annotation.
    // Using the @Produces annotation, it defines that it can deliver several MIME types,
    // text, XML and HTML.

    // The browser requests per default the HTML MIME type.

    //Sets the path to base URL + /hello
    @Path("/hello")
    public class Hello {

      // This method is called if TEXT_PLAIN is request
      @GET
      @Produces(MediaType.TEXT_PLAIN)
      public String sayPlainTextHello() {
       return "Hello Jersey";
      }

      // This method is called if XML is request
      @GET
      @Produces(MediaType.TEXT_XML)
      public String sayXMLHello() {
       return "" + " Hello Jersey" + "";
      }

      // This method is called if HTML is request
      @GET
      @Produces(MediaType.TEXT_HTML)
      public String sayHtmlHello() {
       return " " + "" + "Hello Jersey" + ""
      + "" + "Hello Jersey" + "" + " ";
      }

    }

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

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不支持包扫描部署。尝试使用不同的部署机制,例如在com.sun.jersey.core.spi.scanning.PackageNamessCanner.Scan(PackageNamessCanner.java:225)[Jerse-bundle-1.4.jar:1.4]在com.sun.jersey.core.spi.scanning.PackageNamessCanner.Scan(PackageNamessCanner.139)[Jerse-bundle-1.4.jar:1.4]在com.sun.jersey.api.core.scanningResourceConfig.init(ScanningResourceConfig.java:78)ainer.servlet.webcomponent.createresourceConfig(webcomponent.java:655)[Jersey-bundle-1.4.jar:1.4]在com.sun.jerse.spi.container.servlet.webcomponent.init(webcomponent.java:206)[Jersey-bundle-1.4.jar:1.4]在com.sun.jerse.spi.container.servlet.servletcontainer.init(servletcontainer.java:342)[Jersey-bundle-1.4.jar:1.4]在org.jboss.as.web.deployment.webdeploymentService.java:90)[jboss-as-web-7.1.1.final.jar:7.1.1.final]在org.jboss.msc.service.serviceControllerImpl.java:1811)在org.jboss.msc.service.service.serviceControllerImpl.java:1746)在java.util.concurrent.threadpoolexecutor$worker.runtask(threadpoolexecutor.java:886)

17:17:22,665错误[org.apache.catalina.core.containerbase.[jboss.web].[default-host].[/cisms]](MSC服务线程1-6)Servlet/cisms抛出load()异常:com.sun.jersey.core.spi.scanning.scannerexception:不支持URI vfs:/e:/bmitdevelopment/gatein-3.6.0.final-jbossas7/standalone/deployments/cisms.war/web-inf/类这类URI不支持包扫描部署。尝试使用不同的部署机制,例如在com.sun.jersey.core.spi.scanning.PackageNamessCanner.Scan(PackageNamessCanner.java:225)[Jerse-bundle-1.4.jar:1.4]在com.sun.jersey.core.spi.scanning.PackageNamessCanner.Scan(PackageNamessCanner.139)[Jerse-bundle-1.4.jar:1.4]在com.sun.jersey.api.core.scanningResourceConfig.init(ScanningResourceConfig.java:78)ainer.servlet.webcomponent.createresourceConfig(webcomponent.java:655)[Jersey-bundle-1.4.jar:1.4]在com.sun.jerse.spi.container.servlet.webcomponent.init(webcomponent.java:206)[Jersey-bundle-1.4.jar:1.4]在com.sun.jerse.spi.container.servlet.servletcontainer.init(servletcontainer.java:342)[Jersey-bundle-1.4.jar:1.4]在org.jboss.as.web.deployment.webdeploymentService.java:90)[jboss-as-web-7.1.1.final.jar:7.1.1.final]在org.jboss.msc.service.serviceControllerImpl.java:1811)在org.jboss.msc.service.service.serviceControllerImpl.java:1746)在java.util.concurrent.threadpoolexecutor$worker.runtask(threadpoolexecutor.java:886)

提前谢谢乔斯尼

共有2个答案

廉实
2023-03-14

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

这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

徐晔
2023-03-14

在使用Jersey 1.9版将Jersey应用程序从Tomcat迁移到Wildfly8(JBossAS)时,我遇到了这个问题。当将Jersey library版本升级到1.10时,这个问题得到了解决。

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
    <version>1.10</version>
</dependency>
 类似资料:
  • 我使用这里提供的指南,在本地*部署并测试了Java Spring boot RESTful应用程序的本地版本。使用命令mvn appengine:run,我成功地访问了REST API,没有任何问题(通过例如:http://localhost:8080/setiaalam/amenities).测试了浏览器和邮递员。 然后,一旦我将其部署到GCLOUD中,它总是返回404。我想可能它需要一些时间来

  • 我是Jasper报告新手,我有一个报告,它只有一个简单脚本,只返回一个字符串。在使用Jasper studio 6.5.0预览时,我能够看到结果,但当我尝试在本地Jasper服务器上部署相同的报表时,它会抛出错误: 我正在Glassfish 4.1.1上运行服务器,在lib文件夹中包含了scriplet jar文件,并根据https://community.jaspersoft.com/wiki/

  • 我的应用程序在所有浏览器中工作,除了IE11。在IE中,我得到。我已经添加了babel polyfill,但我仍然得到相同的错误,就像polyfill没有正确编译。 我安装了babel-polyfill。 我更改了webpack.base.conf.js,如下所示 这个项目是从Vuetify的webpack样板开始的。

  • 问题:我创建了一个服务帐户来与我的组织的Google Drive交互 = 你认为我缺少什么级别的权限? 可能与本文档中的以下图片有关? https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority 我已经经历过的步骤.. 1) 我创建了一个具有域范围委托和项目编辑状态的服务帐户。

  • 我发现有一个老问题sleuth/zipkin用@controlleradvice跟踪,但我在最新版本(spring-cloud-starter-zipkin:2.1.0.release)中遇到了同样的问题,我调试了它,发现错误为null,所以zipkin只是用statuscode猜测。我必须再次抛出异常以使zipkin通知异常 错误为空 zipkin结果 控制器建议 再次抛出异常,它起作用了

  • 我已经创建了一个示例SOAP Web服务项目( 我能将应用程序部署到应用服务器,b 当我从一个浏览器访问WSDL使用WSDL你 是否因为对于SOAP请求,我需要在Security Config java文件的顶部包含任何拦截器。还是我在SOAP安全方面走错了路。有人能告诉我我错过了什么,或者给我指出正确的方向吗。令牌验证是WS-Security的一部分吗?或者Okta资源服务器中的身份验证管理器是