2014-09-04 30 views
0

在使用SearchFacade.java的遠程接口嘗試保存搜索結果時出現以下錯誤無法編組EJB參數--- IllegalArgumentException:無法設置org.apache.commons.collections.FastHashMap字段

「無法元帥EJB參數」

無法設置org.apache.commons.collections.FastHashMap場org.apache.commons.validator.Field.hMsgs在太陽org.apache.commons.collections.FastHashMap。反射.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)at

我使用struts 1 .1,EJB 2.1使用xdoclet 1.2.3 jars生成依賴文件(這是不可避免的),使用Xdoclet生成本地,Home接口的地方..我也在使用Java 6, Jboss EAP 6.1 Alpha在我的項目中。

注:在JBoss中,4.0

所以難怪是我的遠程調用的正確運行時,相同的代碼工作正常。

任何幫助,歡迎。

錯誤日誌

了java.lang.RuntimeException:JBAS014154:無法在org.jboss.as.ejb3.remote.LocalEjbReceiver.clone(LocalEjbReceiver.java:270)在org.jboss編組EJB參數.as.ejb3.remote.LocalEjbReceiver.clone(LocalEjbReceiver.java:259)在org.jboss.as.ejb3.remote.LocalEjbReceiver.processInvocation(LocalEjbReceiver.java:170)在org.jboss.ejb.client.EJBClientInvocationContext.sendRequest (EJBClientInvocationContext.java:181)在org.jboss.ejb.client.EJBHomeCreateInterceptor.handleInvocation(EJBHomeCreateInterceptor.java:79)在org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:183)在org.jboss。 ejb.client.TransactionInterceptor.handleInvocation(跨actionInterceptor.java:42)在org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:183)在org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:125)在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 )在com.web.history.SearchFormDelegate.saveSearch(SearchFormDelegate.java:177)處的$ Proxy25.saveSearch(未知源)處的org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:124)at com.history .SaveSearchAction.createNewSavedSearch(SaveSearchAction.java:109)在com.history.SaveSearchAction.executeSynchronized(SaveSearchAction.java:296)在com.dispatch.SynchronizedAction.execute(SynchronizedAction.java:206)在org.apache.struts.action。 RequestProcessor.processActionPerform(RequestProcesso r.java:431)在org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)上的org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)在org.apache.struts .action.ActionServlet.doPost(ActionServlet.java:432)at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)at 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)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ap在org.apache.catalina.core的org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)上的plicationFilterChain.java:246)。StandardWrapperValve.invoke(StandardWrapperValve.java:230)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:102),位於org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856),位於org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336)。 coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:653)at org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:920)at java.lang.Thread.run(Thread。 java:662)導致:java.lang.IllegalArgumentException:無法設置org.apache.commons.collections.FastHashMap字段org.apache.common s.validator.Field.hMsgs to sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)at org.apache.commons.collections.FastHashMap at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)at sun。在org.jboss.marshalling.cloner.SerializingCloner.storeFields(SerializingCloner.java:368)上的java.lang.reflect.Field.set(Field.java:657)處反射.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) .jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:313)at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:253)at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner的.java:134)在org.jboss.marshalling.cloner.SerializingCloner.cloneFields(SerializingCloner.java:348)在org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:309)在org.jboss.marshalling。 cloner.Ser ializingCloner.clone(SerializingCloner.java:253)org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134)at 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)在java.util.HashMap.readObject(HashMap.java:1030)在sun.reflect.GeneratedMethodAccessor119.invoke(未知來源)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)在java.lang.reflect.Method中。 invoke(Method.java:597)at org.jboss.marshalling.reflect.SerializableClass.callReadObject(SerializableClass.java:218)at org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:302)at org.jboss .marshalling.cloner.SerializingClon在org.jboss.marshalling.cloner.SerializingCloner.cloneFields(SerializingCloner.java:348)上的org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134)上的er.clone(SerializingCloner.java:253) .jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:309)at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:253)at org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner的.java:134)在org.jboss.marshalling.cloner.SerializingCloner.cloneFields(SerializingCloner.java:348)在org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:309)在org.jboss.marshalling。在org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:134)上的org.jboss.marshalling.cloner.SerializingCloner.clone(SerializingCloner.java:253)上的cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:285)在org.jboss.marshalling.cloner.SerializingCloner.cloneFields(S erializingCloner.java:348)在org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone(SerializingCloner.java:309)在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()); 

    } 

SrchFrmDelegate。java

/** *對遠程接口的引用。 */ private SrhFrmFacadeRemote srhFacadeRemote;

公共字符串saveSearch(最終字符串userid,最後絃樂srchTtle, 最後絃樂srchDesc,最終布爾newTtle, 最終BsSearchValue srchValue,最終FrmLay frmLay, 最終整數RESULTCOUNT個,最終名單警報) 拋出UsrNotFoundException, 的RemoteException {

return srhFacadeRemote.saveSearch(userId, srchTtle, 
      srchDesc, newTtle, srchValue, frmLay, 
      resultCount, alerts); 

} 

SrchFrmFacadeRemote.java

/** * 遠程接口SrchFrmFacade。公共字符串saveSearch(java.lang.String userId,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;

+0

你能張貼的位你的代碼導致錯誤? – GHC 2014-09-04 11:31:33

+0

我已添加代碼GHC – 2014-09-04 13:27:24

+0

GHC,錯誤僅在控件從方法saveSearch()in SrchFrmFacadeRemote.java – 2014-09-04 13:50:56

回答

1

在Jboss 7模塊&中添加下面的jar之後,相應地更改standalone.xml文件,問題就解決了。

的JBoss-EAP-6.1.0.Alpha \模塊\ SYSTEM \層\基\組織\阿帕奇\公地\驗證 公地驗證-1.1.0.jar

的JBoss-EAP-6.1.0阿爾法\模塊\ SYSTEM \層\基地\組織\阿帕奇\公共\收藏 公地集合-3.2.1.jar

在Standalone.xml

<subsystem xmlns="urn:jboss:domain:ee:1.1"> 
<spec-descriptor-property-replacement>false</spec-descriptor-property-replacement> 
<jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement> 
<global-modules> 
    <module name="org.apache.commons.collections" slot="main"/> 
    <module name="org.apache.commons.validator" slot="main"/> 
</global-modules> 
</subsystem> 
相關問題