Configurar data source no Jboss 5

Boa tarde galera.

Estou tendo dificuldades de configurar o Data source do mysql no Jboss 5.
Fiz tudo como diz o figurino, criei o arquivo abaixo na arquivo $JBOSS_HOME\server\default\deploy
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
  <local-tx-datasource>
    <jndi-name>DefaultDS</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/ejbdb</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>root</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>
  1. Criei um Bean que utiliza a tal conexao utilizando EJB 3
package com.ejb3inaction.actionbazaar.buslogic;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import javax.ejb.Stateless;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import com.ejb3inaction.actionbazaar.persistence.Bid;
import com.ejb3inaction.actionbazaar.persistence.Bidder;
import com.ejb3inaction.actionbazaar.persistence.Item;

@Stateless(name = "BidManager")
public class BidManagerBean implements BidManager {
	private Connection connection;

	@Resource(name = "jdbc/DefaultDS", mappedName = "java:/DefaulDS")
	private DataSource dataSource;

	@PostConstruct
	public void initialize() {
		try {
			//Context ctx = new InitialContext();
			//DataSource db = (DataSource)ctx.lookup("java:jdbc/ActionBazaarDS"); 
			connection = dataSource.getConnection();
		//} catch(NamingException ne){
		//	ne.printStackTrace();
		} catch (SQLException sqle) {
			sqle.printStackTrace();
		} 
	}

	public Long addBid(Bid bid) {
		Long bidId = getBidId();

		try {
			Statement statement = connection.createStatement();
			statement.execute("INSERT INTO BIDS(" + "BID_ID, " + "BIDDER_ID, "
					+ "ITEM_ID, " + "BID_PRICE" + ") VALUES(" + bidId + ", "
					+ "'" + bid.getBidder().getUserId() + "', "
					+ bid.getItem().getItemId() + ", " + bid.getBidPrice()
					+ ")");
		} catch (Exception sqle) {
			sqle.printStackTrace();
		}

		return bidId;
	}

	private Long getBidId() {
		Long bidId = 0L;

		try {
			Statement statement = connection.createStatement();
			ResultSet resultSet = statement
					.executeQuery("SELECT MAX(BID_ID) FROM BIDS");

			if (resultSet.next()) {
				bidId = resultSet.getLong(1);
			}

			resultSet.close();
		} catch (Exception sqle) {
			sqle.printStackTrace();
		}

		return bidId++;
	}

	public void cancelBid(Bid bid) {
		try {
			Statement statement = connection.createStatement();
			statement.execute("DELETE FROM BIDS WHERE BID_ID = "
					+ bid.getBidId());
		} catch (Exception sqle) {
			sqle.printStackTrace();
		}
	}

	public List<Bid> getBids(Item item) {
		List<Bid> bids = new ArrayList<Bid>();

		try {
			Statement statement = connection.createStatement();
			ResultSet resultSet = statement.executeQuery("SELECT " + "BID_ID, "
					+ "BIDDER_ID, " + "BID_PRICE, " + "BID_DATE "
					+ "FROM BIDS " + "WHERE ITEM_ID = " + item.getItemId());

			while (resultSet.next()) {
				Bid bid = new Bid();

				bid.setBidId(resultSet.getLong("BID_ID"));

				Bidder bidder = new Bidder();
				bidder.setUserId(resultSet.getString("BIDDER_ID"));
				bid.setBidder(bidder);

				bid.setItem(item);
				bid.setBidPrice(resultSet.getDouble("BID_PRICE"));
				bid.setBidDate(resultSet.getDate("BID_DATE"));

				bids.add(bid);
			}

			resultSet.close();
		} catch (Exception sqle) {
			sqle.printStackTrace();
		}

		return bids;
	}

	@PreDestroy
	public void cleanup() {
		try {
			connection.close();
			connection = null;
		} catch (SQLException sqle) {
			sqle.printStackTrace();
		}
	}
}

So que toda vez que eu tento acessar o bean, ou seja, alguma ação para as DI executarem eu obtenho o erro abaixo:

Exception in thread "main" javax.ejb.EJBException: java.lang.RuntimeException: Unable to inject jndi dependency: env/jdbc/DefaultDS into property com.ejb3inaction.actionbazaar.buslogic.BidManagerBean.dataSource: DefaulDS not bound
	at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:77)
	at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83)
	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:421)
	at org.jboss.ejb3.session.InvokableContextClassProxyHack._dynamicInvoke(InvokableContextClassProxyHack.java:53)
	at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:91)
	at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
	at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:891)
	at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:744)
	at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:697)
	at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:524)
	at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:232)
Caused by: java.lang.RuntimeException: Unable to inject jndi dependency: env/jdbc/DefaultDS into property com.ejb3inaction.actionbazaar.buslogic.BidManagerBean.dataSource: DefaulDS not bound
	at org.jboss.injection.JndiPropertyInjector.lookup(JndiPropertyInjector.java:82)
	at org.jboss.injection.JndiPropertyInjector.inject(JndiPropertyInjector.java:99)
	at org.jboss.injection.JndiPropertyInjector.inject(JndiPropertyInjector.java:89)
	at org.jboss.injection.JndiPropertyInjector.inject(JndiPropertyInjector.java:61)
	at org.jboss.ejb3.injection.InjectionInvocation.invokeTarget(InjectionInvocation.java:89)
	at org.jboss.ejb3.injection.InjectionInvocation.invokeNext(InjectionInvocation.java:83)
	at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
	at org.jboss.ejb3.injection.InjectionInvocation.invokeNext(InjectionInvocation.java:74)
	at org.jboss.ejb3.EJBContainer.injectBeanContext(EJBContainer.java:1086)
	at org.jboss.ejb3.pool.AbstractPool.create(AbstractPool.java:83)
	at org.jboss.ejb3.InfinitePool.get(InfinitePool.java:56)
	at org.jboss.ejb3.InfinitePool.get(InfinitePool.java:51)
	at org.jboss.ejb3.pool.ThreadlocalPool.create(ThreadlocalPool.java:53)
	at org.jboss.ejb3.pool.ThreadlocalPool.get(ThreadlocalPool.java:93)
	at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:58)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:421)
	at org.jboss.ejb3.session.InvokableContextClassProxyHack._dynamicInvoke(InvokableContextClassProxyHack.java:53)
	at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:91)
	at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
	at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:891)
	at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:744)
	at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:697)
	at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:524)
	at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:232)
	at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:211)
	at org.jboss.remoting.Client.invoke(Client.java:1724)
	at org.jboss.remoting.Client.invoke(Client.java:629)
	at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:60)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.security.client.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:65)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
	at $Proxy3.invoke(Unknown Source)
	at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
	at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
	at $Proxy2.addBid(Unknown Source)
	at com.ejb3inaction.actionbazaar.client.MainTest.main(MainTest.java:17)
	at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:72)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.security.client.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:65)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
	at $Proxy3.invoke(Unknown Source)
	at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
	at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
	at $Proxy2.addBid(Unknown Source)
	at com.ejb3inaction.actionbazaar.client.MainTest.main(MainTest.java:17)
Caused by: javax.naming.NamingException: Could not dereference object [Root exception is javax.naming.NameNotFoundException: DefaulDS not bound]
	at org.jnp.interfaces.NamingContext.resolveLink(NamingContext.java:1352)
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:817)
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686)
	at org.jboss.ejb3.JndiUtil.lookup(JndiUtil.java:44)
	at org.jboss.injection.JndiPropertyInjector.lookup(JndiPropertyInjector.java:75)
	at org.jboss.injection.JndiPropertyInjector.inject(JndiPropertyInjector.java:99)
	at org.jboss.injection.JndiPropertyInjector.inject(JndiPropertyInjector.java:89)
	at org.jboss.injection.JndiPropertyInjector.inject(JndiPropertyInjector.java:61)
	at org.jboss.ejb3.injection.InjectionInvocation.invokeTarget(InjectionInvocation.java:89)
	at org.jboss.ejb3.injection.InjectionInvocation.invokeNext(InjectionInvocation.java:83)
	at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
	at org.jboss.ejb3.injection.InjectionInvocation.invokeNext(InjectionInvocation.java:74)
	at org.jboss.ejb3.EJBContainer.injectBeanContext(EJBContainer.java:1086)
	at org.jboss.ejb3.pool.AbstractPool.create(AbstractPool.java:83)
	at org.jboss.ejb3.InfinitePool.get(InfinitePool.java:56)
	at org.jboss.ejb3.InfinitePool.get(InfinitePool.java:51)
	at org.jboss.ejb3.pool.ThreadlocalPool.create(ThreadlocalPool.java:53)
	at org.jboss.ejb3.pool.ThreadlocalPool.get(ThreadlocalPool.java:93)
	at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:58)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:421)
	at org.jboss.ejb3.session.InvokableContextClassProxyHack._dynamicInvoke(InvokableContextClassProxyHack.java:53)
	at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:91)
	at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
	at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:891)
	at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:744)
	at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:697)
	at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:524)
	at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:232)
Caused by: javax.naming.NameNotFoundException: DefaulDS not bound
	at org.jnp.server.NamingServer.getBinding(NamingServer.java:771)
	at org.jnp.server.NamingServer.getBinding(NamingServer.java:779)
	at org.jnp.server.NamingServer.getObject(NamingServer.java:785)
	at org.jnp.server.NamingServer.lookup(NamingServer.java:443)
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:726)
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686)
	at javax.naming.InitialContext.lookup(Unknown Source)
	at org.jnp.interfaces.NamingContext.resolveLink(NamingContext.java:1346)
	... 43 more

Então, gostaria que alguem pudesse me ajudar, pq estou tentando aprender EJB 3 mas encontrei essa barreira.
No livro que estou utilizando para aprender, ele não ensina a configurar isso.

Obrigado!

Parece que vc não criou o jboss-web.xml, criou?

Não criei, na verdade não sei como isso funciona, poderia me ajudar??

Onde crio ele?

Como crio?

E o que esse arquivo faz na aplicação?

Obrigado, mt obrigado

Posso tentar ajudar sim.
Arquivo jboss-web.xml utilizar no mesmo diretório do seu web.xml.

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 2.4//EN"
        "http://www.jboss.org/j2ee/dtd/jboss-web_4_0.dtd"&gt;
&lt;jboss-web&gt;
    &lt;resource-ref&gt;
      &lt;res-ref-name&gt;jdbc/default&lt;/res-ref-name&gt;
      &lt;jndi-name&gt;java:/jdbc/DefaultDS&lt;/jndi-name&gt;
    &lt;/resource-ref&gt;
&lt;/jboss-web&gt;

o seu datasource deixa assim:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;  
&lt;datasources&gt;  
  &lt;local-tx-datasource&gt;  
    &lt;jndi-name&gt;jdbc/DefaultDS&lt;/jndi-name&gt;  
    &lt;connection-url&gt;jdbc:mysql://localhost:3306/ejbdb&lt;/connection-url&gt;  
    &lt;driver-class&gt;com.mysql.jdbc.Driver&lt;/driver-class&gt;  
    &lt;user-name&gt;root&lt;/user-name&gt;  
    &lt;password&gt;&lt;/password&gt;  
    &lt;exception-sorter-class-name&gt;org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter&lt;/exception-sorter-class-name&gt;  
    &lt;metadata&gt;  
       &lt;type-mapping&gt;mySQL&lt;/type-mapping&gt;  
    &lt;/metadata&gt;  
  &lt;/local-tx-datasource&gt;  
&lt;/datasources&gt;  

Veja que o jndi-name do seu datasouce deve ser igual ao jndi-name do jboss-web.xml. É assim que a aplicação sabe qual datasouce deve procurar no servidor e o servidor sabe qual aplicação pertence a qual datasource.
Cria ele e faz um teste.

[quote=romarcio]Posso tentar ajudar sim.
Arquivo jboss-web.xml utilizar no mesmo diretório do seu web.xml.

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 2.4//EN"
        "http://www.jboss.org/j2ee/dtd/jboss-web_4_0.dtd"&gt;
&lt;jboss-web&gt;
    &lt;resource-ref&gt;
      &lt;res-ref-name&gt;jdbc/default&lt;/res-ref-name&gt;
      &lt;jndi-name&gt;java:/jdbc/DefaultDS&lt;/jndi-name&gt;
    &lt;/resource-ref&gt;
&lt;/jboss-web&gt;

o seu datasource deixa assim:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;  
&lt;datasources&gt;  
  &lt;local-tx-datasource&gt;  
    &lt;jndi-name&gt;jdbc/DefaultDS&lt;/jndi-name&gt;  
    &lt;connection-url&gt;jdbc:mysql://localhost:3306/ejbdb&lt;/connection-url&gt;  
    &lt;driver-class&gt;com.mysql.jdbc.Driver&lt;/driver-class&gt;  
    &lt;user-name&gt;root&lt;/user-name&gt;  
    &lt;password&gt;&lt;/password&gt;  
    &lt;exception-sorter-class-name&gt;org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter&lt;/exception-sorter-class-name&gt;  
    &lt;metadata&gt;  
       &lt;type-mapping&gt;mySQL&lt;/type-mapping&gt;  
    &lt;/metadata&gt;  
  &lt;/local-tx-datasource&gt;  
&lt;/datasources&gt;  

Veja que o jndi-name do seu datasouce deve ser igual ao jndi-name do jboss-web.xml. É assim que a aplicação sabe qual datasouce deve procurar no servidor e o servidor sabe qual aplicação pertence a qual datasource.
Cria ele e faz um teste.
[/quote]

Bom, mas se minha aplicação ainda nao é Web.
Na verdade eu criei um modulo ejb, e no mesmo projeto, em pacote diferentes, eu criei as classes de teste.
Então, onde eu crio o jboss-web.xml ??

De EJB eu não entendo, nunca utilizei EJB.

Mas se você está usando o JBoss, sua aplicação vai rodar nele, dai precisa dessa configuração. A não ser que para EJB não precise, mas dai não sei te informar.

Pelo jeito o Jndi Name do DataSource não foi publicado pelo servidor…

Ou você está fazendo a chamada a este recurso por outro nome.

Dá uma olhada nos logs como o JBoss publicou, qual o nome ele fez bound deste DataSource…

Pelo jeito o Jndi Name do DataSource não foi publicado pelo servidor…

Ou você está fazendo a chamada a este recurso por outro nome.

Pois o Resource name tá DefaultDS e o mappedName tá DefaulDS… tá faltando um “T”.

Dá uma olhada nos logs como o JBoss publicou, qual o nome ele fez bound deste DataSource…

[quote=joaosouza]Pelo jeito o Jndi Name do DataSource não foi publicado pelo servidor…

Ou você está fazendo a chamada a este recurso por outro nome.

Pois o Resource name tá DefaultDS e o mappedName tá DefaulDS… tá faltando um “T”.

Dá uma olhada nos logs como o JBoss publicou, qual o nome ele fez bound deste DataSource…
[/quote]

Era isso mesmo amigo. :smiley: :lol:

Obrigado! Obrigado a todos que ajudaram, pois aprendi a criar o xml acima q não sabia, e aprendi a usar a DI para resources.

Uma coisa, vc sabe como utilizar a anotação @EJB??
Quero tentar utilizar essa ideia aqui, em vez do context.lookup .

:oops: :shock:

Bom, na verdade nao funcionou. Funcionou para DefaultDS pq DefaultDS eh o nome do data source pre configurado do Hypersonic DB que já vem embutido no Jboss.
Estou tentando configurar o mysql, mas está dando erro ainda

obs: Criei o mysql-ds.xml dentro do deretorio deploy com o conteúdo:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
  <local-tx-datasource>
    <jndi-name>DefaultDS</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/ejbdb</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>root</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>

Erro:

Exception in thread "main" javax.ejb.EJBException: java.lang.RuntimeException: Unable to inject jndi dependency: env/jdbc/MySQLDS into property com.ejb3inaction.actionbazaar.buslogic.BidManagerBean.dataSource: MySQLDS not bound
	at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:77)
	at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83)
	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:421)
	at org.jboss.ejb3.session.InvokableContextClassProxyHack._dynamicInvoke(InvokableContextClassProxyHack.java:53)
	at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:91)
	at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
	at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:891)
	at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:744)
	at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:697)
	at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:524)
	at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:232)
Caused by: java.lang.RuntimeException: Unable to inject jndi dependency: env/jdbc/MySQLDS into property com.ejb3inaction.actionbazaar.buslogic.BidManagerBean.dataSource: MySQLDS not bound
	at org.jboss.injection.JndiPropertyInjector.lookup(JndiPropertyInjector.java:82)
	at org.jboss.injection.JndiPropertyInjector.inject(JndiPropertyInjector.java:99)
	at org.jboss.injection.JndiPropertyInjector.inject(JndiPropertyInjector.java:89)
	at org.jboss.injection.JndiPropertyInjector.inject(JndiPropertyInjector.java:61)
	at org.jboss.ejb3.injection.InjectionInvocation.invokeTarget(InjectionInvocation.java:89)
	at org.jboss.ejb3.injection.InjectionInvocation.invokeNext(InjectionInvocation.java:83)
	at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
	at org.jboss.ejb3.injection.InjectionInvocation.invokeNext(InjectionInvocation.java:74)

Passa o conteudo do arquivo mysql-ds.xml, em especifico o do DataSource MySQLDS…

Realmente o DefaultDS já é usado pelo JBoss…

Agora entendi o esquema do EJB, a anotação @Resource deve substituir o arquivo jboss-web.xml que me referi anteriormente.

Então como você setou o nome para MySQLDS, você deve mudar também no arquivo

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;datasources&gt; &lt;local-tx-datasource&gt; &lt;jndi-name&gt;MySQLDS&lt;/jndi-name&gt; ... &lt;/local-tx-datasource&gt; &lt;/datasources&gt;
Caso não funcione, coloque> &lt;jndi-name&gt;jdbc/MySQLDS&lt;/jndi-name&gt;

[quote=joaosouza]Passa o conteudo do arquivo mysql-ds.xml, em especifico o do DataSource MySQLDS…

Realmente o DefaultDS já é usado pelo JBoss…[/quote]

Opa olha só:

@Resource(name = &quot;jdbc/MySQLDS&quot;, mappedName = &quot;java:/MySQLDS&quot;)
private DataSource dataSource;

@PostConstruct
public void initialize() {
     try {
        connection = dataSource.getConnection();
     } catch (SQLException sqle) {
        sqle.printStackTrace();
     } 
}

Conteúdo do XML:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!-- $Id: mysql-ds.xml 41017 2006-02-07 14:26:14Z acoliver $ --&gt;
&lt;!--  Datasource config for MySQL using 3.0.9 available from:
http://www.mysql.com/downloads/api-jdbc-stable.html --&gt;
&lt;datasources&gt;
  &lt;local-tx-datasource&gt;
    &lt;jndi-name&gt;jdbc/MySQLDS&lt;/jndi-name&gt;
    &lt;connection-url&gt;jdbc:mysql://localhost:3306/ejbdb&lt;/connection-url&gt;
    &lt;driver-class&gt;com.mysql.jdbc.Driver&lt;/driver-class&gt;
    &lt;user-name&gt;root&lt;/user-name&gt;
    &lt;password&gt;&lt;/password&gt;
    &lt;exception-sorter-class-name&gt;org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter&lt;/exception-sorter-class-name&gt;
    &lt;metadata&gt;
       &lt;type-mapping&gt;mySQL&lt;/type-mapping&gt;
    &lt;/metadata&gt;
  &lt;/local-tx-datasource&gt;
&lt;/datasources&gt;

Acho que já descobri… vou testar aqui e vou postar.

SOLUÇÃO:

Seguinte, eu comi bola aqui, tinha dois jboss configurado na minha máquina. Um que eu achava que o eclipse tava utilizando e outro que o eclipse realmente estava atualziando :oops: .

Bom, quando descobri isso, fiz da seguinte forma.

  1. criei o mysql-ds.xml dentro de JBOSS_HOME\server\default\deploy com o seguinte contéudo:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
  <local-tx-datasource>
    <jndi-name>mysql</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/jboss</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>jboss</user-name>
    <password>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>
  1. Joguei o arquivo conector do mysql no diretorio JBOSS_HOME\server\default\lib

  2. Modifiquei a classe que acessa o datasource. conforme abaixo:

@Stateless(name = "BidManager")
public class BidManagerBean implements BidManager {
	private Connection connection;
	
	@Resource(name = "jdbc/mysql", mappedName = "java:/mysql")
	private DataSource dataSource;

	@PostConstruct
	public void initialize() {
		try {
			System.out.println("initialize");
			//Context ctx = new InitialContext();
			//DataSource db = (DataSource)ctx.lookup("java:jdbc/ActionBazaarDS"); 
			connection = dataSource.getConnection();
			//} catch(NamingException ne){
			//	ne.printStackTrace();
		} catch (SQLException sqle) {
			sqle.printStackTrace();
		} 
	}
}

Pronto, simples assim.

Espero que esse tópico possa ajudar alguém um dia porque penei 3 dias tentando funfar.

Obrigado a toda ajuda que me deram, foi de grande importancia para eu saber resolver o problema.

Att,
Alexandre Belem

Oi pessoal,

O post abaixo tenta explicar o conceito do lookup JNDI,
quando você deve usar o java:comp/env ou não,
e quando utilizar @Resource com name="…" ou com mappedName="…"

Espero ter ajudado.

http://resumotecnico.blogspot.com/2011/06/lookup-jndi-no-java-ee-6.html

Roger Camargo