Injeção de EntityManager em WebService

4 respostas
A

Boa tarte pessoal,

gostaria de uma ajuda, trabalho em uma aplicação que utiliza JBoss Seam 2.2.2 e estou tentando criar um webservice nela.

este é o código que tenho:

package sunseterp.webservices;
import javax.persistence.EntityManager;

import javax.ws.rs.GET;

import javax.ws.rs.Path;

import javax.ws.rs.PathParam;

import javax.ws.rs.Produces;

import javax.ws.rs.core.MediaType;
import org.jboss.seam.ScopeType;

import <a href="http://org.jboss.seam.annotations.In">org.jboss.seam.annotations.In</a>;

import <a href="http://org.jboss.seam.annotations.Name">org.jboss.seam.annotations.Name</a>;

import org.jboss.seam.annotations.Scope;

import sunseterp.entity.crm.customer.LocalCustomer;
import sunseterp.session.dao.crm.customer.LocalCustomerDao;

@Name(“myResource”)

@Scope(ScopeType.STATELESS)

<a class="mention" href="/u/path">@Path</a>("/ws")

public class MyResourceImpl {
@In
private EntityManager entityManager;

@GET
@Path("/customer/{customerId}")
@Produces({MediaType.APPLICATION_JSON})
public String getCustomer(@PathParam("customerId") int id) {
	LocalCustomer lc = LocalCustomerDao.find((long)id, entityManager);
	return lc.getCompanyName();
}

}

Meu problema é que o entityManager injetado sempre está null… não consigo injetá-lo para realizar a consulta.

Alguém poderia me dar uma ajuda

Desde já agradeço

4 Respostas

igomes

Entity Manager é um objeto complexo, vc criou ele da devida forma ?

A

Ele já está inserido no contexto do projeto… funciona em todas as outras partes do projeto onde é necessário, somente nesta classe não funciona…

meu arquivo persistence.xml

<?xml version="1.0" encoding="UTF-8"?> org.hibernate.ejb.HibernatePersistence java:/SunsetERPDatasource
A
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
             version="1.0">
             
   <persistence-unit name="SunsetERP" transaction-type="JTA">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jta-data-source>java:/SunsetERPDatasource</jta-data-source>
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
         <property name="hibernate.hbm2ddl.auto" value="update"/>
         <property name="hibernate.show_sql" value="false"/>
         <property name="hibernate.format_sql" value="true"/>
         <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
         <property name="connection.provider_class"  value="org.hibernate.connection.C3P0ConnectionProvider"/>         
         <property name="jboss.entity.manager.factory.jndi.name" value="java:/SunsetERPEntityManagerFactory"/>         
         <!-- <property name="hibernate.ejb.interceptor" value="sunseterp.utils.CustomNullsFirstInterceptor"/> -->
      </properties>
   </persistence-unit>
   
</persistence>

agora ficou melhor kkk

A

Alguém poderia me ajudar??

package sunseterp.session.webservices;

import javax.ws.rs.GET;

import javax.ws.rs.Path;

import javax.ws.rs.PathParam;

import javax.ws.rs.Produces;
@Path("/ws")
public interface MyResource {

	@GET
	@Path("/customer/{customerId}")
	@Produces("text/plain")
	public String getCustomer(@PathParam("customerId") int id);
	
}

package sunseterp.session.webservices;

import javax.persistence.EntityManager;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;

import sunseterp.entity.crm.customer.LocalCustomer;
import sunseterp.session.dao.crm.customer.LocalCustomerDao;

@Name("myResource")
@Scope(ScopeType.STATELESS)
public class MyResourceImpl implements MyResource {

	@In
	private EntityManager entityManager;
	
	public String getCustomer(int id) {
		LocalCustomer lc = LocalCustomerDao.find((long)id, entityManager);
		return lc.getName();
	}

}

o objeto entityManager está sempre nulo …

Alguém já passou por isso antes?? Pode me dar uma luz??

Grato

Criado 4 de fevereiro de 2016
Ultima resposta 11 de fev. de 2016
Respostas 4
Participantes 2