2016-04-25 9 views
1

カスタムハンドラを作成して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などのサードパーティライブラリも含まれます。wso2 apiマネージャ用サードパーティ製ライブラリをいくつか含むカスタムハンドラを作成する

この命令のとおり、https://docs.wso2.com/display/AM1100/Writing+Custom+Handlersの場合、jarファイルは/ repository/components/libに置く必要があります。だから私はすべての依存性のjarファイルと私のカスタムハンドラの瓶を置く。

しかし、私がwso2amを再起動すると、例外が見つかりませんでした。

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) 

これは何らかの理由でWSO2 OSGIの依存関係にすでにクラスが含まれているためですか?

いくつかのサードパーティライブラリを含む追加のjarファイルを作成して、バージョンの競合の問題がなくてもwso2 api managerに安全に組み込むことができるようにするには、どのような方法が推奨されますか。私はOSGIバンドルを作成する必要があります、私のカスタムハンドラクラスだけがそれを見ることができるように、バンドル内のすべての3番目のライブラリが含まれていますか?

答えて

2

これは何とかWSUS OSGI 依存関係に何らかの理由でクラスが含まれているためですか?

いいえ、APIマネージャは実行時にJARを検出できません。あなたは得ているjava.lang.NoClassDefFoundError: org/apache/http/conn/util/PublicSuffixMatcherLoader

そのカスタムハンドラのすべての依存関係JARを<APIM_HOME>/repository/components/libディレクトリに追加する必要があります。

また、あなたは私がすでにフォルダにすべての私の依存jarを含め、

<APIM_HOME>/repository/components/plugins 
+0

実際のシステムでは、既存のJARについては、以下のディレクトリに確認することができます。それは私が混乱している理由です。私のカスタムハンドラがdepndsしている私のサードパーティのライブラリは、すでにwso2に含まれている第三者のライブラリの新しいバージョンであるため、wso2が私の第3のライブラリを見て、それを無視して、第三者図書館は利用できません。このようなシナリオが発生する可能性はありますか? – rucciva

+0

はい、可能です。 –

+0

これが原因なら、どのように解決すればいいですか?私はosgiについて学ぶことはできませんが、osgiの助けとなるでしょうか? – rucciva

関連する問題