Fehler beim Marschall EJB-Parameter — IllegalArgumentException: Can not set org.apache.Unterhaus.Sammlungen.FastHashMap Feld
Bin ich immer die folgende Fehlermeldung beim Versuch zu speichern der Suchergebnisse mithilfe der Remote-Schnittstelle für SearchFacade.java
"Failed to marshal EJB parameters"
Kann nicht eingestellt org.apache.Unterhaus.Sammlungen.FastHashMap Feld
org.apache.Unterhaus.validator.Feld.hMsgs zu
org.apache.Unterhaus.Sammlungen.FastHashMap an
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
bei
Ich bin Mit struts 1.1, EJB 2.1 Verwendung von xdoclet-1.2.3 Gläser für die Generierung der Abhängigkeitsdateien.(was unvermeidlich ist, zu verwenden), Wo mein Lokal,Home-interfaces generiert werden, mithilfe von Xdoclet..
Bin ich auch mit Java 6, Jboss EAP 6.1 Alpha in meinem Projekt.
Hinweis: Der gleiche code funktioniert Prima, wenn die läuft im Jboss 4.0
Also Frage mich, ist meine Fernbedienung aufrufen, korrekt ist.
Jede Hilfe ist willkommen.
Fehlerprotokolle
java.lang.RuntimeException: JBAS014154: Failed to marshal EJB-Parameter bei der org.jboss.als.ejb3.remote.LocalEjbReceiver.clone(LocalEjbReceiver.java:270) auf org.jboss.als.ejb3.remote.LocalEjbReceiver.clone(LocalEjbReceiver.java:259) auf org.jboss.als.ejb3.remote.LocalEjbReceiver.processInvocation(LocalEjbReceiver.java:170) at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:181) im org.jboss.ejb.client.EJBHomeCreateInterceptor.handleInvocation(EJBHomeCreateInterceptor.java:79) at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:183) at org.jboss.ejb.client.TransactionInterceptor.handleInvocation(TransactionInterceptor.java:42) at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:183) at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:125) at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:183) at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:177) at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:161) at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:124) at $Proxy25.saveSearch(Unknown Source) bei com.web.Geschichte.SearchFormDelegate.saveSearch(SearchFormDelegate.java:177) at com.Geschichte.SaveSearchAction.createNewSavedSearch(SaveSearchAction.java:109) at com.Geschichte.SaveSearchAction.executeSynchronized(SaveSearchAction.java:296) at com.Versand.SynchronizedAction.execute(SynchronizedAction.java:206) at org.apache.- Streben.Aktion.RequestProcessor.processActionPerform(RequestProcessor.java:431) at org.apache.- Streben.Aktion.RequestProcessor.Prozess(RequestProcessor.java:236) at org.apache.- Streben.Aktion.ActionServlet.Prozess(ActionServlet.java:1196) auf org.apache.- Streben.Aktion.ActionServlet.doPost(ActionServlet.java:432) at javax.- servlet.http.HttpServlet.service(HttpServlet.java:754) at javax.- servlet.http.HttpServlet.service(HttpServlet.java:847) auf org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) auf org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at com.Sicherheit.AuthenticationFilter.doFilter(AuthenticationFilter.java:672) auf org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) auf org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at com.planetj.- servlet.filter.die Komprimierung.CompressingFilter.doFilter(CompressingFilter.java:270) auf org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) auf org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) bei org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) auf org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) at org.apache.catalina.Ventile.ErrorReportValve.invoke(ErrorReportValve.java:97) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) at org.apache.catalina.- Anschluss.CoyoteAdapter.service(CoyoteAdapter.java:336) auf org.apache.coyote.http11.Http11Processor.Prozess(Http11Processor.java:856) bei org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.Prozess(Http11Protocol.java:653) am org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920) bei java.lang.Thread.run(Thread.java:662), Verursacht durch: java.lang.IllegalArgumentException: Can not set org.apache.Unterhaus.Sammlungen.FastHashMap Feld org.apache.Unterhaus.validator.Feld.hMsgs zu org.apache.Unterhaus.Sammlungen.FastHashMap an sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146) an sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150) bei sun.reflektieren.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) at java.lang.reflektieren.Feld.set(Field.java:657) at org.jboss.marshalling.cloner.SerializingCloner.storeFields(SerializingCloner.java:368) auf org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:313) am org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:253) at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134) at org.jboss.marshalling.cloner.SerializingCloner.cloneFields(SerializingCloner.java:348) auf org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:309) auf org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:253) at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134) at org.jboss.marshalling.cloner.SerializingCloner$StepObjectInput.doReadObject(SerializingCloner.java:836) auf org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:37) at org.jboss.marshalling.MarshallerObjectInputStream.readObjectOverride(MarshallerObjectInputStream.java:57) bei java.io.ObjectInputStream.readObject(ObjectInputStream.java:344) bei java.util.HashMap.readObject(HashMap.java:1030) bei sun.reflektieren.GeneratedMethodAccessor119.invoke(Unknown Source) bei sun.reflektieren.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflektieren.Methode.invoke(Method.java:597) at org.jboss.marshalling.reflektieren.SerializableClass.callReadObject(SerializableClass.java:218) at org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:302) auf org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:253) at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134) at org.jboss.marshalling.cloner.SerializingCloner.cloneFields(SerializingCloner.java:348) auf org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:309) auf org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:253) at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134) at org.jboss.marshalling.cloner.SerializingCloner.cloneFields(SerializingCloner.java:348) auf org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:309) auf org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:285) auf org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:253) at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134) at org.jboss.marshalling.cloner.SerializingCloner.cloneFields(SerializingCloner.java:348) auf org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:309) auf org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:253) at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134) at org.jboss.als.ejb3.remote.LocalEjbReceiver.clone(LocalEjbReceiver.java:268) ... 42 weitere
Code:
saveAction.java
protected void newSavedSearch(final SrchFrmDelegate sfd,
final String userId, final HttpServletRequest request,
final SaveSearchForm form) throws RemoteException,
UsrNotFoundException {
BseSrchValue srchValue = SrchResultsAction.retrieveSrchCriteria(request);
FrmLayout frmLayout = (FrmLayout) request.getSession().getAttribute(
FrmBuilderAction.FRM_LAYOUT_KEY);
Integer resultCount = null;
SrchResultValue srchResult = SearchResultsAction.retrieveSearchResults(request);
if (srchResult != null) {
resultCount = new Integer(srchResult.getTotal());
}
sfd.saveSearch(userGuid,
form.getTitle(),
form.getDesc(),
form.getNewTtle(),
srchValue,
frmLayout,
resultCount,
form.getSearches());
}
SrchFrmDelegate.java
/**
* Reference to the remote interface.
*/
private SrhFrmFacadeRemote srhFacadeRemote;
public String saveSearch(final String userId, final String srchTtle,
final String srchDesc, final Boolean newTtle,
final BsSearchValue srchValue, final FrmLay frmLay,
final Integer resultCount, final List alerts)
throws UsrNotFoundException,
RemoteException {
return srhFacadeRemote.saveSearch(userId, srchTtle,
srchDesc, newTtle, srchValue, frmLay,
resultCount, alerts);
}
SrchFrmFacadeRemote.java
/**
* Remote interface for SrchFrmFacade.
*/
public java.lang.String saveSearch( java.lang.String userId,java.lang.String srchTtle,java.lang.String srchDesc,java.lang.Boolean newTtle,com.common.search.BsSearchValue srchValue,com.common.search.advanced.FrmLay frmLay,java.lang.Integer resultCount,java.util.List alerts ) throws com.common.admin.UserNotFoundException, java.rmi.RemoteException;
- Kannst du die bit des Codes, die den Fehler verursacht?
- Ich habe den code Hinzugefügt, GHC
- GHC, Der Fehler Tritt nur nach der Kontrolle geht von der Methode saveSearch() in SrchFrmFacadeRemote.java
Du musst angemeldet sein, um einen Kommentar abzugeben.
Objekte, die als Parameter übergeben oder als Antwort auf remote-Aufrufe müssen Serialisierbar sein.
Beispiel:-
Nachdem Sie die Gläser unten im Jboss-7-Module & Veränderung der standalone.xml Datei entsprechend, Problem ist behoben.
In Standalone.xml
In EJB3 dieser Fehler kann auch auftreten, wenn Sie den Aufruf einer EJB-Session-Bean über einen
@Remote
Blick auf die EJB. Je nach Gestaltung und Nutzung Szenario, können Sie zum aufrufen der EJB über eine@Local
- Schnittstelle. Mit der@Local
- Schnittstelle beseitigt die Anforderung für den ParameterSerializable
aber dies kann sich deutlich ändern Ihr design. Wenn Sie mit der@Local
view ist eine option für Sie, können Sie einfach fügen Sie die@Local
zum EJB-ohne entfernen der@Remote
.vergessen Sie nicht, serialVersionUID zu lassen, Klasse serialisiert werden und wiederhergestellt (generiert, die als getter oder setter)