0

スタックオーバーフローに質問を投稿するのはこれが初めてです。コード/質問のフォーマットをできるだけ多く試し、できる限り明確にしようとしました。謝罪し、間違いがあれば説明してください。次の質問で訂正します。

私は websphereMq と spring JMS 機能を使用して jms を介して SOAP を介してサービスを実装しようとする初心者です。以下のことを確認しました

  • エラーが発生することなく生成されたバインディング ファイル
  • キュー マネージャーとキューのステータスは稼働中です。

websphereMQ にメッセージを入力しようとすると、以下のエラーが発生します

  • com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ 呼び出しが compcode '2' ('MQCC_FAILED') 理由 '2058' ('MQRC_Q_MGR_NAME_ERROR') で失敗しました

このエラーに関する宿題をしました。このエラーは、キュー マネージャーが使用できないために発生する可能性がありますが、QM が稼働していることがわかります。私はどこで間違っていますか?このエラーを解決して、Spring 機能を使用して webspherMQ にメッセージを正常に送信するにはどうすればよいですか?

テストクラス

public class JmsTransportWebServiceIntegrationTest {

 private static final String expectedResponseContent =  "<tns:placeOrderResponse xmlns:tns=\"http://www.packtpub.com/liverestaurant/OrderService/schema\"><tns:refNumber>order-xxxx_yyyy_1234</tns:refNumber></tns:placeOrderResponse>";

@Autowired
private WebServiceTemplate webServiceTemplate;


public void setWebServiceTemplate(WebServiceTemplate webServiceTemplate) {
    this.webServiceTemplate = webServiceTemplate;
}

@Test
public void testSendReceive() throws Exception {
    InputStream is = new JmsTransportWebServiceIntegrationTest().getClass().getResourceAsStream("placeOrderRequest.xml");
    StreamSource source = new StreamSource(is);
    StringResult result = new StringResult();
    webServiceTemplate.sendSourceAndReceiveToResult(source, result);
    XMLAssert.assertXMLEqual("Invalid content received", expectedResponseContent, result.toString());
}  }

applicationContext.xml

<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
 <property name="environment">
   <map>
     <entry key="java.naming.factory.initial" 
            value="com.sun.jndi.fscontext.RefFSContextFactory"/>     
          <entry key="java.naming.provider.url"  value="file:C:/JNDI-Directory" />
   </map>
 </property>
</bean>
<bean id="ibm-mq-jms-qcf" class= "org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiTemplate">
        <ref bean="jndiTemplate"/>
    </property>
    <property name="jndiName">
        <value>jms/mdpSampleQCF</value>
    </property>
</bean>

<!-- Bean for JMS Destination -->
<bean id="ibm-mq-queue" class= "org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiTemplate">
        <ref bean="jndiTemplate"/>
    </property>
    <property name="jndiName">
        <value>jms/mdpSampleQueue</value>
    </property>
</bean>
<bean id="listenerContainer" 
    class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="concurrentConsumers" value="1" />
    <property name="connectionFactory" ref="ibm-mq-jms-qcf" />
    <property name="destination" ref="ibm-mq-queue" />
    <property name="messageListener">
        <bean class="org.springframework.ws.transport.jms.WebServiceMessageListener">
            <property name="messageFactory" ref="messageFactory"/>
            <property name="messageReceiver" ref="messageDispatcher"/>
        </bean>
    </property>
</bean>
<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/>

<bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
    <constructor-arg ref="messageFactory"/>
    <property name="messageSender">
        <bean class="org.springframework.ws.transport.jms.JmsMessageSender">
            <property name="connectionFactory" ref="ibm-mq-jms-qcf"/>
        </bean>
    </property>
    <property name="defaultUri" value="jms:mdpSampleQueue?deliveryMode=NON_PERSISTENT"/>
</bean>

<bean id="messageDispatcher" class="org.springframework.ws.soap.server.SoapMessageDispatcher">
    <property name="endpointMappings">
        <bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping">
            <property name="defaultEndpoint">
                <bean class="com.packtpub.liverestaurant.service.endpoint.SimplePayloadEndpoint">
                <property name="orderService">
                 <bean class="com.packtpub.liverestaurant.service.OrderServiceImpl"/>
                </property>
                </bean>
            </property>
        </bean>
    </property>
</bean
4

1 に答える 1

0

これはかなり古い質問だと思いますが、私の答えが将来誰かに役立つかもしれません。

私は現在、WebSphere MQ 7.5 を使用しています。インストールには、いくつかの Java クラスもあります。私を大いに助けたものはMQIVP.java、私のインストールで呼び出されますc:\Program Files (x86)\IBM\WebSphere MQ\tools\wmqjava\samples。最初にこのクラスで設定をテストするのに非常に適しています。そのクラスのソースから、2058 が次の略であることがわかります。

理由: 2058 - キュー マネージャー名が無効であるか、不明です。

アクション: キュー・マネージャー名を修正して、再試行してください。キュー マネージャー名のプロンプトで Enter キーを押すだけで、デフォルトのキュー マネージャーに接続されます。

于 2014-01-17T13:04:56.750 に答える