2017-02-13 8 views
12

현재 Ghost API를 JBoss 5.1에서 JBoss 7.0 EAP 서버로 마이그레이션 중입니다.
서버에 배포 된 war에 gwt-servlet.jar을 번들로 제공했습니다.
아래 오류가 나타납니다.JBoss 7.0 - GWT - 들어오는 RPC 호출을 디스 패칭 할 때 예외가 발생했습니다.

05:11:49,068 ERROR [io.undertow.servlet] (default task-5) Exception while dispatching incoming RPC call: com.google.gwt.user.client.rpc.SerializationException: Type 'java.io.FileNotFoundException' 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 = java.io.FileNotFoundException 
     at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667) 
     at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:130) 
     at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153) 
     at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:587) 
     at com.google.gwt.user.server.rpc.RPC.encodeResponse(RPC.java:605) 
     at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:393) 
     at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:579) 
     at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:265) 
     at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:305) 
     at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
     at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) 
     at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) 
     at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) 
     at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) 
     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
     at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) 
     at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) 
     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
     at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) 
     at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) 
     at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) 
     at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) 
     at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50) 
     at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) 
     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
     at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) 
     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
     at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:285) 
     at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:264) 
     at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) 
     at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:175) 
     at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202) 
     at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:792) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 


이유는 여기 FileNotFoundException이 무엇입니까. 위의 문제를 해결하는 데 도움을주십시오.

+0

Jboss 5에 배포 할 때 동일한 전쟁이 정상적으로 작동합니다. Jboss 7의 오류의 원인은 무엇입니까? GWT RPC는 Jboss 7에서 지원됩니까? – Karthik

답변

3

건물을 El Hoss's answer에 : 당신의 GWT 클라이언트 코드에서 어딘가에

, 당신은 파일에 액세스하려는.

JBoss 5 환경에서이 파일을 사용할 수 있습니다. 파일을 사용할 수 있었기 때문에 FileNotFoundException이 생성되지 않았으므로 GWT는 해당 클래스를로드하거나 직렬화하지 않으므로 결코 실패하지 않았습니다 (진입 점에서 도달 가능한 클래스에 대해서만 수행함).

이제 JBoss 7 환경에서이 파일을 사용할 수 없습니다. 파일을 사용할 수 없으므로 FileNotFoundException이 GWT 클라이언트 코드에 생성되지만 GWT는 해당 클래스에 대해 알지 못하므로 (GWT의 Java 에뮬레이션 라이브러리에는 포함되어 있지 않음) 실패합니다.

누락 된 파일을 찾아서 다시 사용할 수있게하여 문제를 해결할 수 있습니다.

그 외에 클라이언트 코드를 리팩터링하여 에뮬레이션 라이브러리에 포함되지 않은 예외를 throw하지 않는 것이 좋습니다.

+0

감사합니다. @walen. JBoss 7 서버의 modules 디렉토리에 속성 파일을 배치하여이 문제를 해결했습니다. 하지만 응용 프로그램 특정 속성 파일을 배치해야하는 위치와 Jboss 7에서 속성 파일을 참조하는 올바른/제안 된 방법은 무엇입니까? – Karthik

+0

안녕하세요 @ 카틱, 도와 줘서 기쁩니다. JBoss 서버에 대한 경험이 없으므로 다른 질문에 도움을 드릴 수 없습니다. 죄송합니다. – walen

3
java.io.FileNotFoundException 

은 에뮬레이션 라이브러리에 포함되어 있지 않으므로 클라이언트 측에서 사용할 수 없습니다!

여기를보세요 : GWT Java emulation library

+0

그러나 JBOSS 5에서 동일한 코드가 작동했습니다. JBoss 7에서이 오류가 발생합니다. GWT 병을 사용하여 무언가를 할 수 있습니까? 나는 배포 된 전쟁에서 gwt-servlet.jar 만 포함 시켰습니다. 항아리가 없어 졌니? – Karthik