2017-10-02 4 views
0

JMS/IBM MQトランスポートを使用してJAX-RPCクライアントを作成しようとしています。Apache Axis JAX-RPC over IBM MQ - IllegalArgumentException:noCFName

私はリファレンスとして、以下のガイドを使用しています:https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q033020_.htm

私は外部の関係者からWSDLを受けています。 HTTPバインディングのみが含まれていますが、JMS/IBM MQトランスポートを使用する必要があります。エンドポイントは.NETとIBM MQ 8です。

私はwsdlからクラスを生成するためにAxis 1.4を使用します。 私は、外部パーティが提供するエンドポイントURLでWebサービスの呼び出しをテストしようとすると:

public static void main(String[] args) throws MalformedURLException, ServiceException, RemoteException { 
    com.ibm.mq.soap.Register.extension(); 
    Wf1AGwImplLocator locator = new Wf1AGwImplLocator(); 
    IWf1AGw impl = locator.getBasicHttpBinding_IWf1aGw(
      new URL("jms:/queue?destination=QG.WF1AGW.REQ&amp;connectionFactory=clientChannel(WIP.SVRCONN)clientConnection(<externalIP1>(1414), <externalIP2>(1414))&amp;initialContextFactory=com.ibm.mq.jms.Nojndi&amp;replyDestination=QP.ABBSVC.WF1AGW.RESP&amp;timeToLive=30000&amp;persistence=1")); 

    impl.dispatch("", "", "", "", "",false, "", "", 1, Calendar.getInstance(), false, "", ""); 
} 

私は、次のようなエラーが出ます:

 
cannotConnect; nested exception is: 
    java.lang.IllegalArgumentException: noCFName 
    at org.apache.axis.transport.jms.JMSConnectorManager.getConnector(JMSConnectorManager.java:122) 
    at org.apache.axis.transport.jms.JMSTransport.setupMessageContextImpl(JMSTransport.java:163) 
    at org.apache.axis.client.Transport.setupMessageContext(Transport.java:46) 
    at org.apache.axis.client.Call.invoke(Call.java:2738) 
    at org.apache.axis.client.Call.invoke(Call.java:2443) 
    at org.apache.axis.client.Call.invoke(Call.java:2366) 
    at org.apache.axis.client.Call.invoke(Call.java:1812) 
    at com.test.BasicHttpBinding_IWf1AGwStub.dispatch(BasicHttpBinding_IWf1AGwStub.java:201) 
    at com.test.Test.main(Test.java:19) 
Caused by: java.lang.IllegalArgumentException: noCFName 
    at org.apache.axis.components.jms.JNDIVendorAdapter.getConnectionFactory(JNDIVendorAdapter.java:71) 
    at org.apache.axis.components.jms.JNDIVendorAdapter.getQueueConnectionFactory(JNDIVendorAdapter.java:55) 
    at org.apache.axis.transport.jms.JMSConnectorFactory.createConnector(JMSConnectorFactory.java:227) 
    at org.apache.axis.transport.jms.JMSConnectorFactory.createClientConnector(JMSConnectorFactory.java:178) 
    at org.apache.axis.transport.jms.JMSConnectorManager.getConnector(JMSConnectorManager.java:107) 

エラーテキストが、私はQCFに名前を付ける必要があることを示唆していますこれはnojndi QCFですか?これをどうすれば解決できますか? axis.jarにクライアント設定を上書きするには

<transport name="jms" pivot="java:com.ibm.mq.soap.transport.jms.WMQSender"/> 

:私のプロジェクトにクライアント-config.wsddをを追加し、次の行を追加する必要が

答えて

1

com.ibm.mq.soap.Register.extension(); 

これはまだ接続ファクトリに不満がありました。どうやらそれはURLを理解していなかったと私は&ですべて&amp;を交換し、ポートを削除する必要がありました(とにかく1414年にデフォルトを...)

EDIT: はIllegalArgumentException:noCFNameが発生するのは、外部ライブラリのORDERの。 MQ_INSTALLATION_PATH/java/libのjarは、MQ_INSTALLATION_PATH/java/lib/soapのjarの前にコンパイルする必要があります。

+0

私は自己回答の質問を愛する、私は人々がすべての高度な問題でそれを行うことを望む。 – Dariusz