0

より大きなプロジェクトに必要な機能の小さな概念実証に苦労しています。

私のローカル マシンには、Wildfly 9 がインストールされています (ユーザー、パスワード、およびグループが構成されています)。小さな Java プログラムから HornetQ 経由でメッセージを送信できます<security-enabled>。ユーザー/パスワードをいじって、期待どおりに機能するかどうかを確認できます。すごい!

ただし、JMS アウトバウンド エンドポイントを介してメッセージを送信しようとする単純な Mule フローもありますが、これは常に「HQ119031: Unable to validate user: null」で失敗します。私は、(Javaプログラムから)動作しているとわかっているユーザー/パスワードをどこでどのように指定するかを単純に理解できません。

あまり情報を提供してくれなかった同僚から、彼はすでに MuleSoft のサポートと連絡を取り合っていることを知っています。彼らは、「彼らは Mule と組み合わせた Wildfly についての知識がなく」、助けることができなかったと言っています。

ここに私のコネクタとフローがあります:

<jms:connector name="Wildfly9JMSConnector"
    jndiInitialFactory="org.jboss.naming.remote.client.InitialContextFactory"
    jndiProviderUrl="http-remoting://127.0.0.1:8085"
    connectionFactoryJndiName="jms/RemoteConnectionFactor"
    jndiDestinations="true" forceJndiDestinations="true"
    disableTemporaryReplyToDestinations="true"
    username="inara"
    password="whitefall"
    doc:name="JMS" validateConnections="true">
</jms:connector>

<flow name="jbossconnectiontestFlow">
    <http:listener config-ref="HTTP_Listener_Configuration"
        path="/jbosstest" doc:name="HTTP" />

    <set-payload value="Shiny!" doc:name="Set Payload" />

    <logger message="1. payload: #[payload]" level="INFO" doc:name="Logger" />
    <jms:outbound-endpoint exchange-pattern="request-response" queue="jms/queue/CoordReceive" connector-ref="Wildfly9JMSConnector" doc:name="JMS">
        <jms:transaction action="BEGIN_OR_JOIN"/>
    </jms:outbound-endpoint>
    <set-payload value="JMS message sent." doc:name="Set Payload"/>
    <logger message="2. payload: #[payload]" level="INFO" doc:name="Logger"/>

    <catch-exception-strategy doc:name="Catch Emdxception Strategy">
        <logger level="INFO" doc:name="Logger" />
    </catch-exception-strategy>
</flow>

部分的なスタック トレース:

ERROR 2015-10-20 16:53:01,948 [main] org.mule.retry.notifiers.ConnectNotifier: Failed to connect/reconnect: JmsConnector
{
  name=Wildfly9JMSConnector
  lifecycle=initialise
  this=6540cf1d
  numberOfConcurrentTransactedReceivers=4
  createMultipleTransactedReceivers=true
  connected=false
  supportedProtocols=[jms]
  serviceOverrides=<none>
}
. Root Exception was: HQ119031: Unable to validate user: null. Type: class org.hornetq.api.core.HornetQSecurityException
ERROR 2015-10-20 16:53:01,956 [main] org.mule.module.launcher.application.DefaultMuleApplication: null
org.hornetq.api.core.HornetQSecurityException: HQ119031: Unable to validate user: null

より多くの情報、詳細が必要になると思いますが、間違ったデータであふれさせたくないので、尋ねてください。

更新:悲しいことに、@RyanCarter の提案は「それ」ではなかったか、おそらく「十分」ではありませんでした。「セキュリティ有効」を無効にすると、デプロイは成功しますが、メッセージを送信しようとすると失敗します。

スタック トレースの上部に「javax.jms.JMSException: There is no queue with name jms/queue/CoordReceive」が報告されます。私は現在、何が起こっているのかを把握しています.Javaプログラムが動作しているため、キューが存在することはわかっています. グーグルへ!

4

2 に答える 2

1

以下は、Jboss 7 以降で HornetQ で JNDI を使用するために以前に使用したアプローチです。ユーザー名とパスワードを 2 か所に設定します。1 つは JNDI 接続用、もう 1 つはキューレベル認証用

<spring:bean id="jndiProviderProperties" class="org.springframework.beans.factory.config.MapFactoryBean">
  <spring:property name="sourceMap">
      <spring:map>
        <spring:entry key="java.naming.security.principal" value="inara"/>
        <spring:entry key="java.naming.security.credentials" value="whitefall"/>
      </spring:map>
  </spring:property>
</spring:bean>

<jms:connector name="jms-connector" jndiInitialFactory="org.jboss.naming.remote.client.InitialContextFactory"
    jndiProviderUrl="remote://localhost:4447"
    connectionFactoryJndiName="jms/RemoteConnectionFactory" jndiDestinations="false"
    forceJndiDestinations="false" createMultipleTransactedReceivers="true" username="inara" password="whitefall"
    numberOfConcurrentTransactedReceivers="10" disableTemporaryReplyToDestinations="true" jndiProviderProperties-ref="jndiProviderProperties">
</jms:connector>
于 2015-10-20T16:22:06.463 に答える
0

あはは!C:\wildfly\domain\application-users.propertiesとのユーザー構成の間に不一致がありました (基本的には私の理解不足によるものです) C:\wildfly\standalone\configuration\application-users.properties。管理コンソール ( domain)キュー ( ) のユーザーを構成したらstandalone、稼働状態になりました。

于 2015-10-26T14:11:08.810 に答える