2017-09-18 3 views
0

Axis2を使用してWebサービスクライアント接続を作成しようとしています。 UserameTokenを設定するには、PasswordCallBackを使用する必要があります。ここでAxis2設定ファイルの読み込み中にClassNotFoundExceptionが発生しました

は私のクライアントコードである:ここで

ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem("src/main/resources/axis", "src/main/resources/axis/conf/axis2.xml"); 

      TransactionProcessorStub stub = new TransactionProcessorStub(ctx, SERVER_URL); 
      ServiceClient client = stub._getServiceClient(); 
      Options clientOptions = client.getOptions(); 
      clientOptions.setProperty(WSHandlerConstants.USER, request.getMerchantID()); 

は私のconf構造である:

enter image description here

そしてaxis2.xmlを内私はjavaranch

からのサンプルを使用して、私のパスワードのコールバックを設定しますコードスニペットは次のとおりです。

<phaseOrder type="InFlow"> 
     <!-- System pre-defined phases  --> 
     <phase name="Transport"> 
      <handler name="RequestURIBasedDispatcher" 
        class="org.apache.axis2.engine.RequestURIBasedDispatcher"> 
       <order phase="Transport"/> 
      </handler> 
      <handler name="SOAPActionBasedDispatcher" 
        class="org.apache.axis2.engine.SOAPActionBasedDispatcher"> 
       <order phase="Transport"/> 
      </handler> 
     </phase> 
     <phase name="Security"/> 
     <phase name="PreDispatch"/> 
     <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase"> 
      <handler name="AddressingBasedDispatcher" 
        class="org.apache.axis2.engine.AddressingBasedDispatcher"> 
       <order phase="Dispatch"/> 
      </handler> 

      <handler name="SOAPMessageBodyBasedDispatcher" 
        class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher"> 
       <order phase="Dispatch"/> 
      </handler> 
      <handler name="InstanceDispatcher" 
        class="org.apache.axis2.engine.InstanceDispatcher"> 
       <order phase="Dispatch"/> 
      </handler> 
     </phase> 
     <!-- System pre defined phases  --> 
     <!-- After Postdispatch phase module author or or service author can add any phase he want  --> 
     <phase name="OperationInPhase"/> 
    </phaseOrder> 

私はMavenを使用してクライアントコードを生成しています。

アプリケーションがこの行にConfigurationContextを作成しようとすると問題がある:

ConfigurationContextFactory.createConfigurationContextFromFileSystem( "SRC /メイン/リソース/軸"、 「のsrc /メイン/リソース/軸/ confに/ axis2.xmlを");

私は以下のようにClassNotFoundExceptionが取得:

org.apache.axis2.deployment.DeploymentException: org.apache.axis2.deployment.util.Utilsで org.apache.axis2.engine.RequestURIBasedDispatcher。 org.apache.axis2.deployment.AxisConfigBuilder.processPhaseOrders(AxisConfigBuilder.java:606) でloadHandler org.apache.axis2.deployment.AxisConfigBuilder.processPhaseList(AxisConfigBuilder.java:575)で(Utils.java:147) atorg.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfig org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:116で(DeploymentEngine.java:629) ) ATでBuilder.java:149) org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:64) でorg.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:210) au.com.jaycar.gatewayで.cybersourceClient.Sample.main(Sample.java:96) 原因:java.lang.ClassNotFoundException: org.apache.ax sun.misc.Launcher $ AppClassLoader.loadClass(ランチャーで java.lang.ClassLoader.loadClass(ClassLoader.java:424)で java.net.URLClassLoader.findClass(URLClassLoader.java:381)でis2.engine.RequestURIBasedDispatcher .java:335)at のjava.lang.ClassLoader.loadClass(ClassLoader.java:357) のjava.lang.Class.forName0(ネイティブメソッド)java.lang.Class.forName(Class.java:264) org.apache.axis2.util.Loader.loadClass(Loader.java:261) org.apache.axis2.util.Loader.loadClass(Loader.java:229)at org.apache.axis2.deployment。 util.Utils.loadHandler(Utils.java:114) ...8 more

ライブラリや設定が不足しているかどうかわかりません。私はそれが私の依存関係にあるaxis2-kernelにあると確信しているので、そうでなければソースコードはコンパイルされません。

私の設定やクラスパスに問題はありますか?

答えて

0

問題を修正できました。私はaxis2.xmlとサーバーモジュールを読み込む必要はありませんでした。私はそれらの両方を除去し、Iは城壁サンプルから最初のサンプルコードからのpolicy.xmlを使用し、クライアント・オプションにロード:

ConfigurationContext CTX = ConfigurationContextFactory.createConfigurationContextFromFileSystem(「SRC /メイン/リソース/軸」、 ヌル); TransactionProcessorStub = new TransactionProcessorStub(ctx、SERVER_URL); ServiceClientクライアント= stub._getServiceClient();オプションclientOptions = client.getOptions(); clientOptions.setProperty(WSHandlerConstants.USER、 request.getMerchantID()); StAXOMBuilderビルダー=新規 StAXOMBuilder( "src/main/resources/axis/conf/policy.xml");ポリシー policy = PolicyEngine.getPolicy(builder.getDocumentElement()); clientOptions.setProperty(RampartMessageData.KEY_RAMPART_POLICY、 ポリシー); client.setOptions(clientOptions); client.engageModule( "rampart"); stub._setServiceClient(client); ReplyMessageDocument response = stub.runTransaction(document);

関連する問題