Pessoal,
Estou apanhando um pouco disso e já se esgotaram as idéias e pesquisas.
Não consigo acessar fazer o lookup do DataSource em um Stateless ou então acesso e me é exibido o erro: java.sql.SQLException: Table not found in statement [SELECT * FROM teste], consigo acessar por um servlet dentro do meu war mas no ejb não vai.
Segue os arquivos.
ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
version="2.1">
<display-name>j2eemodel-ti-ejb</display-name>
<enterprise-beans>
<session>
<display-name>Stateless</display-name>
<ejb-name>Stateless</ejb-name>
<local-home>j2eemodel.ti.ejb.LocalHome</local-home>
<local>j2eemodel.ti.ejb.Local</local>
<ejb-class>j2eemodel.ti.ejb.Bean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<resource-ref>
<res-ref-name>jdbc/j2eemodel-ds</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</session>
</enterprise-beans>
</ejb-jar>
jboss.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.2//EN" "http://www.jboss.org/j2ee/dtd/jboss_4_2.dtd">
<jboss>
<enterprise-beans>
<session>
<ejb-name>Stateless</ejb-name>
<local-jndi-name>j2eemodel/ti/stateless</local-jndi-name>
<resource-ref>
<res-ref-name>jdbc/j2eemodel-ds</res-ref-name>
<resource-name>java:comp/jdbc/j2eemodel-ds</resource-name>
</resource-ref>
</session>
</enterprise-beans>
</jboss>
Apesar de não utilizar cmp, coloquei para testes, mas não adiantou.
jbosscmp-jdbc.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jbosscmp-jdbc PUBLIC
"-//JBoss//DTD JBOSSCMP-JDBC 4.2//EN"
"http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_4_2.dtd">
<jbosscmp-jdbc>
<defaults>
<datasource>java:comp/jdbc/j2eemodel-ds</datasource>
</defaults>
</jbosscmp-jdbc>
Método do Bean que faz a invocação:
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx
.lookup("java:comp/env/jdbc/j2eemodel-ds");
Connection cnn = ds.getConnection();
Statement stmt = cnn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM teste");
while (rs.next())
System.out.println("<br />" + rs.getString(1));
rs.close();
stmt.close();
cnn.close();
} catch (Exception ex) {
ex.printStackTrace();
}
E o DataSource:
j2eemodel-ds.xml
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>jdbc/j2eemodel</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/j2eemodel</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>???</user-name>
<password>???</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
Valeu!!!