Die RÜCKFÜHRUNG einer Person, die über remote-EJB-Ergebnisse in java.lang.NullPointerException in com.Sonne.corba.ee.impl.orbutil.ClassInfoCache$ClassInfo.<init>
Ich versuche zum erstellen einer enterprise-Webanwendungen in der folgenden Umgebung.
- NetBeans 7.2.1
- Glassfish Server 3.1.2 (enthält die Servlet 3.0 API)
- EJB 3.1
- JPA 2.0
- JSF 2.1
- jdk 1.7
- Oracle 10g
Habe ich eine Class Library (New Project -> Java -> Java-Klassenbibliothek), um remote (javax.ejb.Remote
) Schnittstelle(N) implementiert werden, indem eine zustandslose session-bean. Die Bibliothek-Klasse wurde Hinzugefügt, um die "class path" der beiden Module (EJB und KRIEG).
Ich den remote-Schnittstelle und alle entity-Klassen in der Klassenbibliothek (ich weiß nicht, das ist der Weg).
Dies funktioniert gut mit Schnittstellen versehen mit @Local
. Es funktioniert sogar mit @Remote
aber fehlschlägt, mit der folgenden Ausnahme beim PPV gehört, wenn ich versuche, um eine Liste der Objekte einer Entität.
java.rmi.MarshalException: MARSHAL CORBA 1330446347 Vielleicht; geschachtelte
exception is: org.omg.CORBA.MARSCHALL: WARNUNG: IOP00810011: Ausnahme
von readValue auf ValueHandler in CDRInputStream vmcid: OMG-Moll
code: 11 abgeschlossen: Vielleicht
Den vollständigen stacktrace.
javax.ejb.EJBException: java.rmi.MarshalException: CORBA MARSHAL 1330446347 Maybe; nested exception is:
org.omg.CORBA.MARSHAL: WARNING: IOP00810011: Exception from readValue on ValueHandler in CDRInputStream vmcid: OMG minor code: 11 completed: Maybe
at remote.admin.sessionbeans._AdminRemoteSessionBeanRemote_Wrapper.getZones(remote/admin/sessionbeans/_AdminRemoteSessionBeanRemote_Wrapper.java)
at managedbeans.ZoneBean.getZones(ZoneBean.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:363)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at com.sun.el.parser.AstValue.getValue(AstValue.java:138)
at com.sun.el.parser.AstValue.getValue(AstValue.java:183)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UIData.getValue(UIData.java:731)
at javax.faces.component.UIData.getDataModel(UIData.java:1798)
at javax.faces.component.UIData.setRowIndexWithoutRowStatePreserved(UIData.java:484)
at javax.faces.component.UIData.setRowIndex(UIData.java:473)
at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:81)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820)
at javax.faces.component.UIData.encodeBegin(UIData.java:1118)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1755)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.rmi.MarshalException: CORBA MARSHAL 1330446347 Maybe; nested exception is:
org.omg.CORBA.MARSHAL: WARNING: 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)
at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.wrapException(Util.java:696)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:259)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:152)
at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:227)
at remote.admin.sessionbeans.__AdminRemoteSessionBeanRemote_Remote_DynamicStub.getZones(remote/admin/sessionbeans/__AdminRemoteSessionBeanRemote_Remote_DynamicStub.java)
... 55 more
Caused by: org.omg.CORBA.MARSHAL: WARNING: 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)
at com.sun.corba.ee.spi.orbutil.logex.corba.CorbaExtension.makeException(CorbaExtension.java:248)
at com.sun.corba.ee.spi.orbutil.logex.corba.CorbaExtension.makeException(CorbaExtension.java:95)
at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator.handleFullLogging(WrapperGenerator.java:387)
at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator.access$400(WrapperGenerator.java:107)
at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator$2.invoke(WrapperGenerator.java:511)
at com.sun.corba.ee.spi.orbutil.proxy.CompositeInvocationHandlerImpl.invoke(CompositeInvocationHandlerImpl.java:99)
at $Proxy193.valuehandlerReadException(Unknown Source)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1022)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1123)
at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:531)
at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2162)
at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2404)
at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224)
at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:425)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:308)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:274)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1015)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1123)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:935)
at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:525)
at com.sun.corba.ee.impl.copyobject.ORBStreamObjectCopierImpl.copy(ORBStreamObjectCopierImpl.java:78)
at com.sun.corba.ee.impl.copyobject.ORBStreamObjectCopierImpl.copy(ORBStreamObjectCopierImpl.java:65)
at com.sun.corba.ee.impl.orbutil.copyobject.FallbackObjectCopierImpl.copy(FallbackObjectCopierImpl.java:69)
at com.sun.corba.ee.impl.orbutil.copyobject.FallbackObjectCopierImpl.copy(FallbackObjectCopierImpl.java:59)
at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.copyObject(Util.java:771)
at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.copyResult(DynamicMethodMarshallerImpl.java:473)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:243)
... 58 more
Caused by: java.lang.NullPointerException
at com.sun.corba.ee.impl.orbutil.ClassInfoCache$ClassInfo.<init>(ClassInfoCache.java:156)
at com.sun.corba.ee.impl.orbutil.ClassInfoCache.get(ClassInfoCache.java:281)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1097)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:935)
at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:525)
at com.sun.corba.ee.impl.corba.TCUtility.unmarshalIn(TCUtility.java:289)
at com.sun.corba.ee.impl.corba.AnyImpl.read_value(AnyImpl.java:605)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_any(CDRInputStream_1_0.java:775)
at com.sun.corba.ee.impl.encoding.CDRInputObject.read_any(CDRInputObject.java:482)
at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.readAny(Util.java:452)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.read_Array(ValueHandlerImpl.java:639)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:305)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:274)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1015)
... 77 more
Den remote-interface:
@Remote
public interface AdminRemoteSessionBeanRemote {
public List<Zone>getZones();
public int sum(int a, int b);
}
Den stateless session bean Implementierung der obigen Schnittstelle:
@Stateless
public class AdminRemoteSessionBean implements AdminRemoteSessionBeanRemote {
@PersistenceContext(unitName="unit-name")
private EntityManager entityManager;
@Override
public List<Zone> getZones() {
return entityManager.createNamedQuery("Zone.findAll").getResultList();
}
@Override
public int sum(int a, int b) {
return a + b;
}
}
JSF-managed-bean:
@ManagedBean
@RequestScoped
public class ZoneBean {
@EJB//(mappedName="remote.admin.sessionbeans.AdminRemoteSessionBeanRemote")
private AdminRemoteSessionBeanRemote adminRemoteSessionBeanRemote;
private List<Zone>zones;
private int sum;
public ZoneBean(){}
public List<Zone> getZones() {
zones=adminRemoteSessionBeanRemote.getZones();
return zones;
}
public void setZones(List<Zone> zones) {
this.zones = zones;
}
public int getSum() {
sum=adminRemoteSessionBeanRemote.sum(10, 15);
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
}
Den sum()
Methode, die nur gibt einen int
ist nur für die demonstration. Es funktioniert wie es ist.
Das problem tritt auf, wenn eine Person beteiligt ist, wie gesehen werden kann, in der public List<Zone> getZones()
Methode in der EJB, die die Ausnahme verursacht, wie oben erwähnt.
AdminClassLibrary
(die markierten Knoten in der snapshot) ist die Bibliothek-Klasse mit dem remote-interface-und entity-Klassen.
Wie die Rückkehr java.util.List<entities.Zone>
über die getZones()
- Methode der EJB-session-bean?
Ich geklickt haben, werden alle links angezeigt, die von Google über diese Ausnahme, konnte aber nicht die Lösung.
Den Zone
Einheit.
@Entity
@Table(name = "ZONE", catalog = "", schema = "PROJECTDB")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Zone.findAll", query = "SELECT z FROM Zone z ORDER BY z.zoneId DESC"),
@NamedQuery(name = "Zone.findByZoneId", query = "SELECT z FROM Zone z WHERE z.zoneId = :zoneId"),
@NamedQuery(name = "Zone.findByZone", query = "SELECT z FROM Zone z WHERE z.zone = :zone")})
public class Zone implements Serializable {
private static final long serialVersionUID = 1L;
//@Max(value=?) @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
@Id
@Basic(optional = false)
@NotNull
@Column(name = "ZONE_ID")
private BigDecimal zoneId;
@Size(max = 50)
@Column(name = "ZONE")
private String zone;
@OneToMany(mappedBy = "zoneId", fetch = FetchType.LAZY)
private List<Country> countryList;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "zone", fetch = FetchType.LAZY)
private List<ZoneCharge> zoneChargeList;
@JoinColumn(name = "TRANSPORTER_ID", referencedColumnName = "TRANSPORTER_ID")
@ManyToOne(fetch = FetchType.LAZY)
private Transporter transporterId;
//Getters and setters + constructor(s) + equals() + hashcode()
}
- Könnten Sie die post
Zone
Klasse auch? - Pellegrini - da-Klasse. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist bei der de-Serialisierung der
Zone
Instanz der Klasse. Es sollteSerializable
und sollte vorhanden sein, auf dem client und dem server (lokal und remote). Diese wird ermuntert, eine Abhängigkeit hinzufügen Persistenz-Bibliotheken zu remote-server als auch. Daher ist es besser, nicht zu senden, eine Persistenz-entity.Zone
Unternehmen bereits implementiertjava.io.Serializable
- Schnittstelle. Daher sollte es serialisiert werden, denke ich. In meinem Fall ist der client das web-Modul (KRIEG). Die remote-Schnittstelle vorhanden ist, in den KRIEG und die EJB-Module als auch in der Bibliothek-Klasse. Sorry, habe ich nicht bekommen.Zone
Entität in der web - Krieg-Modul, aber ich habe die gleiche Ausnahme wie erwähnt, in Frage. Es funktioniert mit NetBeans 6.9.1, ich habe versucht, nicht Mandat an die Stelle der remote-Schnittstelle(N) in eine separate Bibliothek-Klasse. Ich weiß nicht, wie zu bauen, die solche Anwendungen mit NetBeans 7.x. Danke.Zone
Klasse wie ejb Persistenz jar.Hatte ich nur eine Instanz dieses Problems. Die remote-Methode, die ich rief, wirf eine Ausnahme (ein PSQLException, eigentlich). Ich denke, die PSQLException eingewickelt war und letztlich für serialisierte und an meine Kunden. Mein client nicht PSQLException in seinen classpath, die anscheinend nicht behandelt werden schön in die Eingeweide des CORBA.
Ich diagnostizierte das durch einbinden eines Debuggers in der client-Anwendung und setzen Sie Haltepunkte auf die Konstruktoren zu NullPointerException. Ich war dann in der Lage, um zu sehen, welche Klasse wurde deserialised an der Zeit, die die Ausnahme ausgelöst wurde.
Glück!
Bekam ich auch den Fehler-stack-trace nach dem Versuch, die Sammlung der Entität von einem remote ejb-Aufruf.
Upgrade jdk 1.8_60 und oben komplett das problem gelöst. Es läuft ganz gut jetzt ohne Fehler-stack. Dieser bug wurde übernommen careof