Ich arbeite seit kurzem an einem JavaEE-Projekt. Das Ganze ist schon recht umfangreich geworden.
Als IDE wird Eclipse genommen mit einem Glassfish Server, hinzu das GWT-Framework.
Nun kann ich das ganze über den 'Servers'-Reiter auch publishen und dann ganz normal starten. Die Anwendung startet im Browser dann mit einem Loginfenster und sobald ich mich hier einlogge wird ein selbst definiertes Model vom Server empfangen, allerdings wird wohl nicht die 'Serialization policy file' deployed, so dass dieses Model als nicht-erlaubt eingestuft wird und es gibt einen 500er Error bei dem RPC-Request (sehe ich mit Firebug).
Hier einmal die genaue Fehlermeldung:
(Paket-/Klassennamen ein wenig abgeändert)
Definition "LoginModel":
Mit Serializable sollte das anstelle von IsSerializable auch problemlos funktionieren (IsSerializable bringt die gleiche Fehlermeldung).
Ich kann mir vorstellen, dass es was mit den Projekteinstellungen zu tun hat und deswegen diese Policy Datei nicht published wird, aber da das Projekt auf einem anderen Rechner problemlos läuft weiß ich hier auch nicht weiter udn finde auch keine entsprechende Einstellung (bin ganz neu im Thema JavaEE).
Entsprechende Ergebnisse bei Google haben mich bisher auch noch nicht zur Lösung gebracht. Aber vielleicht kann mir hier einer helfen? Danke!
EDIT:
Achso, die Policy Datei wird auf jeden Fall generiert und liegt auch im WebContent/my.project.StatusDatabase-Ordner; sollte somit auch published werden. Ist aber nicht der Fall, ein direkter Aufruf im Browser gibt auch nen 404er :/
EDIT2:
Okay, ich muss jetzt erst das Projekt starten, dann den GlassFishServer und diesen dann cleanen und publishen. Dann kann ich mich auf jeden Fall einloggen und die Serialization-Policy wird übernommen.
Aaaber natürlich kommt der nächste Fehler..
Auf der Seite nach dem Login wird eine Liste geladen mit einige Einträgen, Error500 im Firebug beim RPC-Request und im Server-Log sehe ich:
Die hervorgehobene Stelle wird wohl die wichtige sein.
Auch hier sieht man wieder, dass es ein Problem mit der Policy gibt. Allerdings finde ich in der Policy-Datei auch wirklich keinen Eintrag zur IndirectList; geladen wird diese Datei über ein EJB-Projekt in dem ich nun mal die EclipseLink JPA Library lade. Somit sollte die Datei auch vorhanden sein nur wird einfach nicht in der Policy eingetragen :/
Als IDE wird Eclipse genommen mit einem Glassfish Server, hinzu das GWT-Framework.
Nun kann ich das ganze über den 'Servers'-Reiter auch publishen und dann ganz normal starten. Die Anwendung startet im Browser dann mit einem Loginfenster und sobald ich mich hier einlogge wird ein selbst definiertes Model vom Server empfangen, allerdings wird wohl nicht die 'Serialization policy file' deployed, so dass dieses Model als nicht-erlaubt eingestuft wird und es gibt einen 500er Error bei dem RPC-Request (sehe ich mit Firebug).
Hier einmal die genaue Fehlermeldung:
Code:
INFO: PWC1412: WebModule[null] ServletContext.log():RPC_Functions: ERROR: The serialization policy file '/my.package.StatusDatabase/E0DA49447F0496987BC0077FFB762298.gwt.rpc' was not found; did you forget to include it in this deployment?
INFO: PWC1412: WebModule[null] ServletContext.log():RPC_Functions: WARNING: Failed to get the SerializationPolicy 'E0DA49447F0496987BC0077FFB762298' for module 'https://127.0.0.1:8080/Project/my.package.StatusDatabase/'; a legacy, 1.3.3 compatible, serialization policy will be used. You may experience SerializationExceptions as a result.
[..]
SCHWERWIEGEND: WebModule[/Project]Exception while dispatching incoming RPC call
com.google.gwt.user.client.rpc.SerializationException: Type 'my.package.client.datamodels.LoginModel' was not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom field serializer.For security purposes, this type will not be serialized.: instance = my.package.client.datamodels.LoginModel@f010c3
[..]
Definition "LoginModel":
PHP:
public class LoginModel implements Serializable {
// ...
}
Mit Serializable sollte das anstelle von IsSerializable auch problemlos funktionieren (IsSerializable bringt die gleiche Fehlermeldung).
Ich kann mir vorstellen, dass es was mit den Projekteinstellungen zu tun hat und deswegen diese Policy Datei nicht published wird, aber da das Projekt auf einem anderen Rechner problemlos läuft weiß ich hier auch nicht weiter udn finde auch keine entsprechende Einstellung (bin ganz neu im Thema JavaEE).
Entsprechende Ergebnisse bei Google haben mich bisher auch noch nicht zur Lösung gebracht. Aber vielleicht kann mir hier einer helfen? Danke!
EDIT:
Achso, die Policy Datei wird auf jeden Fall generiert und liegt auch im WebContent/my.project.StatusDatabase-Ordner; sollte somit auch published werden. Ist aber nicht der Fall, ein direkter Aufruf im Browser gibt auch nen 404er :/
EDIT2:
Okay, ich muss jetzt erst das Projekt starten, dann den GlassFishServer und diesen dann cleanen und publishen. Dann kann ich mich auf jeden Fall einloggen und die Serialization-Policy wird übernommen.
Aaaber natürlich kommt der nächste Fehler..
Auf der Seite nach dem Login wird eine Liste geladen mit einige Einträgen, Error500 im Firebug beim RPC-Request und im Server-Log sehe ich:
Code:
SCHWERWIEGEND: WebModule[/Project]Exception while dispatching incoming RPC call
com.google.gwt.user.client.rpc.SerializationException: java.lang.reflect.InvocationTargetException
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:764)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:727)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:616)
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:152)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:534)
at com.google.gwt.user.server.rpc.RPC.encodeResponse(RPC.java:616)
at com.google.gwt.user.server.rpc.RPC.encodeResponseForSuccess(RPC.java:474)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:571)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
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 com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
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:662)
Caused by: java.lang.reflect.InvocationTargetException
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 com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:746)
... 38 more
[B]Caused by: com.google.gwt.user.client.rpc.SerializationException: Type 'org.eclipse.persistence.indirection.IndirectList' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized.: instance = {IndirectList: not instantiated}[/B]
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:614)
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:152)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:534)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:704)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:734)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:616)
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:152)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:534)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:704)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:734)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:616)
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
at com.google.gwt.user.client.rpc.core.java.util.Collection_CustomFieldSerializerBase.serialize(Collection_CustomFieldSerializerBase.java:45)
at com.google.gwt.user.client.rpc.core.java.util.Vector_CustomFieldSerializer.serialize(Vector_CustomFieldSerializer.java:38)
... 43 more
Die hervorgehobene Stelle wird wohl die wichtige sein.
Auch hier sieht man wieder, dass es ein Problem mit der Policy gibt. Allerdings finde ich in der Policy-Datei auch wirklich keinen Eintrag zur IndirectList; geladen wird diese Datei über ein EJB-Projekt in dem ich nun mal die EclipseLink JPA Library lade. Somit sollte die Datei auch vorhanden sein nur wird einfach nicht in der Policy eingetragen :/
Zuletzt bearbeitet: