سؤال

يركض في مشكلة حيث لا تلتقط DataSources لدينا ل DBMS المختلفة (MS-SQLServer and Informix) تكوين مجال الأمان في ملف تسجيل الدخول-config.xml.

لدينا Datasources تبدو وكأنها هذه:

    <datasources>
      <local-tx-datasource>
        <jndi-name>ourTX</jndi-name>
        <connection-url>jdbc:informix-sqli://our.server.com:1526/wlms:informixserver=ol_db</connection-url>
        <driver-class>com.informix.jdbc.IfxDriver</driver-class>
        <security-domain>ourDS</security-domain>
        <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
        <metadata>
           <type-mapping>InformixDB</type-mapping>
        </metadata>
        <min-pool-size>5</min-pool-size>
        <max-pool-size>50</max-pool-size>
        <prefill>yes</prefill>
        <prepared-statement-cache-size>10</prepared-statement-cache-size>
        <idle-timeout-minutes>5</idle-timeout-minutes>
        <new-connection-sql>set lock mode to wait 4;set isolation to cursor stability;</new-connection-sql>
        <check-valid-connection-sql>SELECT count(*) FROM dummy;</check-valid-connection-sql>
      </local-tx-datasource>
    </datasources>

لدينا تسجيل الدخول-config.xml لدينا الإدخال التالي:

  <application-policy name="ourDS">
    <authentication>
      <login-module code="org.jboss.resource.security.SecureIdentityLoginModule" flag="required">
         <module-option name="userName">user</module-option>
         <module-option name="password">-4e5f8b6c4217c342c03b57ed16d31678</module-option>
         <module-option name="managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=ourTX</module-option>
      </login-module>
    </authentication>
  </application-policy>

ومع ذلك، بمجرد نشر خادم JBOSS، نحصل على خطأ مثل هذا بالنسبة إلى Informix:

13:23:13,521 WARN  [JBossManagedConnectionPool] Throwable while attempting to get a new connection: null
org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (java.sql.SQLException: Incorrect password or user com.informix.asf.IfxASFRemoteException: user@my.computer.com is not known on the database server.)

وللمستفادة MS-SQLSERVER، نحصل على خطأ مماثل في informix والتي تبدو وكأنها:

13:25:23,053 WARN  [JBossManagedConnectionPool] Throwable while attempting to get a new connection: null
org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user ''. The user is not associated with a trusted SQL Server connection.)

الآن إذا علمنا على عنصر مجال الأمن في ملف * -ds.xml واستبدله باستخدام اسم مستخدم بسيط وكلمة مرور نصية واضحة، يعمل كل من DataSource مع كلا من محركات قاعدة البيانات. نحن نستخدم تكوين الخادم "الكل" في JBOSS. لقد استنادنا إلى تحميل تسجيل الدخول-config.xml عند بدء التشغيل. و hqsqldb-ds.xml باستخدام عنصر مجال الأمن الأمن. ولكن باستخدام سياسة التطبيق المضافة لدينا إلى تسجيل الدخول-config.xml، يبدو أن DataSource لا يحصل على القيم عند إنشاء اتصال جديد.

أي أفكار ما نقوم به خطأ؟ هل فاتنا شيئا؟

هل كانت مفيدة؟

المحلول

كنا نختبر صحة DataSource من خلال وحدة التحكم المشرف. بسبب حيث كنا نختبر قاعدة البيانات، هذا هو الخطأ في إصدار JBOSS EAP 5.0.0.ga. في حين لم يتم تأكيد غير مؤكد، قد يكون أيضا علة في وحدة التحكم المشرف لمدة 5.0.1.ga وربما 5.0.2.ga.

كل شيء أعلاه كان يعمل بالفعل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top