未知协议:在JBOSS EAP 7.2.x

时间:2018-09-02 13:08:23

标签: java jboss osgi-bundle ops4j

您好,我们使用第三方产品,该产品是通过OSGI捆绑包和webapp组件开发的。默认情况下,它作为Web容器(带有将osgi捆绑包安装到JETTY中所需的配置文件)的Web容器嵌入JETTY服务器中,以在本地环境中为Web页面提供服务,并且可以正常工作。 与jboss-deployment-structure.xml打包在一起的相同包和Web组件与war一样,并已部署到JBOSS EAP 7.2.x中。但是在以下代码段

中执行时会抛出 MalformedURLException
try{
if (bundleUrl.getProtocol().equals("file")) {
//reference: URL wraps a file: URL to avoid copying the file. https://ops4j1.jira.com/wiki/spaces/paxurl/pages/19202252/Reference+Protocol
URL newBundleUrl = new URL("reference:"+ bundleUrl);
installBundles(newBundleUrl.toExternalForm());
}
}catch(MalformedURLException e){
System.out.println("Cannot create reference url to install bundles:");
e.printStackTrace();
}

当JBOSS通过读取web.xml描述符开始在容器中加载StartUpServlet时,它将尝试在JBOSS中安装osgi捆绑软件,但是JBOSS无法理解“ reference:file:/// 协议” ,因此会抛出MalformedURLException。我引用了此link,并了解可以将引用协议作为url处理程序添加到jvm并在JBOSS模块中添加org.ops4j.pax.url:pax-url-reference-2.5.4.jar,并且在我的 standalone.xml 中将其引用为< strong>全局模块。而且我还在 standalone.conf.bat

中的jvm参数下面添加了
  • -Djava.protocol.handler.pkgs = org.ops4j.pax.url

  • -Djboss.protocol.handler.modules = org.ops4j.pax.url

,但仍然抛出相同的错误。我复制了上面的代码片段,并作为带有JVM arg的独立Java文件(不带servlet)运行-Djava.protocol.handler.pkgs = org.ops4j.pax.url和 pax-url-reference-2.5.4 .jar 。运行正常。 JBOSS服务器环境的唯一问题。有谁知道如何在jboss中处理自定义协议?真的很烂。

0 个答案:

没有答案