Ich habe Java-Code von jemand anderem geschrieben (lange weg, keine Möglichkeit, sie zu kontaktieren) auf einem JBoss-Server ausgeführt, die ich debuggen bin. Es ist ein javax.sql.DataSource
mit dieser Codezeile bekommen:Suchen wo die Datenquelle von InitialContext.lookup definiert ist?
DataSource ds = new InitialContext().lookup("java:/jdbc/WPDS");
Wenn sie jedoch ds.getConnection()
in der nächsten Zeile zu verwenden, zeigen diese in den Protokollen nach oben:
...
javax .resource.ResourceException: Kann nicht verwalteten Verbindung für jdbc bekommen/WPDS
...
verursacht durch: org.jboss.resource.JBossResourceException: Verbindung konnte nicht hergestellt werden; - verschachtelte throwable: (java.sql.SQLException: ORA-01017: ungültiger Benutzername/Passwort, verweigert -Anmeldung)
ich um haben gesucht und eine Datei gefunden namens oracle-xa-ds.xml
. Es enthält das:
<datasources>
<xa-datasource>
<jndi-name>jdbc/WPDS</jndi-name>
<!-- uncomment to enable interleaving <interleaving/> -->
<isSameRM-override-value>false</isSameRM-override-value>
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
<xa-datasource-property name="URL">jdbc:oracle:thin:@hostname.hidden.com:1621:HIDE</xa-datasource-property>
<xa-datasource-property name="User">hidden</xa-datasource-property>
<xa-datasource-property name="Password">hidden</xa-datasource-property>
<!-- Uses the pingDatabase method to check a connection is still valid before handing it out from the pool -->
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name>
<!-- Checks the Oracle error codes and messages for fatal errors -->
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<!-- Oracles XA datasource cannot reuse a connection outside a transaction once enlisted in a global transaction and vice-versa -->
<no-tx-separate-pools/>
<max-pool-size>50</max-pool-size>
<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</xa-datasource>
<mbean code="org.jboss.resource.adapter.jdbc.vendor.OracleXAExceptionFormatter"
name="jboss.jca:service=OracleXAExceptionFormatter">
<depends optional-attribute-name="TransactionManagerService">jboss:service=TransactionManager</depends>
</mbean>
</datasources>
Ich habe überprüft, dass alle diese Einstellungen richtig sind. Ich kann eine Verbindung zur Datenbank herstellen, indem ich den Hostnamen, den Port, die SID, den Benutzernamen und das Passwort verwende, die in dieser Datei angegeben sind.
Ich vermute, dass es vielleicht die von woanders lädt, aber ich weiß nicht, wie ich diese Theorie überprüfen könnte (und wenn es wahr ist, wie würde ich herausfinden, woher es tatsächlich kommt?) Gibt es einige Art der JNDI-Protokollierung kann ich aktivieren, oder vielleicht kann ich es irgendwie zu sagen, was Benutzername/Passwort es versucht zu verwenden (so kann ich sehen, ob es verwendet, was in der Datei ist oder nicht?)
Überprüfen Sie die [Management Console] (https://access.redhat.com/documentation/en-US/Red_Hat_JBoss_Data_Virtualization/6/html/Administration_and_Configuration_Guide/chap-JDBC_Data_Sources.html#Create_an_XA_Datasource_with_the_Management_Interfaces). –
@EliottFrisch - Es zeigt eine Datenquelle namens 'jdbc/WPDS' mit dem Typ' XA Datasource' und dem Status 'UP'. Ich kann überprüfen, dass es von dieser Datei lädt, weil es anfänglich sagte, dass "Verfügbare Verbindungsanzahl" 50 war (wie es in der Datei in meinem ursprünglichen Post ist), und wenn ich die Datei änderte, um 60 zu haben, und den Server neu startete folgte entsprechend. – ArtOfWarfare
@ravthiru - Ich bin nicht vertraut mit dem, worüber du gerade sprichst ... willst du es erklären? Was ist der Sicherheitskontext? Wie kann ich herausfinden, welchen Benutzernamen/welches Passwort er verwendet und wie kann ich ihn ändern? – ArtOfWarfare