Serialization EJB。当我使用var List调用会话Bean时抛出:this javax.ejb.EJBException:java.rmi.marshallexception

Serialization EJB。当我使用var List调用会话Bean时抛出:this javax.ejb.EJBException:java.rmi.marshallexception,serialization,persistence,ejb,javabeans,stateless-session-bean,Serialization,Persistence,Ejb,Javabeans,Stateless Session Bean,我在netbeans中创建了一个javaweb项目,我创建了我的实体bean,后来部署了我的项目来生成我的数据库,这项工作是成功的 然后我生成会话bean来访问创建的数据库。我创建了一个主类来测试会话bean,当我测试通过会话bean接口调用的方法“find”时,我注意到一些类抛出异常,我注意到带有vars List的entities类抛出异常,就好像它们无法序列化一样 我想给我带来的实体列表是一个请求 我在同一个项目中有实体bean,在web应用程序中有我的会话bean 我与玻璃鱼3.1.2一

我在netbeans中创建了一个javaweb项目,我创建了我的实体bean,后来部署了我的项目来生成我的数据库,这项工作是成功的

然后我生成会话bean来访问创建的数据库。我创建了一个主类来测试会话bean,当我测试通过会话bean接口调用的方法“find”时,我注意到一些类抛出异常,我注意到带有vars List的entities类抛出异常,就好像它们无法序列化一样

我想给我带来的实体列表是一个请求

我在同一个项目中有实体bean,在web应用程序中有我的会话bean

我与玻璃鱼3.1.2一起工作
Netbeans 7.1.2
日食2.0

实体持久性是:

@Entity

public class UserApplication implements Serializable {

private static long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idUserApplication;
@Basic(optional=false)
@Column(nullable=false)
private String dcn;
@Basic(optional=false)
@Column(nullable=false)
private String password;
@Basic(optional=false)
@Column(nullable=false)
private String title ;
@Basic(optional=false)
@Column(nullable=false)
private String firstName;
@Basic(optional=false)
@Column(nullable=false)
private String lastName;
@Basic(optional=false)
@Column(nullable=false)
private String ci;
@Basic(optional=false)
@Column(nullable=false)
private String personalEmail;
@Basic(optional=false)
@Column(nullable=false)
private String workEmail;

@OneToMany
@JoinColumn(name = "userApplication_id", nullable = false)
private List<Account> accounts;
@OneToMany
@JoinColumn(name = "userApplication_id", nullable = true)
private List<CreditCard> creditCards = null;

@ManyToMany
@JoinTable(name="UserApplication_BeneficiaryThird", joinColumns=@JoinColumn
        (name="userApplication_id", nullable = false), inverseJoinColumns=
        @JoinColumn(name="beneficiaryThird_id", nullable = false))
private List<BeneficiaryThird> beneficiariesThird = null;

@OneToMany
@JoinColumn(name = "userApplication_id_beneficiary", nullable = true)
private List<BeneficiaryBankItself> beneficiariesBankItself = null;

@ManyToMany
@JoinTable(name="UserApplication_TransactionRule", joinColumns=@JoinColumn
        (name="userApplication_id", nullable = false), inverseJoinColumns=
        @JoinColumn(name="transactionRule_id", nullable = false))
private List<TransactionRule> transactionRules = null;

@OneToOne(mappedBy = "userApplication", optional = true, cascade = CascadeType.ALL)
private SessionCookie cookieId = null;................
GetBean是实用程序类,它是:

public class GetBean {



public static BankFacadeLocal getBankFacade() {

    BankFacadeLocal bankFacade = null;
    String jndiName = beans.BankFacadeLocal.class.getName();
    try {
         //bankFacade = (BankFacadeLocal) new InitialContext().lookup("java:global/IntegrationBanking/BankFacade!sessionBeans.BankFacadeLocal");
          bankFacade = (BankFacadeLocal) new InitialContext().lookup(jndiName);        
    } catch (NamingException ex) {
        Logger.getLogger(GetBean.class.getName()).log(Level.SEVERE, null, ex);
    }

    return bankFacade;
 }

 public static UserApplicationFacadeLocal getUserFacade() {

    UserApplicationFacadeLocal userFacade = null;
    String jndiName = UserApplicationFacadeLocal.class.getName();
    try {
         // userFacade = (UserApplicationFacadeLocal) new InitialContext().lookup("java:global/IntegrationBanking/UserApplicationFacade!beans.UserApplicationFacadeLocal");
         userFacade = (UserApplicationFacadeLocal) new InitialContext().lookup(jndiName);        
    } catch (NamingException ex) {
        Logger.getLogger(GetBean.class.getName()).log(Level.SEVERE, null, ex);
    }

    return userFacade;
} 
}

剥离单位:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 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_2_0.xsd">
<persistence-unit name="BankingIntegrationPU" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>sqlServer</jta-data-source>
<properties>
  <property name="eclipselink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>
</persistence>

我的回答可能有误,但我经历了这个问题并解决了它。对我来说,问题只是我的数据库没有连接!我在Glassfish中测试了这个问题,确认了数据库连接问题并修复了它,然后这个错误就消失了

就理解这是我们得到的神秘错误消息的原因而言,以下解释可能会有所帮助:

  • 首先,实体bean(现在被Java持久性API取代)是一种EJB类型,因此在EJB容器中运行
  • 您的主类存在于EJB容器之外,因此必须“调用”EJB。它通过使用CORBA(公共对象请求代理体系结构)来实现这一点
  • CORBA是基于您可以远程实例化和操作对象的思想构建的。例如,您可以创建一个EJB实例,设置它的成员属性,运行它的方法,所有这些都可以从EJB容器之外的主方法开始。CORBA是一个在理论上任何“客户端”都可以使用的通用标准(例如,一个允许CORBA兼容调用的C++程序在理论上可以工作。但是,当然,java世界中的大多数人都只是使用CORBA来访问EJB容器。
  • 您得到的特定错误是
    ORBIO00013:Stream corrupted
    ,我不完全理解,但我认为这意味着您的主程序成功地连接到EJB容器,EJB容器抛出了一个异常,然后返回了CORBA没有预料到的内容,这破坏了用于发送响应的流
  • 真正的问题是CORBA在处理EJB中抛出的异常方面做得不是很好,所以解决这个问题的唯一方法是调试程序,找到EJB中抛出异常的位置,然后直接在调试器中查看异常
所有这些最终帮助我理解了一个简单的数据库连接问题(!)就是问题所在

希望这有帮助, Josh

我在这个链接中找到了更明确的解释问题的方法,但还没有找到解决方案
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 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_2_0.xsd">
<persistence-unit name="BankingIntegrationPU" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>sqlServer</jta-data-source>
<properties>
  <property name="eclipselink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>
</persistence>
jul 26, 2012 2:55:38 PM com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator handleFullLogging
Advertencia: IOP00810011: Exception from readValue on ValueHandler in CDRInputStream
org.omg.CORBA.MARSHAL: Advertencia: IOP00810011: Exception from readValue on ValueHandler in CDRInputStream  vmcid: OMG  minor code: 11 completed: Maybe
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525)............
Caused by: java.io.IOException: Mismatched serialization UIDs : Source (Rep. IDRMI:entities.UserApplication:5CDFA7C871B53786:F07C8D07E21B75FA) = F07C8D07E21B75FA whereas Target (Rep. ID RMI:entities.UserApplication:4357CF2703B83ACF:180694EF6A1B61BC) = 180694EF6A1B61BC
    at com.sun.corba.ee.impl.util.RepositoryId.useFullValueDescription(RepositoryId.java:679)
    at com.sun.corba.ee.impl.util.RepositoryId.useFullValueDescription(RepositoryId.java:639)
    at com.sun.corba.ee.impl.io.ValueHandlerImpl.useFullValueDescription(ValueHandlerImpl.java:360)
    at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:422)........
jul 26, 2012 2:55:38 PM com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator handleFullLogging
Advertencia: ORBIO00013: Stream corrupted
java.io.StreamCorruptedException: Advertencia: ORBIO00013: Stream corrupted
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525)............
jul 26, 2012 2:55:38 PM com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator handleFullLogging
Advertencia: IOP00810011: Exception from readValue on ValueHandler in CDRInputStream
org.omg.CORBA.MARSHAL: Advertencia: IOP00810011: Exception from readValue on ValueHandler in CDRInputStream  vmcid: OMG  minor code: 11 completed: Maybe
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525)............
Caused by: java.io.StreamCorruptedException: Advertencia: ORBIO00013: Stream corrupted
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)...........
Exception in thread "main" javax.ejb.EJBException: java.rmi.MarshalException: CORBA MARSHAL 1330446347 Maybe; nested exception is: 
    org.omg.CORBA.MARSHAL: Advertencia: IOP00810011: Exception from readValue on ValueHandler in CDRInputStream  vmcid: OMG  minor code: 11 completed: Maybe
    at beans._BeneficiaryBankItselfFacadeLocal_Wrapper.find(beans/_BeneficiaryBankItselfFacadeLocal_Wrapper.java)....................
Caused by: java.rmi.MarshalException: CORBA MARSHAL 1330446347 Maybe; nested exception is: 
    org.omg.CORBA.MARSHAL: Advertencia: IOP00810011: Exception from readValue on ValueHandler in CDRInputStream  vmcid: OMG  minor code: 11 completed: Maybe
    at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.mapSystemException(Util.java:267)...........
Caused by: org.omg.CORBA.MARSHAL: Advertencia: IOP00810011: Exception from readValue on ValueHandler in CDRInputStream  vmcid: OMG  minor code: 11 completed: Maybe
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)..................
Caused by: java.io.StreamCorruptedException: Advertencia: ORBIO00013: Stream corrupted
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)....................