簡體   English   中英

基於IBM MQ的Apache Axis JAX-RPC-IllegalArgumentException:noCFName

[英]Apache Axis JAX-RPC over IBM MQ - IllegalArgumentException: noCFName

我正在嘗試使用JMS / IBM MQ傳輸創建JAX-RPC客戶端。

我正在使用以下指南作為參考: https : //www.ibm.com/support/knowledgecenter/zh/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q033020_.htm

我已經從外部團體收到了wsdl。 它僅包含http綁定,但是我們需要使用JMS / IBM MQ傳輸。 端點是.NET和IBM MQ 8。

我使用Axis 1.4從wsdl生成類。 當我嘗試使用外部方提供的端點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)

錯誤文本表明即使這是nojndi QCF,也需要命名QCF? 我該如何解決?

需要向我的項目中添加一個client-config.wsdd並添加以下行:

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

覆蓋axis.jar中的client-config。 我以為這個電話已經完成了:

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

它仍然抱怨連接工廠。 顯然,它無法理解該網址,因此我不得不替換所有&amp; 使用&刪除端口(無論如何默認為1414。)

編輯:IllegalArgumentException:由於外部庫的ORDER發生noCFName。 必須先編譯MQ_INSTALLATION_PATH / java / lib中的jar,然后再編譯MQ_INSTALLATION_PATH / java / lib / soap中的jar。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM