CORBA Problem bei EJB 3.0 Anwendung in Glassfish v3

phofmann

Mitglied
Hallo zusammen,

ich habe gerade ein Problem bei dem ich absolut nicht weiter komme. Folgendes realtiv simples Szenario:

Ich habe eine Persistenzschicht, welche ich im Glassfish deploye und mit einer zweiten Anwendung ansprechen und testen möchte. Beide Anwendungen sind im glassfish unter der gleichen Domain installiert.

Auf meinem lokalen Entwicklungsrechner funktioniert das auch einwandfrei. Sobald ich aber genau die selben Jars nehme und sie auf einem Glassfish der in einem Linuxsystem läuft deploye bekomme ich einen seltsamen Fehler (der Fehler tritt auf, wenn ich in meiner Stateless SessionBean die Methode zum finden aller Werte aufrufe, Code ist unten angehängt):

[#|2010-03-19T13:20:56.520+0100|WARNING|glassfishv3.0|javax.enterprise.resource.corba.ee._INITIALIZING_.rpc.presentation|_ThreadID=30;_ThreadName=Thread-1;|"IOP00810240: (MARSHAL) Cannot marshal an invalid TypeCode kind"
org.omg.CORBA.MARSHAL: vmcid: SUN minor code: 240 completed: No
at com.sun.corba.ee.impl.logging.ORBUtilSystemException.cannotMarshalBadTckind(ORBUtilSystemException.java:9655)
at com.sun.corba.ee.impl.logging.ORBUtilSystemException.cannotMarshalBadTckind(ORBUtilSystemException.java:9677)
at com.sun.corba.ee.impl.corba.TypeCodeImpl.read_value_kind(TypeCodeImpl.java:1391)
at com.sun.corba.ee.impl.corba.TypeCodeImpl.read_value(TypeCodeImpl.java:1366)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_any(CDRInputStream_1_0.java:820)
at com.sun.corba.ee.impl.encoding.CDRInputObject.read_any(CDRInputObject.java:583)
at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.readAny(Util.java:461)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.read_Array(ValueHandlerImpl.java:704)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:361)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:320)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1066)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1175)
at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:655)
at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2298)
at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2552)
at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1310)
at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:449)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:364)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:320)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1066)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1175)
at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:655)
at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl$14.read(DynamicMethodMarshallerImpl.java:383)
at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readResult(DynamicMethodMarshallerImpl.java:484)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:190)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:147)
at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:225)
at de.salt.logbook.persistence.__PersistenceFacadeRemote_Remote_DynamicStub.find(de/salt/logbook/persistence/__PersistenceFacadeRemote_Remote_DynamicStub.java)
at de.salt.logbook.persistence._PersistenceFacadeRemote_Wrapper.find(de/salt/logbook/persistence/_PersistenceFacadeRemote_Wrapper.java)
at de.salt.logbook.persistence.test.PersistenceTestService.testReadList(PersistenceTestService.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.glassfish.webservices.InstanceResolverImpl$1.invoke(InstanceResolverImpl.java:137)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146)
at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257)
at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:95)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:629)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:588)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:573)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:470)
at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:112)
at org.glassfish.webservices.MonitoringPipe.process(MonitoringPipe.java:138)
at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:629)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:588)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:573)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:470)
at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:112)
at com.sun.enterprise.security.webservices.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:195)
at com.sun.enterprise.security.webservices.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:127)
at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:629)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:588)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:573)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:470)
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:295)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:515)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:285)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:143)
at org.glassfish.webservices.JAXWSServlet.doPost(JAXWSServlet.java:147)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:332)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:233)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:619)
|#]

[#|2010-03-19T13:20:56.521+0100|SEVERE|glassfishv3.0|com.sun.xml.ws.server.sei.EndpointMethodHandler|_ThreadID=30;_ThreadName=Thread-1;|java.rmi.MarshalException: CORBA BAD_PARAM 0 No; nested exception is:
org.omg.CORBA.BAD_PARAM: vmcid: 0x0 minor code: 0 completed: No
javax.ejb.EJBException: java.rmi.MarshalException: CORBA BAD_PARAM 0 No; nested exception is:
org.omg.CORBA.BAD_PARAM: vmcid: 0x0 minor code: 0 completed: No
at de.salt.logbook.persistence._PersistenceFacadeRemote_Wrapper.find(de/salt/logbook/persistence/_PersistenceFacadeRemote_Wrapper.java)
at de.salt.logbook.persistence.test.PersistenceTestService.testReadList(PersistenceTestService.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.glassfish.webservices.InstanceResolverImpl$1.invoke(InstanceResolverImpl.java:137)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146)
at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257)
at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:95)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:629)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:588)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:573)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:470)
at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:112)
at org.glassfish.webservices.MonitoringPipe.process(MonitoringPipe.java:138)
at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:629)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:588)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:573)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:470)
at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:112)
at com.sun.enterprise.security.webservices.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:195)
at com.sun.enterprise.security.webservices.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:127)
at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:629)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:588)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:573)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:470)
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:295)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:515)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:285)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:143)
at org.glassfish.webservices.JAXWSServlet.doPost(JAXWSServlet.java:147)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:332)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:233)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.rmi.MarshalException: CORBA BAD_PARAM 0 No; nested exception is:
org.omg.CORBA.BAD_PARAM: vmcid: 0x0 minor code: 0 completed: No
at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.mapSystemException(Util.java:311)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:200)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:147)
at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:225)
at de.salt.logbook.persistence.__PersistenceFacadeRemote_Remote_DynamicStub.find(de/salt/logbook/persistence/__PersistenceFacadeRemote_Remote_DynamicStub.java)
... 60 more
Caused by: org.omg.CORBA.BAD_PARAM: vmcid: 0x0 minor code: 0 completed: No
at org.omg.CORBA.TCKind.from_int(TCKind.java:516)
at com.sun.corba.ee.impl.corba.TypeCodeImpl.kind(TypeCodeImpl.java:1109)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_any(CDRInputStream_1_0.java:822)
at com.sun.corba.ee.impl.encoding.CDRInputObject.read_any(CDRInputObject.java:583)
at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.readAny(Util.java:461)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.read_Array(ValueHandlerImpl.java:704)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:361)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:320)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1066)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1175)
at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:655)
at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2298)
at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2552)
at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1310)
at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:449)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:364)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:320)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1066)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1175)
at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:655)
at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl$14.read(DynamicMethodMarshallerImpl.java:383)
at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readResult(DynamicMethodMarshallerImpl.java:484)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:190)
... 63 more
|#]



Mit dieser Fehlermeldung bin ich etwas überfordert, da ich mich mit dem Thema CORBA viel zu wenig auskenne. Ich habe schon folgende Dinge probiert:
  • Groß und Kleinschreibung meiner Klasse, der Variablen und der Named Queries überprüft
  • Ich habe unterschiedliche Objekte getestet, mit dem Ergebnis, das einige funktionieren (3 von 10) der Rest gibt mir genau diesen Fehler.
  • Ich habe eines der nicht funktionierenden Objekte auf die ID reduziert und den Aufruf nochmal versucht, das Ergebnis war ebenfalls der Oben gepostete Fehler.

Meine Zugriffe sind folgendermaßen realisiert:

Die EntityBean (Employee reduziert auf die ID)



Java:
import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;

import java.util.*;
import javax.persistence.TemporalType;

import org.eclipse.persistence.annotations.Convert;
import org.eclipse.persistence.annotations.TypeConverter;

@Entity
@Table(name="CARGORENT.MITARBEITER")
@NamedQueries({
	@NamedQuery(	name=Employee.CONTEXT+PersistentObject_A.QUERY_FIND_ALL,
					query="SELECT e FROM Employee e"),
	@NamedQuery(	name=Employee.CONTEXT+PersistentObject_A.QUERY_COUNT_ALL,
					query="SELECT COUNT(e) FROM Employee e"),
	@NamedQuery(	name=Employee.CONTEXT+PersistentObject_A.QUERY_FIND_BY_ID,
					query="SELECT e FROM Employee e WHERE e.id = :id"),
})
public class Employee extends PersistentObject_A implements Serializable{

	/**
	 * generated by IDE
	 */
	private static final long serialVersionUID = 7564757244552961714L;
	
	public static final String CONTEXT = "employee";
	
	@Id
	@Column		   (name="MIT_ID") 								private double id;
	
	public Employee(){	
	}
	
	@Override
	protected String getObjectContext() {
		return CONTEXT;
	}

	public double getId() {
		return id;
	}

	public void setId(double id) {
		this.id = id;
	}
}

Die Abstrakte Kalsse:

Java:
public abstract class PersistentObject_A {
	
	protected 	static final String QUERY_FIND_ALL = ".findAll";
	protected 	static final String QUERY_COUNT_ALL = ".countAll";
	protected 	static final String QUERY_FIND_BY_ID = ".findById";

	public String getNamedQueryCountAll() {
		return this.getObjectContext()+QUERY_COUNT_ALL;
	}

	public String getNamedQueryFindAll() {
		return this.getObjectContext()+QUERY_FIND_ALL;
	}

	public String getNamedQueryFindById() {
		return this.getObjectContext()+QUERY_FIND_BY_ID;
	}
	
	protected abstract String getObjectContext();


}

Dazu gehört meine PersistenceFacade:

Java:
package de.salt.logbook.persistence;

import java.util.List;

import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import de.salt.logbook.persistence.model.ApplicationUser;
import de.salt.logbook.persistence.model.PersistentObject_A;

@Stateless
@Remote(PersistenceFacadeRemote.class)
public class PersistenceFacade implements PersistenceFacadeRemote{
	
	@PersistenceContext(name="logbookPersistenceEJBPU")
	private EntityManager em;

	public PersistenceFacade(){
	}


	@SuppressWarnings("unchecked")
	@Override
	public <PersistentObject> List<PersistentObject> find(PersistentObject obj) {
		List<PersistentObject> returnValue = null;
//Durch ((PersistentObject_A)obj).getNamedQueryFindAll() bekomme  ich den Namen der Named Query 
//des aktuellen Objektes zurück
		returnValue = em.createNamedQuery(((PersistentObject_A)obj).getNamedQueryFindAll())
						.getResultList();
		return returnValue;
	}

//weitere Methoden... sollten aber nicht relevant sein.
}


Das RemoteInterface:


Java:
import java.util.List;

import javax.ejb.Remote;

@Remote
public interface PersistenceFacadeRemote{
	
	public <PersistentObject> 	List<PersistentObject>	find(PersistentObject obj);

// weitere Methoden...
}

die persistence.xml:

[XML]

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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_1_0.xsd" version="1.0">

<persistence-unit name="logbookPersistenceEJBPU" transaction-type="JTA">
<jta-data-source>jdbc/logbook</jta-data-source>
<properties>
<property name="eclipselink.loggin.level" value="INFO"/>
</properties>
</persistence-unit>

</persistence>


[/XML]

Das Projekt benutzt folgende MavenDependencies:
[XML]
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.ejb</artifactId>
<version>3.0</version>
</dependency>
[/XML]

weiter gehts im nächsten Post...
 

phofmann

Mitglied
und hier der rest


Der WebService ist ganz Simpel in einem eigenen WebProjekt und dient wirklich nur dazu auf simple Weise den Aufruf darzustellen welcher Später in der finalen Implementation statt finden soll:


Java:
package de.salt.logbook.persistence.test;


import java.util.List;

import javax.ejb.EJB;
import javax.jws.WebMethod;
import javax.jws.WebService;

import de.salt.logbook.persistence.PersistenceFacadeRemote;
import de.salt.logbook.persistence.model.Employee;

@WebService
public class PersistenceTestService{

	/**
	 * generated by IDE 
	 */
	private static final long serialVersionUID = 1725817997761181348L;
	
	@EJB
	PersistenceFacadeRemote persistence;
	
	@WebMethod
	public String testReadList(){
		String result = "";
		System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
		System.out.println("testReadList aufgerufen");
		
                List<Employee> resultList = persistence.find(new Employee());

		result = "Listengröße: "+resultList.size();
		System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
		return result;
	}
}


Auch hier noch die Maven Dependencies zu diesem Projekt:

[XML]
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>javaee-api</artifactId>
<version>5.0-1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
[/XML]


Das Ganze läuft mit
Glassfish v3
JDK 1.6.0_16
Oracle 9i (der Treiber ist ojdbc-1.4.jar und ist als ConnectionPool im glassfish eingerichtet)

Ich hoffe ich hab jetzt nicht zu viel unnötigen klimm bimm geschrieben und ich hoffe noch viel mehr, das ich nix wichtiges vergessen habe. Danke schon mal im vorraus für eure Unterstützung, jeder auch nur noch so kleine hinweis wäre eine echte Hilfe!!

Grüße
Peter
 

phofmann

Mitglied
Hallo zusammen,

hat leider krankheitsbedingt etwas gedauert, bis ich wieder hier war. Hab festgestellt das mir leider noch niemand helfen konnte.

Ich bin in meiner Forschung zu dem Punkt gekommen, wo ich sagen kann, das die Persistenzschicht fehlerfrei funktioniert. Das Problem scheint irgend wo zwischen der Applikationsschicht und der Persistenzschicht zu liegen, ich weiss aber leider nicht wo.

Hat vielleicht irgend jemand eine Idee wo ich da hinlangen kann?

danke schon mal für die Hilfe

Peter
 

phofmann

Mitglied
hmm, sieht wohl so aus, als würde mir keiner helfen können.

Danke trotzdem für die Bemühungen, ich werde dann mal weiter basteln.

Peter
 

FArt

Top Contributor
Ich habe mir den Code nicht angesehen... ist mir zu lang.

Die Fehlermeldung ist aber relativ eindeutig: Cannot marshal an invalid TypeCode kind bedeutet, dass das entsprechende Objekt nicht serialisiert werden kann, z.B. um zum Client geschickt zu werden.
Um was für ein Objekt handelt es sich?
 

phofmann

Mitglied
Hi,

danke für die Antwort schon mal.

Die zu übertragende Datei ist meine Employee Klasse:

Java:
//imports...
 
@Entity
@Table(name="CARGORENT.MITARBEITER")
@NamedQueries({
    @NamedQuery(    name=Employee.CONTEXT+PersistentObject_A.QUERY_FIND_ALL,
                    query="SELECT e FROM Employee e"),
    @NamedQuery(    name=Employee.CONTEXT+PersistentObject_A.QUERY_COUNT_ALL,
                    query="SELECT COUNT(e) FROM Employee e"),
    @NamedQuery(    name=Employee.CONTEXT+PersistentObject_A.QUERY_FIND_BY_ID,
                    query="SELECT e FROM Employee e WHERE e.id = :id"),
})
public class Employee extends PersistentObject_A implements Serializable{
 
    /**
     * generated by IDE
     */
    private static final long serialVersionUID = 7564757244552961714L;
    
    public static final String CONTEXT = "employee";
    
    @Id
    @Column        (name="MIT_ID")                              private double id;
    
    public Employee(){  
    }
    
    @Override
    protected String getObjectContext() {
        return CONTEXT;
    }
 
    public double getId() {
        return id;
    }
 
    public void setId(double id) {
        this.id = id;
    }
}
 

FArt

Top Contributor
Dachte ich mir schon.
Entity-Beans müssen so weit ich weiß gewrappt werden und können nicht direkt an Clients gegeben werden. Ich glaube mit JPA kann man Remotezugriff auf Entitäten realisieren, wobei das natürlich auch nur über einen generischen Stub realisiert wird. Nur Serializable hinschreiben macht ein Objekt eben nicht serialisierbar ;-)
 

phofmann

Mitglied
Ah klasse, dann weiss ich endlich wo ich hinlangen muss. Vielen dank für die antwort.

Das mit dem Wrappen wusste ich nicht, hätte ich auch nie vermutet, weil es bei einigen anderen Entity Beans funktioniert ???:L

Danke nochma

Gruß
Peter
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Problem beim initialisieren des Caches Data Tier 0
S JPA Problem mit Cascading Data Tier 1
M Eclipse 4 RCP Hibernate Problem Data Tier 3
C JPA FetchType.LAZY, Relation @OneToMany und Problem mit dem update Data Tier 1
K Problem mit EJBs und Transaktionen Data Tier 0
G JPA: Entity Klasse @JoinColumns Problem Data Tier 2
M JPA Problem: java.sql.SQLSyntaxErrorException: Data Tier 7
H Hibernate Problem mit Lazy Loading bei @OneToMany Collections Data Tier 5
M MySql und JPA-Timestamp Problem Data Tier 8
J Hibernate Problem bei Master-Detail-Tabellen Data Tier 5
A JPA - ManyToMany Problem - keine Unique Mehrfachzuweisungen Data Tier 4
M Problem beim Laden von Objekten, die von anderen Applikationen in eine DB eingefügt wurden Data Tier 5
M Problem mit @Temporal Mapping und SQL Server Data Tier 3
P JPA - HashMap mit Many-to-Many Relation Problem Data Tier 4
B Problem mit @ManyToMany und CascadeType.ALL Data Tier 3
Blackskyliner [JPA][Anfänger] Problem mit Wertzuweisung aus Verbundtabelle Data Tier 2
B Problem mit org.hibernate.LazyInitializationException Data Tier 11
B DatenquellenUpdater extends Thread - Problem mit PermGenSpace Data Tier 5
S Problem beim Insert mit Hibernate Data Tier 9
Y [openJPA] Problem mit Transaktion? Data Tier 2
A @SecondaryTable Problem Data Tier 9
N Problem beim session.flush(); Data Tier 17
Y Postgres und JPA - Primärschlüssel Problem Data Tier 3
P SQL PRoblem Hibernate? Data Tier 8
Y EJB Problem mit Transaktionen Data Tier 7
M Transaction / Session Problem Data Tier 4
G JPA 2.0 Query Problem Data Tier 3
F Problem mit Hibernate Schema Update Data Tier 2
S Lazy loading Problem Data Tier 2
M Insert-Problem mit JPA/Hibernate Data Tier 4
megachucky JPA - Problem mit Persistence Unit / Context Data Tier 1
H Hibernate Problem Data Tier 4
D Performance Problem mit Prepared Statement Data Tier 6
T Problem mit openJPA Data Tier 7
P Problem mit Data Tier 9
GilbertGrape Cascade Problem (Hibernate) Data Tier 3
C JPA Problem mit attributeOverride und mehrspaltigem PK Data Tier 2
B select "neu" statement Problem (jpql) Data Tier 8
boxi Hibernate Lazy Loading Problem Data Tier 2
M Problem mit Hibernate und SLF4J - NoSuchMethodException Data Tier 3
G Connection Problem - WAS 6.1, Hibernate, OS Authentication Data Tier 1
K Hibernate update-Problem Data Tier 36
J hibernate problem Data Tier 14
N Hibernate - Problem mit Update/Insert Data Tier 4
B Problem mit @PersistenceContext Data Tier 4
G Problem with mapped of the tables at one to one relationship Data Tier 8
P NestedException(EJB + JPA) / Mehrbenutzer Anwendung Data Tier 6
C EclipseLink in eine JavaEE Tomcat Anwendung einbinden Data Tier 7
M DB Anwendung - Daten auf ext. Server - Anregungen? Data Tier 5

Ähnliche Java Themen


Oben