Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为wso2 api管理器创建包含多个第三方库的自定义处理程序_Wso2_Wso2 Am - Fatal编程技术网

为wso2 api管理器创建包含多个第三方库的自定义处理程序

为wso2 api管理器创建包含多个第三方库的自定义处理程序,wso2,wso2-am,Wso2,Wso2 Am,我需要创建要包含在WSO2 api管理器中的自定义处理程序(我使用版本1.10.0)。我的自定义处理程序依赖于org.apache.httpcomponents.httpasyncclient-4.1包中的org.apache.http.impl.nio.client.CloseableHttpAsyncClient类。此依赖项还包括一些第三方库,如org.apache.httpcomponents.httpclient-4.4.1 按照此说明,jar需要放在/repository/compon

我需要创建要包含在WSO2 api管理器中的自定义处理程序(我使用版本1.10.0)。我的自定义处理程序依赖于org.apache.httpcomponents.httpasyncclient-4.1包中的org.apache.http.impl.nio.client.CloseableHttpAsyncClient类。此依赖项还包括一些第三方库,如org.apache.httpcomponents.httpclient-4.4.1

按照此说明,jar需要放在/repository/components/lib中。所以我把我的定制处理程序jar和它的所有依赖jar文件放在一起

但是当我重新启动wso2am时,我得到了一些类not found异常

titlement.internal.SchemaBuilder}
TID: [-1234] [] [2016-04-25 17:14:28,659] FATAL {org.wso2.carbon.mediation.initializer.ServiceBusInitializer} -  Failed to initialize ESB due to a fatal error {org.wso2.carbon.mediation.initializer.ServiceBusInitializer}
java.lang.NoClassDefFoundError: org/apache/http/conn/util/PublicSuffixMatcherLoader
       at org.apache.http.impl.nio.client.HttpAsyncClientBuilder.build(HttpAsyncClientBuilder.java:642)
       at id.co.telkom.dds.oam.wso2am.handler.api.client.BillingAPIClient.<init>(BillingAPIClient.java:28)
       at id.co.telkom.dds.oam.wso2am.handler.BillingHandler.<init>(BillingHandler.java:26)
       at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
       at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
       at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
       at java.lang.Class.newInstance(Class.java:442)
       at org.apache.synapse.config.xml.rest.APIFactory.defineHandler(APIFactory.java:130)
       at org.apache.synapse.config.xml.rest.APIFactory.createAPI(APIFactory.java:101)
titlement.internal.schemabilder}
TID:[-1234][[2016-04-25 17:14:28659]致命错误{org.wso2.carbon.mediation.initializer.ServiceBusInitializer}-由于致命错误{org.wso2.carbon.mediation.initializer.ServiceBusInitializer}无法初始化ESB
java.lang.NoClassDefFoundError:org/apache/http/conn/util/PublicSuffixMatcherLoader
位于org.apache.http.impl.nio.client.HttpAsyncClientBuilder.build(HttpAsyncClientBuilder.java:642)
位于id.co.telkom.dds.oam.wso2am.handler.api.client.BillingAPIClient.(BillingAPIClient.java:28)
位于id.co.telkom.dds.oam.wso2am.handler.BillingHandler.(BillingHandler.java:26)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:422)
位于java.lang.Class.newInstance(Class.java:442)
位于org.apache.synapse.config.xml.rest.apifacture.defineHandler(apifacture.java:130)
位于org.apache.synapse.config.xml.rest.APIFactory.createAPI(APIFactory.java:101)
是不是因为该类已经包含在WSO2 OSGI依赖项中

建议如何创建包含多个第三方库的附加jar文件,以便安全地将其包含在wso2 api管理器中,而不会出现版本冲突问题。我是否应该创建一个OSGI捆绑包,包括捆绑包中的所有第三个库,以便只有我的自定义处理程序类可以看到它

是不是因为这个类已经包含在WSO2 OSGI中了 依赖关系

不,API管理器在运行时找不到JAR。您将获得
java.lang.NoClassDefFoundError:org/apache/http/conn/util/PublicSuffixMatcherLoader

您需要将该自定义处理程序的所有依赖项jar添加到
/repository/components/lib
目录中

此外,您可以在以下目录中检查系统中的现有JAR

<APIM_HOME>/repository/components/plugins
/repository/components/plugins

实际上,我已经将我所有的依赖项jar都包含到了这个文件夹中。这就是我感到困惑的原因。我的想法是,我的自定义处理程序depnds所在的第三方库是wso2中已包含的第三方librry的更新版本,因此当wso2看到我的第三方库时,它将被忽略,从而使第三方库中的新类不可用。这样的情况可能发生吗?是的,这是可能的。如果这是原因,那么我应该如何解决?我还没有了解osgi,但是作为osgi创建它会有帮助吗?