[Erro] Quando tento integrar JPA, EJB e DataSource

Fala pessoal tudo bom?

Estou com o seguinteproblema , eu tenho um módulo ejb que eu queria fazer um crud,
Porem utilizando um DataSource e o EntityManager junto com JPA

Comecei adesenvolver a aplicação desde modo:

InterfaceLocal e Implementação

[code]package br.com.crud.service;

import javax.ejb.Local;

import br.com.crud.model.Employee;

/**

  • @author Gabriel Castilho

*/
@Local
public interface EmployeeServiceLocal {

public void change(Employee e);

public void delete(Employee e);

public void save(Employee e);

}
[/code]

[code]package br.com.crud.service;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import br.com.crud.model.Employee;

/**

  • @author Gabriel Castilho
    */

@Stateless
public class EmployeeServiceLocalImpl implements EmployeeServiceLocal{

@PersistenceContext
private EntityManager em;

public void change(Employee e){
		
}
public void delete(Employee e){
	
}
public void save(Employee e){

}

}
[/code]

Eu tenho um persistence.xml, MySQL-ds.xml no ejbModule

MySQL-ds.xml

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

persistence.xml

<?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="myPersistence"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/learning" /> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> <property name="hibernate.connection.password" value="root" /> <property name="hibernate.connection.username" value="root" /> <property name="hibernate.hbm2ddl.auto" value="create-drop" /> </properties> </persistence-unit> </persistence>

My POJO:

[code]package br.com.crud.model;

import javax.persistence.Entity;
import javax.persistence.Id;

/**

  • @author Gabriel Castilho

*/
@Entity
public class Employee {

@Id
private Long id;

private String name;

private String mail;


// Getters and Setters

}[/code]

Me vem a seguinte mensagem quando eu subo o ejb.

ObjectName: jboss.j2ee:service=EJB3,module=crud-ejb.jar State: FAILED Reason: java.lang.RuntimeException: Illegal @PersistenceUnit on private javax.persistence.EntityManager br.com.crud.service.EmployeeServiceLocalImpl.em :There is no default persistence unit in this deployment.

Por favor alguem pode me ajudar?

Obrigado

Isso aqui não te diz algo?

:wink:

Abraços…

Não sou muito bom em EJBS mas acho que está faltando isso.

Espero ter ajudado.

[quote=breno500as]Isso aqui não te diz algo?

:wink:

Abraços…
[/quote]

Valeu Pessoal

:smiley:

Meu EJB agora não está subindo estranho… vou dar uma olhada

Qual erro está dando agora?

Abraços…

Mudei o persistence.xml para isto:

<?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="myPersistence"> <jta-data-source>mysqlDS</jta-data-source> </persistence-unit> </persistence>

agora estoou tentando pegar o EntityManager com

@PersistenceContext(unitName="myPersistence") private EntityManager entityManager;

e no final das contas o final do log do jboss é:

[code]19:54:29,614 ERROR [URLDeploymentScanner] Incomplete Deployment listing:

— MBeans waiting for other MBeans —
ObjectName: jboss.j2ee:jar=crud-ejb.jar,name=EmployeeServiceLocalImpl,service=EJB3
State: NOTYETINSTALLED
I Depend On:
persistence.units:unitName=myPersistence

— MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM —
ObjectName: persistence.units:unitName=myPersistence
State: NOTYETINSTALLED
Depends On Me:
jboss.j2ee:jar=crud-ejb.jar,name=EmployeeServiceLocalImpl,service=EJB3
[/code]

e o ejb não sobe =/

pode dar um help?

Tem como vc postar a log inteira do erro ?

Abraços…

[code]19:54:07,433 INFO [Server] Starting JBoss (MX MicroKernel)…
19:54:07,435 INFO [Server] Release ID: JBoss [Trinity] 4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)
19:54:07,437 INFO [Server] Home Dir: C:\jboss-4.2.3.GA
19:54:07,437 INFO [Server] Home URL: file:/C:/jboss-4.2.3.GA/
19:54:07,444 INFO [Server] Patch URL: null
19:54:07,444 INFO [Server] Server Name: default
19:54:07,444 INFO [Server] Server Home Dir: C:\jboss-4.2.3.GA\server\default
19:54:07,444 INFO [Server] Server Home URL: file:/C:/jboss-4.2.3.GA/server/default/
19:54:07,503 INFO [Server] Server Log Dir: C:\jboss-4.2.3.GA\server\default\log
19:54:07,503 INFO [Server] Server Temp Dir: C:\jboss-4.2.3.GA\server\default\tmp
19:54:07,504 INFO [Server] Root Deployment Filename: jboss-service.xml
19:54:07,894 INFO [ServerInfo] Java version: 1.6.0_18,Sun Microsystems Inc.
19:54:07,894 INFO [ServerInfo] Java VM: Java HotSpot™ Client VM 16.0-b13,Sun Microsystems Inc.
19:54:07,894 INFO [ServerInfo] OS-System: Windows Vista 6.0,x86
19:54:08,559 INFO [Server] Core system initialized
19:54:10,694 INFO [WebService] Using RMI server codebase: http://localhost:8083/
19:54:10,697 INFO [Log4jService$URLWatchTimerTask] Configuring from URL: resource:jboss-log4j.xml
19:54:11,184 INFO [TransactionManagerService] JBossTS Transaction Service (JTA version) - JBoss Inc.
19:54:11,184 INFO [TransactionManagerService] Setting up property manager MBean and JMX layer
19:54:11,599 INFO [TransactionManagerService] Starting recovery manager
19:54:11,722 INFO [TransactionManagerService] Recovery manager started
19:54:11,722 INFO [TransactionManagerService] Binding TransactionManager JNDI Reference
19:54:14,122 INFO [EJB3Deployer] Starting java:comp multiplexer
19:54:16,810 INFO [NativeServerConfig] JBoss Web Services - Native
19:54:16,811 INFO [NativeServerConfig] jbossws-3.0.1-native-2.0.4.GA (build=200803312044)
19:54:17,720 INFO [Embedded] Catalina naming disabled
19:54:17,927 INFO [AprLifecycleListener] The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;native
19:54:18,006 INFO [Http11Protocol] Initializing Coyote HTTP/1.1 on http-localhost%2F127.0.0.1-8080
19:54:18,007 INFO [AjpProtocol] Initializing Coyote AJP/1.3 on ajp-localhost%2F127.0.0.1-8009
19:54:18,008 INFO [Catalina] Initialization processed in 286 ms
19:54:18,011 INFO [StandardService] Starting service jboss.web
19:54:18,014 INFO [StandardEngine] Starting Servlet Engine: JBossWeb/2.0.1.GA
19:54:18,074 INFO [Catalina] Server startup in 66 ms
19:54:18,222 INFO [TomcatDeployer] deploy, ctxPath=/, warUrl=…/deploy/jboss-web.deployer/ROOT.war/
19:54:19,111 INFO [TomcatDeployer] deploy, ctxPath=/invoker, warUrl=…/deploy/http-invoker.sar/invoker.war/
19:54:19,290 INFO [TomcatDeployer] deploy, ctxPath=/jbossws, warUrl=…/deploy/jbossws.sar/jbossws-context.war/
19:54:19,398 INFO [TomcatDeployer] deploy, ctxPath=/jbossmq-httpil, warUrl=…/deploy/jms/jbossmq-httpil.sar/jbossmq-httpil.war/
19:54:20,095 INFO [TomcatDeployer] deploy, ctxPath=/web-console, warUrl=…/deploy/management/console-mgr.sar/web-console.war/
19:54:20,572 INFO [MailService] Mail Service bound to java:/Mail
19:54:20,969 INFO [RARDeployment] Required license terms exist, view META-INF/ra.xml in …/deploy/jboss-ha-local-jdbc.rar
19:54:21,007 INFO [RARDeployment] Required license terms exist, view META-INF/ra.xml in …/deploy/jboss-ha-xa-jdbc.rar
19:54:21,042 INFO [RARDeployment] Required license terms exist, view META-INF/ra.xml in …/deploy/jboss-local-jdbc.rar
19:54:21,074 INFO [RARDeployment] Required license terms exist, view META-INF/ra.xml in …/deploy/jboss-xa-jdbc.rar
19:54:21,157 INFO [RARDeployment] Required license terms exist, view META-INF/ra.xml in …/deploy/jms/jms-ra.rar
19:54:21,212 INFO [RARDeployment] Required license terms exist, view META-INF/ra.xml in …/deploy/mail-ra.rar
19:54:21,263 INFO [RARDeployment] Required license terms exist, view META-INF/ra.xml in …/deploy/quartz-ra.rar
19:54:21,276 INFO [QuartzResourceAdapter] start quartz!!!
19:54:21,375 INFO [SimpleThreadPool] Job execution threads will use class loader of thread: main
19:54:21,404 INFO [QuartzScheduler] Quartz Scheduler v.1.5.2 created.
19:54:21,407 INFO [RAMJobStore] RAMJobStore initialized.
19:54:21,407 INFO [StdSchedulerFactory] Quartz scheduler ‘DefaultQuartzScheduler’ initialized from default resource file in Quartz package: 'quartz.properties’
19:54:21,407 INFO [StdSchedulerFactory] Quartz scheduler version: 1.5.2
19:54:21,407 INFO [QuartzScheduler] Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
19:54:22,944 INFO [ConnectionFactoryBindingService] Bound ConnectionManager ‘jboss.jca:service=DataSourceBinding,name=DefaultDS’ to JNDI name 'java:DefaultDS’
19:54:23,260 INFO [A] Bound to JNDI name: queue/A
19:54:23,263 INFO [B] Bound to JNDI name: queue/B
19:54:23,266 INFO [C] Bound to JNDI name: queue/C
19:54:23,268 INFO [D] Bound to JNDI name: queue/D
19:54:23,270 INFO [ex] Bound to JNDI name: queue/ex
19:54:23,288 INFO [testTopic] Bound to JNDI name: topic/testTopic
19:54:23,291 INFO [securedTopic] Bound to JNDI name: topic/securedTopic
19:54:23,293 INFO [testDurableTopic] Bound to JNDI name: topic/testDurableTopic
19:54:23,297 INFO [testQueue] Bound to JNDI name: queue/testQueue
19:54:23,343 INFO [UILServerILService] JBossMQ UIL service available at : localhost/127.0.0.1:8093
19:54:23,394 INFO [DLQ] Bound to JNDI name: queue/DLQ
19:54:23,538 INFO [ConnectionFactoryBindingService] Bound ConnectionManager ‘jboss.jca:service=ConnectionFactoryBinding,name=JmsXA’ to JNDI name 'java:JmsXA’
19:54:23,569 INFO [TomcatDeployer] deploy, ctxPath=/jmx-console, warUrl=…/deploy/jmx-console.war/
19:54:23,767 INFO [Http11Protocol] Starting Coyote HTTP/1.1 on http-localhost%2F127.0.0.1-8080
19:54:23,786 INFO [AjpProtocol] Starting Coyote AJP/1.3 on ajp-localhost%2F127.0.0.1-8009
19:54:23,795 INFO [Server] JBoss (MX MicroKernel) [4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)] Started in 16s:289ms
19:54:29,067 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
19:54:29,077 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:jar=EJBinAction.jar,name=HelloUserBean,service=EJB3 with dependencies:
19:54:29,114 INFO [EJBContainer] STARTED EJB: ejb3inaction.example.HelloUserBean ejbName: HelloUserBean
19:54:29,151 INFO [EJB3Deployer] Deployed: file:/C:/Users/Gabriel Castilho/workspace/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_4.2_Runtime_Server/deploy/EJBinAction.jar/
19:54:29,283 INFO [ConnectionFactoryBindingService] Bound ConnectionManager ‘jboss.jca:service=DataSourceBinding,name=mysqlDS’ to JNDI name 'java:mysqlDS’
19:54:29,323 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
19:54:29,323 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:jar=crud-ejb.jar,name=EmployeeServiceLocalImpl,service=EJB3 with dependencies:
19:54:29,324 INFO [JmxKernelAbstraction] persistence.units:unitName=myPersistence
19:54:29,326 INFO [EJB3Deployer] Deployed: file:/C:/Users/Gabriel Castilho/workspace/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_4.2_Runtime_Server/deploy/crud-ejb.jar/
19:54:29,346 INFO [TomcatDeployer] deploy, ctxPath=/EJBinActionTeste, warUrl=file:/C:/Users/Gabriel Castilho/workspace/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_4.2_Runtime_Server/deploy/EJBinActionTeste.war/
19:54:29,520 INFO [TomcatDeployer] deploy, ctxPath=/crud-webclient, warUrl=file:/C:/Users/Gabriel Castilho/workspace/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_4.2_Runtime_Server/deploy/crud-webclient.war/
19:54:29,614 ERROR [URLDeploymentScanner] Incomplete Deployment listing:

— MBeans waiting for other MBeans —
ObjectName: jboss.j2ee:jar=crud-ejb.jar,name=EmployeeServiceLocalImpl,service=EJB3
State: NOTYETINSTALLED
I Depend On:
persistence.units:unitName=myPersistence

— MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM —
ObjectName: persistence.units:unitName=myPersistence
State: NOTYETINSTALLED
Depends On Me:
jboss.j2ee:jar=crud-ejb.jar,name=EmployeeServiceLocalImpl,service=EJB3[/code]

no global naming o ejb não sobe. =/

Vou fazer duas perguntas bobas mas não custa conferir:

1 - Seu arquivo MySQL-ds.xml está no diretório /server/default/deploy do seu jboss ?
2 - Seu driver de comunicação com o banco de dados(mysql-connector.jar) está no diretório /server/default/lib ?

Abraços…

Está tudo no meu projeto dentro do eclipse o MySQL-ds na raiz, e o jar no classpath.

Está tudo no meu projeto dentro do eclipse o MySQL-ds na raiz, e o jar no classpath.

Então faz um teste colocando estes artefatos nos diretórios que te falei para ver se continua com o mesmo erro ou não…

Abraços…

mesmo erro =/

Bom, vc vai ter que ir fazendo mais testes,erros assim são meio chatos de encontrar…

Lá no seu persistence.xml altere a tag:

para:

vou fazendo uns testes aqui.

Sò que pintou uma duvida o @PersistenceContext no código que tem nesse tópico:

http://www.guj.com.br/posts/list/75823.java

E os outros que ja vi não configuram nenhum atributo e funcionanm por que devo configurar?

E em que momento eu mapeio minha classe?

Abraço.

A anotação @PersistenceContext não necessita de ter um atributo unitName desde que exista apenas uma unidade de persistência no persistence.xml … Por isso acho que vc tbm deve dar uma conferida no build do seu ejb.jar para ver se não esta fazendo mais de uma vez, limpar arquivos temp no container e faça tbm a alteração que eu falei na tag …