O cliente EJB Glassfish v3.1.2 transmitido para o bean de session é sempre nulo

Eu estou tendo um problema ao chamar parâmetros de método de passagem de método de bean de session do cliente

aplicação, os dados atingem a chamada do método é sempre nulo ou definido para o valor padrão.

enquanto o processo do método funciona bem com o object

por exemplo:

-temos o método para persistir uma entidade de object addStudent (Student Student); – do cliente criamos o object aluno configurando campos do aluno como nome do aluno e assim por diante, chamando o método addStudent (ourStudent); este ourStudent atinge o método com campos de valor nulo ou padrão. o aluno é adicionado com esses campos vazios.

Desde já, obrigado.

Você está usando o EclipseLink com tecelagem e não funciona. Você deveria tentar sem tecer. Provavelmente editando seu persistence.xml (s)

  XXX Or List of Classes or something else  [other properties]    

Atualização: Existem várias maneiras alternativas pelas quais uma implementação de JPA poderia lidar com entidades, esta é uma lista não exaustiva:

  • Extensão (é assim que a especificação do JPA requer um nenhum construtor padrão privado para entidades)
  • Invólucro
  • Manipulação de código de byte da class (para torná-lo em conformidade com a forma como o EclipseLink “quer” que seja)
  • Thingie de proxy ThreadLocal
  • Reflexão básica usando as propriedades
  • Reflexão básica usando os setters getters (se houver algum)

O EclipseLink chama a injeção de código de byte “Weaving” ( O que é Java bytecode injection? ) A tecelagem dinâmica está fazendo a tecelagem em “runtime” – basicamente quando a class é carregada por um carregador de classs. A tecelagem estática está fazendo a tecelagem antes da implantação, mas depois da compilation. Para o EclipseLink, o tecelagem é o método mais rápido de desempenho, também é o método preferido por outras razões. Infelizmente é muitas vezes um pouco complicado para começar a tecer para o trabalho. É totalmente possível que nada disso importe para o seu projeto, não para muitos projetos típicos.

Se houver clientes que acessem beans por meio de uma interface remota, e houver entidades passadas como argumentos ou retornarem valor por meio dessa conexão, a tecelagem dinâmica não funcionará. Na maioria dos cenários de produção, especialmente se o aplicativo / produto não é muito pequeno, a tecelagem estática é preferida à tecelagem dinâmica de qualquer maneira … Para ler mais sobre tecelagem estática vs dinâmica e como configurá-lo, eu realmente não encontrei nenhuma fonte excelente, mas este é pelo menos semi oficial: Using_EclipseLink_JPA_Weaving

O que estava acontecendo com você era que a entidade foi tecida em uma extremidade e não tecida na outra -> absolutamente não pode funcionar.

A boa notícia é que você provavelmente não precisa se preocupar com nada dessa coisa de tecelagem, ou talvez você. Quando você desabilitou a tecelagem, o EclipseLink retornou a outro método para manipular as entidades JPA. Existem algumas funções que o EclipseLink suporta apenas se a tecelagem estiver ativada (no entanto, nenhum JPA é necessário).

De: What_You_May_Need_to_Know_About_Weaving_JPA_Entities Vem uma lista de coisas que o EclipseLink usa explicitamente para tecer:

  • carregamento lento (indireção)
  • rastreamento de mudança
  • buscar grupos
  • otimizações internas

(Para alguns deles há fallbacks para outros methods se a tecelagem estiver desativada, eu acho que todos, exceto “otimizações internas”)