2017-02-13 65 views
12

Obecnie migruję aplikacje GWT z JBoss 5.1 do serwera JBoss 7.0 EAP.
Mam w pakiecie gwt-servlet.jar w wojnie wdrożone na serwerze
Otrzymuję błąd poniżej.
JBoss 7.0 - GWT - Wyjątek podczas wysyłania przychodzącego wywołania 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) 

Dlaczego otrzymuję tutaj wyjątek FileNotFoundException. Pomóż rozwiązać powyższy problem.

+0

Ta sama wojna po wdrożeniu w Jboss 5 działa dobrze. Jaka jest przyczyna błędu w Jboss 7? Czy GWT RPC jest obsługiwany w Jboss 7? – Karthik

Odpowiedz

3

Building na El Hoss's answer:

Gdzieś w kodzie klienta GWT, próbujesz uzyskać dostęp do pliku.

W twoim środowisku JBoss 5 ten plik był dostępny. Ponieważ plik był dostępny, nigdy nie został wygenerowany FileNotFoundException, więc GWT nigdy nie próbował załadować ani przekształcić klasy w tę klasę, przez co nigdy się nie udało (robi to tylko dla klas osiągalnych z punktu wejścia).

Teraz, w twoim środowisku JBoss 7 ten plik nie jest dostępny z jakiegoś powodu. Ponieważ plik nie jest dostępny, kod GWT klienta tworzy kod FileNotFoundException, ale GWT nie wie o tej klasie (nie ma go w bibliotece emulacji Java GWT), więc nie działa.

Możesz rozwiązać problem, znajdując brakujący plik i udostępniając go ponownie.

Co więcej, byłoby lepiej, gdyby ponownie załączyć kod klienta, aby nie powodował wyjątków, które nie są zawarte w bibliotece emulacji.

+0

Dzięki @walen. Rozwiązałem problem, umieszczając plik właściwości w katalogu modułów serwera JBoss 7. Ale chciałbym wiedzieć, gdzie musimy umieścić plik właściwości aplikacji i jaki jest właściwy/sugerowany sposób odwoływania się do plików właściwości w Jboss 7? – Karthik

+0

Witam w Chatellik, cieszę się, że mogę pomóc. Nie mam doświadczenia z serwerem JBoss, więc nie mogę ci pomóc z twoim drugim pytaniem, przepraszam. – walen

3
java.io.FileNotFoundException 

nie jest częścią biblioteki emulacji i dlatego nie może być używana po stronie klienta!

Spójrz tutaj: GWT Java emulation library

+0

Ale ten sam kod działał w JBOSS 5. Jak otrzymuję ten błąd w JBoss 7. Czy to coś zrobić z słoikami GWT? Uwzględniłem tylko plik gwt-servlet.jar w rozmieszczonej wojnie. Czy przeoczyłem jakieś słoiki? – Karthik