Estou desenvolvendo um WebService e estou tendo o seguinte problema:
Quando trago um Objeto por exemplo Computadores que tem um List listaDeSoftwares através do cliente que consome o WS, o objeto sempre vem populado mas a lista sempre vem vazia, isso só acontece quando acessado através do WS, mas se eu acesso ele de dentro do projeto aonde estão todas as anotações do WS, JPA etc. a lista de softwares vem preenchida
Já pesquisei no fórum, li a documentação livros… e ainda continuo no escuro, alguém já passou por isso?
Como faço para receber esse objeto do WS e com a lista preenchida?
Arquivo persistence.xml que uso quando estou dentro do projeto e a lista de softwares vem preenchida
<persistence-unit name="jprocacicPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.password" value="root"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/cacic"/>
</properties>
....
....
....
</persistence-unit>
Arquivo persistence.xml que uso quando acesso o projeto através do WS e a lista de softwares vem vazia
<persistence-unit name="jprocacicPU" transaction-type="JTA" >
<jta-data-source>java:/cacicDS</jta-data-source>
<properties>
<property name="hibernate.connection.datasource" value="java:/cacicDS"/>
<property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory"/>
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
</properties>
</persistence-unit>
....
....
....
....
O model Computadores reduzido
@Entity
@Table(name = "computadores")
@NamedQueries( {... ... ... ... })
public class Computadores implements Serializable {
@OneToMany(fetch = FetchType.EAGER, mappedBy="computadores")
@Fetch(FetchMode.JOIN)
private List<SoftwaresInventariadosEstacoes> listaSoftwares;
public List<SoftwaresInventariadosEstacoes> getListaSoftwares() {
return listaSoftwares;
}
public void setListaSoftwares(
List<SoftwaresInventariadosEstacoes> listaSoftwares) {
this.listaSoftwares = listaSoftwares;
}
}
WebService reduzido
@WebService
@Stateless
public class ComputadoresRemoteImpl implements ComputadoresRemote {
public ComputadoresRemoteImpl(){
JPAHelper.initEMF();
}
private static EntityManager em = null;
@WebMethod
public List<Computadores> getComputadoresByAll() {
List<Computadores> lista = null;
try {
em = JPAHelper.getEntityManager();
ComputadoresDAO dao = new ComputadoresDAO();
lista = dao.getAll();
return lista;
} catch (Exception e) {
e.printStackTrace();
}finally{
JPAHelper.closeEntityManager(em);
}
return lista;
}
}
Estou usando JPA, Seam com Jboss 4.2.2 e para gerar o wsdl para o cliente estou usando o wsconsume do jboss 4.2.1 porque me falaram que o wsconsume do 4.2.2 tem alguns bugs.
Agradeço antecipadamente a atenção de todos!