Problema ao consumir um WebServices

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!

LeandroRodrigues,

tive um problema desses uma vez e descobri q era pq nao existe o método set da minha property, ou seja, na hora do parser que o server realiza ele soh identifica como property da sua classe se esta tiver os métodos get e set.

Porém como vi no seu código, existe os metodos get e set da tua lista

pergunta: no wsdl gerado aparece um trecho de bloco que é a identificação do objeto SoftwaresInventariadosEstacoes ? esse trecho é iniciado pela tag complexType…

se ele nao aparecer, tente fazer um teste q eh criar um método no ws que apenas retorna um objeto deste tipo e veja se aparece e depois veja se a lista desse objeto volta no seu objeto Computadores

[]'sss!!!

No wsdl do Computadores essa tag só aparece no inicio da classe dessa forma

/**
 * <p>Java class for computadores complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="computadores">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *       &lt;element name=... .... ....
 *       &lt;element name="listaSoftwares" type="{http://ws.cacic.remote.prodesan.com.br/}softwaresInventariadosEstacoes" maxOccurs="unbounded" minOccurs="0"/>
 *
 *
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */

E também percebi que o metodo setListaSoftwares não aparece no wsdl isso é normal?

tem apenas o:

    public List<SoftwaresInventariadosEstacoes> getListaSoftwares() {
        if (listaSoftwares == null) {
            listaSoftwares = new ArrayList<SoftwaresInventariadosEstacoes>();
        }
        return this.listaSoftwares;
    }

LeandroRodrigues,

este seu wsdl está estranho, pois deveria ter mais tags do tipo complexType descrevendo os seus objetos

acredito q independente da tecnologia que vc usa para desenvolver um ws, o produto final (WSDL) eh o mesmo, entao pelo q eu sei pra cada objeto que o seu ws retorna que nao seja primitivo, ele tem q declarar o conteúdo do mesmo nessas tags complexType, pois soh assim quem for consumí-lo poderá compreender o que existe dentro de cada objeto seu.

tente criar um novo objeto seu e criar o novo método no ws que retorne este objeto para ver c ele criará uma tag complexType descrevendo este seu novo objeto.

Um Objeto ele retorna por exemplo tem o ComputadorePK dentro te a chave node_address esse eu consigo pegar até agora isso só aconteceu com a lista.

a tag completa está assim:



/**
 * <p>Java class for computadores complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="computadores">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="computadoresPK" type="{http://ws.cacic.remote.prodesan.com.br/}computadoresPK" minOccurs="0"/>
 *         &lt;element name="dtHrColetaForcadaEstacao" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
 *         &lt;element name="dtHrInclusao" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
 *         &lt;element name="dtHrUltAcesso" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
 *         &lt;element name="idConta" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
 *         &lt;element name="idIpRede" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="listaSoftwares" type="{http://ws.cacic.remote.prodesan.com.br/}softwaresInventariadosEstacoes" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="qtMemRam" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
 *         &lt;element name="qtPlacaVideoCores" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
 *         &lt;element name="qtPlacaVideoMem" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
 *         &lt;element name="teBiosData" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teBiosDesc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teBiosFabricante" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teCdromDesc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teCpuDesc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teCpuFabricante" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teCpuFreq" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teCpuSerial" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teDnsPrimario" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teDnsSecundario" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teDominioDns" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teDominioWindows" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teGateway" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teIp" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teMascara" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teMemRamDesc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teModemDesc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teMouseDesc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teNomeComputador" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teNomeHost" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teNomesCurtosModulos" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teOrigemMac" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="tePlacaMaeDesc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="tePlacaMaeFabricante" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="tePlacaRedeDesc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="tePlacaSomDesc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="tePlacaVideoDesc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="tePlacaVideoResolucao" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teServDhcp" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teSo" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teTecladoDesc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teVersaoCacic" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teVersaoGercols" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teWinsPrimario" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teWinsSecundario" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="teWorkgroup" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "computadores", propOrder = {
    "computadoresPK",
    "dtHrColetaForcadaEstacao",
    "dtHrInclusao",
    "dtHrUltAcesso",
    "idConta",
    "idIpRede",
    "listaSoftwares",
    "qtMemRam",
    "qtPlacaVideoCores",
    "qtPlacaVideoMem",
    "teBiosData",
    "teBiosDesc",
    "teBiosFabricante",
    "teCdromDesc",
    "teCpuDesc",
    "teCpuFabricante",
    "teCpuFreq",
    "teCpuSerial",
    "teDnsPrimario",
    "teDnsSecundario",
    "teDominioDns",
    "teDominioWindows",
    "teGateway",
    "teIp",
    "teMascara",
    "teMemRamDesc",
    "teModemDesc",
    "teMouseDesc",
    "teNomeComputador",
    "teNomeHost",
    "teNomesCurtosModulos",
    "teOrigemMac",
    "tePlacaMaeDesc",
    "tePlacaMaeFabricante",
    "tePlacaRedeDesc",
    "tePlacaSomDesc",
    "tePlacaVideoDesc",
    "tePlacaVideoResolucao",
    "teServDhcp",
    "teSo",
    "teTecladoDesc",
    "teVersaoCacic",
    "teVersaoGercols",
    "teWinsPrimario",
    "teWinsSecundario",
    "teWorkgroup"
})
public class Computadores { ... ... ... ...