lee*_*e b 2 xdoclet apache-commons struts-1 ejb-2.x jboss7.x
我在尝试使用远程界面保存搜索结果时收到以下错误SearchFacade.java
"Failed to marshal EJB parameters"
Run Code Online (Sandbox Code Playgroud)
无法将 org.apache.commons.collections.FastHashMap 字段 org.apache.commons.validator.Field.hMsgs 设置为 org.apache.commons.collections.FastHashMap at sun.reflect.UnsafeFieldAccessorImpl. throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
我正在使用 struts 1.1、EJB 2.1,使用 xdoclet 1.2.3 jar 来生成依赖文件。(这是不可避免的使用),其中我的 Local、Home 接口是使用 Xdoclet 生成的。
我还在我的项目中使用 Java 6、Jboss EAP 6.1 Alpha。
注意:相同的代码在 Jboss 4.0 中运行时工作正常
所以想知道我的远程调用是否正确。
欢迎任何帮助。
错误日志
java.lang.RuntimeException: JBAS014154: 无法在 org.jboss.as.ejb3.remote.LocalEjbReceiver.clone(LocalEjbReceiver.java:270) 处封送 EJB 参数在 org.jboss.as.ejb3.remote.LocalEjbReceiver.clone(LocalEjbReceiver) .java:259) 在 org.jboss.as.ejb3.remote.LocalEjbReceiver.processInitation(LocalEjbReceiver.java:170) 在 org.jboss.ejb.client.EJBClientInvocal.sendRequest(EJBClientInvocalContext.java:181) 在 org.jboss. ejb.client.EJBHomeCreateInterceptor.handleInitation(EJBHomeCreateInterceptor.java:79)在 org.jboss.ejb.client.EJBClientInvocal.sendRequest(EJBClientInvocalContext.java:183)在 org.jboss.ejb.client.TransactionInterceptor.handleInitation(TransactionInterceptor.java: 42) 在 org.jboss.ejb.client.EJBClientInvocalContext.sendRequest(EJBClientInvocalContext.java:183) 在 org.jboss.ejb.client.ReceiverInterceptor.handleInvocal(ReceiverInterceptor.java:125) 在 org.jboss.ejb.client.EJBClientInspirationContext .sendRequest(EJBClientInvocalContext.java:183) 位于 org.jboss.ejb.client.EJBInvocalHandler.doInvoke(EJBInvocalHandler.java:177) 位于 org.jboss.ejb.client.EJBInvocalHandler.doInvoke(EJBInvocalHandler.java:161) 处。位于 com.web.history.SearchFormDelegate.saveSearch(SearchFormDelegate.java:177) 位于 com.history.SaveSearchAction.createNewSavedSearch 的 $Proxy25.saveSearch(未知来源) 处的 jboss.ejb.client.EJBInitationHandler.invoke(EJBInvocalHandler.java:124) (SaveSearchAction.java:109)在com.history.SaveSearchAction.executeSynchronized(SaveSearchAction.java:296)在com.dispatch.SynchronizedAction.execute(SynchronizedAction.java:206)在org.apache.struts.action.RequestProcessor.processActionPerform( RequestProcessor.java:431) 在 org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) 在 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) 在 org.apache.struts .action.ActionServlet.doPost(ActionServlet.java:432) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:754) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 在 org. apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) 在 com.security.AuthenticationFilter.doFilter(AuthenticationFilter.java:672)在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) 在 com.planetj.servlet.filter.compression.CompressingFilter .doFilter(CompressingFilter.java:270) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) 在 org. apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)在org.jboss。as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve. java:97) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) 在 org.apache.coyote.http11 .Http11Processor.process(Http11Processor.java:856) 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) 在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint .java:920) 在 java.lang.Thread.run(Thread.java:662) 引起:java.lang.IllegalArgumentException:无法设置 org.apache.commons.collections.FastHashMap 字段 org.apache.commons.validator。 Field.hMsgs 到 org.apache.commons.collections.FastHashMap 在 sun.reflect.UnsafeFieldAccessorImpl. throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146) 在 sun.reflect.UnsafeFieldAccessorImpl. throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150) 在 sun.reflect.UnsafeObjectFieldAccessorImpl。设置(UnsafeObjectFieldAccessorImpl.java:63)在java.lang.reflect.Field.set(Field.java:657)在org.jboss.marshalling.cloner.SerializingCloner.storeFields(SerializingCloner.java:368)在org.jboss.marshalling .clone.SerializingCloner.initSerializedClone(SerializingCloner.java:313) 在 org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:253) 在 org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134 )在org.jboss.marshalling.cloner.SerializingCloner.cloneFields(SerializingCloner.java:348)在org.jboss.marshalling.cloner.SerializingCloner.initSerializedClone(SerializingCloner.java:309)在org.jboss.marshalling.cloner.SerializingCloner。克隆(SerializingCloner.java:253)在org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134)在org.jboss.marshalling.cloner.SerializingCloner$StepObjectInput.doReadObject(SerializingCloner.java:836)在org .jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:37) 位于 org.jboss.marshalling.MarshallerObjectInputStream.readObjectOverride(MarshallerObjectInputStream.java:57) 位于 java.io.ObjectInputStream.readObject(ObjectInputStream.java:344) 处。 util.HashMap.readObject(HashMap.java:1030)在sun.reflect.GenerateMethodAccessor119.invoke(未知来源)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)在java.lang.reflect.Method.invoke( Method.java:597) 在 org.jboss.marshalling.reflect.SerializingClass.callReadObject(SerializedClass.java:218) 在 org.jboss.marshalling.cloner.SerializingCloner.initSerializedClone(SerializingCloner.java:302) 在 org.jboss.marshalling .clone.SerializingCloner.clone(SerializingCloner.java:253) 在 org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134) 在 org.jboss.marshalling.cloner。SerializingCloner.cloneFields(SerializingCloner.java:348) 在 org.jboss.marshalling.cloner.SerializingCloner.initSerializedClone(SerializingCloner.java:309) 在 org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:253) 在 org .jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134) at org.jboss.marshalling.cloner.SerializingCloner.cloneFields(SerializingCloner.java:348) at org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner .java:309) 在 org.jboss.marshalling.cloner.SerializingCloner.initSerializedClone(SerializingCloner.java:285) 在 org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:253) 在 org.jboss.marshalling。在 org.jboss.marshalling.cloner.SerializingCloner.cloneFields(SerializingCloner.java:348) 在 org.jboss.marshalling.cloner.SerializingCloner.initSerializedClone(SerializingCloner.java:309) 处的clone.SerializingCloner.clone(SerializingCloner.java:134)在 org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:253) 在 org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134) 在 org.jboss.as.ejb3.remote.LocalEjbReceiver .clone(LocalEjbReceiver.java:268) ... 42 更多
代码:
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());
}
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
小智 5
作为参数或远程调用响应传递的对象必须是可序列化的。
例子:-
public class APIGetVerificationProofs implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
private String fileName;
private String mimeType;
private String itemId;
private String type;
.
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20065 次 |
| 最近记录: |