[jboss-jira] [JBoss JIRA] (WFLY-9585) Wildfly 10 ignores jboss-ejb3.xml resource-ref lookup-name
Shing Lam (JIRA)
issues at jboss.org
Tue Dec 12 03:14:00 EST 2017
[ https://issues.jboss.org/browse/WFLY-9585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13504245#comment-13504245 ]
Shing Lam edited comment on WFLY-9585 at 12/12/17 3:13 AM:
-----------------------------------------------------------
I have trimmed down the essential minimum of our project to illustrate the issue. Please use the ear (27 kB) and source code (jboss-lookup.zip 41 kB), the older ones are obsolete.
we have a datasource to standalone.xml
{code:xml}
<datasource jta="true" jndi-name="java:jboss/jdbc/RMDataSource" pool-name="RMDataSource" enabled="true" use-ccm="false">
<connection-url>jdbc:mysql://host:3306/schema?useUnicode=true&amp;characterEncoding=utf8</connection-url>
<driver>com.mysql</driver>
<security>
<security-domain>encrypted-mysqlds-rm_uat</security-domain>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
{code}
If you deploy the ear to Wildfly-10, and point the broswer to http://localhost:8080/lookup/, and click the "get Connection Class", you'll see "com.mysql.jdbc.JDBC4Connection".
For Wildfly-10.1,if the default datasource is set to java:jboss/jdbc/RMDataSource, you'll get com.mysql.jdbc.JDBC4Connection.
{code:xml}
<default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/jdbc/RMDataSource" jms-connection-factory="java:/JmsXA" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
{code}
if default datasource is set to java:jboss/datasources/ExampleDS, you'll get org.h2.jdbc.JdbcConnection.
standalone.xml
{code:xml}
<default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" jms-connection-factory="java:/JmsXA" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
{code}
In JBoss EAP 6.4, you always get com.mysql.jdbc.JDBC4Connection.
was (Author: lam_shing):
I have trimmed down the essential minimum of our project to illustrate the issue. Please use the ear (27 kB) and source code (jboss-lookup.zip 41 kB), the older ones are obsolete.
we have a datasource to standalone.xml
{{ <datasource jta="true" jndi-name="java:jboss/jdbc/RMDataSource" pool-name="RMDataSource" enabled="true" use-ccm="false">
<connection-url>jdbc:mysql://host:3306/schema?useUnicode=true&amp;characterEncoding=utf8</connection-url>
<driver>com.mysql</driver>
<security>
<security-domain>encrypted-mysqlds-rm_uat</security-domain>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>}}
If you deploy the ear to Wildfly-10, and point the broswer to http://localhost:8080/lookup/, and click the "get Connection Class", you'll see "com.mysql.jdbc.JDBC4Connection".
For Wildfly-10.1,if the default datasource is set to java:jboss/jdbc/RMDataSource, you'll get com.mysql.jdbc.JDBC4Connection.
<default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/jdbc/RMDataSource" jms-connection-factory="java:/JmsXA" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
if default datasource is set to java:jboss/datasources/ExampleDS, you'll get org.h2.jdbc.JdbcConnection.
standalone.xml
{{ <default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" jms-connection-factory="java:/JmsXA" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>}}
In JBoss EAP 6.4, you always get com.mysql.jdbc.JDBC4Connection.
> Wildfly 10 ignores jboss-ejb3.xml resource-ref lookup-name
> ----------------------------------------------------------
>
> Key: WFLY-9585
> URL: https://issues.jboss.org/browse/WFLY-9585
> Project: WildFly
> Issue Type: Bug
> Components: EJB
> Affects Versions: 10.1.0.Final
> Environment: Wilfly-10.1.0.Final with jdk-1.8.0_31 under Red Hat Enterprise Linux Server release 5.11 (Tikanga)
> Reporter: Shing Lam
> Assignee: Tomasz Adamski
> Labels: Wildfly-10.0.0.Final, datasource, default, jboss-ejb3.xml, lookup-name, resource-ref
> Attachments: jBossLookup-ear-0.0.1-SNAPSHOT.ear, jBossLookup-ear-0.0.1-SNAPSHOT.ear, jBosslookup.zip, jboss-lookup.zip
>
>
> We have a ear that use a datasource that is injected. The application runs normally in Jboss EAP 6.4, with the correct datasource being used. But when deployed to Wildfly-10.1.0_Final, instead of the datasource specified in the jboss-ejb3.xml, the default datasource is alway injected.
> We have in the ejb-jar.xml
> {code:xml}
> <enterprise-beans>
> <session>
> <ejb-name>BackgroundRecoverySessionEJB</ejb-name>
> <resource-ref>
> <res-ref-name>jdbc/RMDataSource</res-ref-name>
> <res-type>javax.sql.DataSource</res-type>
> <res-auth>Container</res-auth>
> </resource-ref>
> <persistence-context-ref>
> <persistence-context-ref-name>persistence/RMEntityManager</persistence-context-ref-name>
> </persistence-context-ref>
> </session>
> {code}
> and in jboss-ejb3.xml
> {code:xml}
> <jboss:enterprise-beans>
> <jboss:ejb>
> <ejb-name>BackgroundRecoverySessionEJB</ejb-name>
> <resource-ref>
> <res-ref-name>jdbc/RMDataSource</res-ref-name>
> <res-type>javax.sql.DataSource</res-type>
> <lookup-name>java:jboss/jdbc/RMDataSource</lookup-name>
> </resource-ref>
> </jboss:ejb>
> {code}
> the datasource java:jboss/jdbc/RMDataSource got injected into the EJB under JBoss EAP 6.4.
> But in WildFly 10.1, the default datasource java:jboss/datasources/ExampleDS was injected, causing "org.h2.jdbc.JdbcSQLException: Table "XXX" not found;"
> If we set the default datasource to java:jboss/jdbc/RMDataSource, java:jboss/jdbc/RMDataSource jot injected into the EJB.
> Seems like the jboss-ejb3.xml has no effect on WildFly 10.1, the default datasource is always used.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
More information about the jboss-jira
mailing list