2014-09-04 1 views
0

SearchFacade.java는 ---, IllegalArgumentException를 EJB 매개 변수를 마샬링하지 못했습니다 org.apache.commons.collections.FastHashMap 필드

의 원격 인터페이스를 사용하여 검색 결과를 저장하는 동안 나는 아래의 오류 받고 있어요 설정할 수 없습니다

태양에서 org.apache.commons.collections.FastHashMap하는 org.apache.commons.collections.FastHashMap 필드 org.apache.commons.validator.Field.hMsgs를 설정할 수 없습니다 "EJB 매개 변수를 마샬링 할 수 없습니다." reflection.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException (UnsafeFieldAccessorImpl.java:146) at

저는 스트럿츠 1을 사용하고 있습니다. .1, xdoclet 1.2.3을 사용하는 EJB 2.1. 종속 파일을 생성하기위한 jar (필연적으로 사용). Xdoclet을 사용하여 로컬, 홈 인터페이스를 생성하는 곳.

Java 6, 내 프로젝트에서 Jboss EAP 6.1 알파.

참고 :

그래서 경이 내 원격 호출이 올입니다 제이 보스 4.0에서 실행할 때 동일한 코드가 잘 작동합니다.

어떤 도움을 환영합니다.

오류 로그

java.lang.RuntimeException가 : JBAS014154 : org.jboss에서 org.jboss.as.ejb3.remote.LocalEjbReceiver.clone (LocalEjbReceiver.java:270)에서 EJB 매개 변수를 마샬링 할 수 없습니다 org.jboss.ejb.client.EJBClientInvocationContext.sendRequest에서 .as.ejb3.remote.LocalEjbReceiver.clone org.jboss.as.ejb3.remote.LocalEjbReceiver.processInvocation (LocalEjbReceiver.java:170)에서 (LocalEjbReceiver.java:259) (EJBClientInvocationContext.java:181) at 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.handleInInvocation (Trans org.jboss.ejb에서 org.jboss.ejb.client.ReceiverInterceptor.handleInvocation (ReceiverInterceptor.java:125에서 org.jboss.ejb.client.EJBClientInvocationContext.sendRequest (EJBClientInvocationContext.java:183))에서 actionInterceptor.java:42) org.jboss.ejb.client.EJBInvocationHandler.doInvoke (EJBInvocationHandler.java:161)의 .client.EJBClientInvocationContext.sendRequest (EJBClientInvocationContext.java:183)) com.history에서 com.web.history.SearchFormDelegate.saveSearch (SearchFormDelegate.java:177에서 $ Proxy25.saveSearch (알 수없는 소스))에서 org.jboss.ejb.client.EJBInvocationHandler.invoke (EJBInvocationHandler.java:124)에서 org.apache.struts.action에서 com.dispatch.SynchronizedAction.execute에서 .SaveSearchAction.createNewSavedSearch com.history.SaveSearchAction.executeSynchronized에서 (SaveSearchAction.java:109) (SaveSearchAction.java:296) (SynchronizedAction.java:206). RequestProcessor.processActionPerform (RequestProcesso r.java:431) at org.apache.struts.action.RequestProcessor.process (RequestProcessor.java:236) at org.apache.struts.action.ActionServlet.process (ActionServlet.java:1196) at org.apache.struts 조직에서 javax.servlet.http.HttpServlet.service (HttpServlet.java:847)에서 javax.servlet.http.HttpServlet.service (HttpServlet.java:754)에서 .action.ActionServlet.doPost (ActionServlet.java:432). org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:214) at com.security.AuthenticationFilter.doFilter (AuthenticationFilter.java:672)의 apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:295) com.planetj.servlet.filter.compression.CompressingFilter에서 org.apache.catalina.core.ApplicationFilterChain.doFilter에서 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:246) (ApplicationFilterChain.java:214)에서 .doFilter (CompressingFilter.java:270) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (Ap plicationFilterChain.java:246) org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:214) at org.apache.catalina.core.org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:149) at org.jboss.as.web.security.SecurityContextAssociationValve.invoke (SecurityContextAssociationValve.java:169)의 StandardWrapperValve.invoke (StandardWrapperValve.java:230) 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.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:336) at org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:856) at org.apache. 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을 설정할 수 없습니다. 태양에서 sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException에서 sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException (UnsafeFieldAccessorImpl.java:146) (UnsafeFieldAccessorImpl.java:150)에서 org.apache.commons.collections.FastHashMap에 s.validator.Field.hMsgs. org.jboss.marshalling.cloner.SerializingCloner.storeFields (SerializingCloner.java:368) org에서 reflection.UnsafeObjectFieldAccessorImpl.set (UnsafeObjectFieldAccessorImpl.java:63)을 java.lang.reflect.Field.set (Field.java:657)에 있습니다. .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) at org.jboss.marshalling.cloner.SerializingCloner.cloneFields (SerializingCloner.java:348) at org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone (SerializingCloner.java:309) at org.jboss.marshalling. 클론 .Ser. org.jboss.marshalling.cloner.SerializingCloner.clone (SerializingCloner.java:134) at org.jboss.marshalling.cloner.SerializingCloner $ StepObjectInput.doReadObject (SerializingCloner.java:836)에서 ializingCloner.clone (SerializingCloner.java:253) java.io.ObjectInputStream.readObject (ObjectInputStream.java:344)의 org.jboss.marshalling.AbstractObjectInput.readObject (AbstractObjectInput.java:37) at org.jboss.marshalling.MarshallerObjectInputStream.readObjectOverride (MarshallerObjectInputStream.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method에서 sun.reflect.GeneratedMethodAccessor119.invoke (알 수없는 소스)의 java.util.HashMap.readObject (HashMap.java:1030). org.jboss.marshalling.reflect.SerializableClass.callReadObject (SerializableClass.java:218) at invoke (Method.java:597) at org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone (SerializingCloner.java:302) at org.jboss .marshalling.cloner.SerializingClon org.jboss.marshalling.cloner.SerializingCloner.clone (serializingCloner.java:344)의 org.jboss.marshalling.cloner.SerializingCloner.cloneFields (SerializingCloner.java:348)에서의 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) at org.jboss.marshalling.cloner.SerializingCloner.cloneFields (SerializingCloner.java:348) at org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone (SerializingCloner.java:309) at org.jboss.marshalling. cloner.SerializingCloner.initSerializableClone (SerializingCloner.java:285) 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 (S org.jboss.marshalling.cloner.SerializingCloner.initSerializableClone (serializingCloner.java:348) at org.jboss.marshalling.cloner.SerializingCloner.clone (SerializingCloner.java:253) at org.jboss.marshalling .cloner.SerializingCloner.clone org.jboss.as.ejb3.remote.LocalEjbReceiver.clone에서 (SerializingCloner.java:134) (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

/** * 원격 인터페이스에 대한 참조. */ 개인 SrhFrmFacadeRemote srhFacadeRemote;

공공 문자열 saveSearch (최종 문자열 사용자 ID, 최종 문자열 srchTtle, 최종 문자열 srchDesc, 최종 부울 newTtle, 최종 BsSearchValue srchValue, 최종 FrmLay frmLay, 최종 정수 RESULTCOUNT, 최종 목록 경고) 이 UsrNotFoundException, 는 RemoteException을 {던졌습니다 SrchFrmFacade에 대한

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

} 

SrchFrmFacadeRemote.java

/** * 원격 인터페이스를 제공합니다. */

공개 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 경고) com.common.admin.UserNotFoundException, java.rmi.RemoteException을 throw합니다.

+0

당신의 비트를 기본 게시 할 수 \ 오류를 일으키는 코드? – GHC

+0

GHC –

+0

GHC 코드를 추가했습니다. 오류는 컨트롤이 SrchFrmFacadeRemote.java의 saveSearch() 메서드에서 시작된 후에 만 ​​발생합니다. –

답변

1

Jboss 7 모듈 &에서 아래의 jar 파일을 추가하면 그에 따라 standalone.xml 파일이 변경되므로 문제가 해결됩니다.

보스-EAP-6.1.0.Alpha \ 모듈 \ 시스템 \ 층 \베이스 \ 조직 아파치 \ 커먼스 \ \ 검증 몬즈 검증-1.1.0.jar

보스-EAP-6.1.0 (α) \ 모듈 \ 시스템 \ 층 \ 조직은 컬렉션을 \ 아파치 \ 평민 \ 평민 - 컬렉션-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> 
관련 문제