2

MuleStudio で、MongoDB データベースに保存してクエリを実行するいくつかのフローを作成しています。フローは、dbAdmin ロールと userAdmin ロールを持つ 1 人のユーザーがいて、そのユーザーの資格情報で構成されているデータベースを指している場合に正常に機能します。ただし、ユーザーが追加されていない別のデータベースを指すと、以下のエラーが発生します。ユーザー名とパスワードを Mule の MongoDB コネクタ構成に保持し、ドキュメントで提案されているダミー テキストとして保持し、それらを取り出しましたが、役に立ちませんでした。3.3.1 CE ランタイムを使用しています。

ダミーの認証情報を含むエラー メッセージ:

ERROR 2013-10-10 14:48:08,176 [[sso-mds].connector.http.mule.default.receiver.02] org.mule.retry.notifiers.ConnectNotifier: Failed to connect/reconnect: Work Descriptor. Root Exception was: Could not create a validated object, cause: Couldn't connect with the given credentials. Type: class java.util.NoSuchElementException
ERROR 2013-10-10 14:48:08,181 [[sso-mds].connector.http.mule.default.receiver.02] org.mule.exception.DefaultMessagingExceptionStrategy: 
********************************************************************************
Message               : Failed to invoke findObjectsUsingQueryMap. Message payload is of type: LinkedHashMap
Code                  : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:
1. Could not create a validated object, cause: Couldn't connect with the given credentials (java.util.NoSuchElementException)
  org.apache.commons.pool.impl.GenericKeyedObjectPool:1219 (null)
2. Failed to invoke findObjectsUsingQueryMap. Message payload is of type: LinkedHashMap (org.mule.api.MessagingException)
  org.mule.module.mongo.processors.FindObjectsUsingQueryMapMessageProcessor:177 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
java.util.NoSuchElementException: Could not create a validated object, cause: Couldn't connect with the given credentials
    at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1219)
    at org.mule.module.mongo.connectivity.MongoCloudConnectorConnectionManager.acquireConnection(MongoCloudConnectorConnectionManager.java:437)
    at org.mule.module.mongo.connectivity.MongoCloudConnectorConnectionManager.acquireConnection(MongoCloudConnectorConnectionManager.java:27)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)

認証情報がないエラー メッセージ:

ERROR 2013-10-10 14:19:48,572 [[sso-mds].connector.http.mule.default.receiver.02] org.mule.retry.notifiers.ConnectNotifier: Failed to connect/reconnect: Work Descriptor. Root Exception was: null. Type: class java.lang.NullPointerException
ERROR 2013-10-10 14:19:48,574 [[sso-mds].connector.http.mule.default.receiver.02] org.mule.exception.DefaultMessagingExceptionStrategy: 
********************************************************************************
Message               : Failed to invoke findObjectsUsingQueryMap. Message payload is of type: LinkedHashMap
Code                  : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:
1. null (java.lang.NullPointerException)
  org.mule.module.mongo.connectivity.MongoCloudConnectorConnectionKey:86 (null)
2. Failed to invoke findObjectsUsingQueryMap. Message payload is of type: LinkedHashMap (org.mule.api.MessagingException)
  org.mule.module.mongo.processors.FindObjectsUsingQueryMapMessageProcessor:177 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
java.lang.NullPointerException
    at org.mule.module.mongo.connectivity.MongoCloudConnectorConnectionKey.hashCode(MongoCloudConnectorConnectionKey.java:86)
    at java.util.HashMap.hash(Unknown Source)
    at java.util.HashMap.getEntry(Unknown Source)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)

ラバ構成:

<mongo:config name="Mongo_DB"  doc:name="Mongo DB" database="${mongo.db}" host="${mongo.host}" port="${mongo.port}" password="${db.password}" username="${db.username}>
    <mongo:connection-pooling-profile initialisationPolicy="INITIALISE_ONE" exhaustedAction="WHEN_EXHAUSTED_GROW"/>
</mongo:config>
<flow name="user_gets_simple" doc:name="user_gets_simple">
    <composite-source doc:name="Composite Source">
        <http:inbound-endpoint exchange-pattern="request-response" host="${my.host}" port="${my.ID}" path="user/getAll" doc:name="HTTP /user/getAll"/>
        <http:inbound-endpoint exchange-pattern="request-response" host="${my.host}" port="${my.ID}" path="user/getByUsername" doc:name="HTTP /user/getByUsername"/>
        <http:inbound-endpoint exchange-pattern="request-response" host="${my.host}" port="${my.ID}" path="user/getById" doc:name="HTTP /user/getById"/>
        <http:inbound-endpoint exchange-pattern="request-response" host="${my.host}" port="${my.ID}" path="user/getByEmail" doc:name="HTTP /user/getByEmail"/>
    </composite-source>
    <flow-ref name="get_from_MongoDB" doc:name="Get from MongoDB subflow"/>
</flow>

<flow name="user_save_flow" doc:name="user_save_flow">
    <http:inbound-endpoint exchange-pattern="request-response" host="${my.host}" port="${my.ID}" path="user/save" doc:name="HTTP /user/save" />
    <byte-array-to-string-transformer doc:name="Byte Array to String"/>
    <json:json-to-object-transformer doc:name="JSON to Object" returnClass="java.util.Map"/>
    <mongo:insert-object-from-map config-ref="Mongo_DB" collection="${mongo.collection}" doc:name="Insert in Mongo DB"  >
        <mongo:element-attributes>
            <mongo:element-attribute key="firstName">#[payload.firstName]</mongo:element-attribute>
            <mongo:element-attribute key="lastName">#[payload.lastName]</mongo:element-attribute>
            <mongo:element-attribute key="location">#[payload.location]</mongo:element-attribute>
        </mongo:element-attributes>
    </mongo:insert-object-from-map>
    <set-payload value="Saved successfully" doc:name="Set Payload"/>
</flow>

<sub-flow name="get_from_MongoDB" doc:name="get_from_MongoDB">
    <byte-array-to-string-transformer doc:name="Byte Array to String"/>
    <json:json-to-object-transformer returnClass="java.util.Map" doc:name="JSON to Object"/>
    <mongo:find-objects-using-query-map config-ref="Mongo_DB" collection="${mongo.collection}" doc:name="Find objects in Mongo DB" limit="5">
        <mongo:query-attributes ref="#[payload]"/>
    </mongo:find-objects-using-query-map>
    <mongo:mongo-collection-to-json doc:name="Mongo collection to JSON"/>
</sub-flow>

ユーザーを追加せずにこのデータベースに接続する方法について何か提案はありますか?

4

3 に答える 3

0

Mule ESB は認証なしでは機能しないため、これは問題です... ユーザーとパスワードのフィールドは「@optional」ではありません。

mongo でユーザーを作成し、認証モードで mongo を実行するため

http://www.mkyong.com/mongodb/mongodb-authentication-example/

そして、資格情報を Mule ESB に入力すると、準備完了です ....

于 2014-06-20T14:57:27.930 に答える