реализовать RPC для виджета GWT внутри Vaadin

Я реализую службу RPC внутри Vaadin (для виджета GWT). Но проблема в том, что я пытаюсь реализовать это обычным методом, который мы используем с GWT. То есть путем расширения RemoteService. Выдает ошибку после развертывания файла войны. Я использую Maven для создания проекта и использую tomcat в качестве сервера. Есть ли обходной путь для этого Exception.

Исключение есть.

SEVERE: Servlet.service() for servlet untitled threw exception
java.lang.ClassNotFoundException: com.google.gwt.user.client.rpc.RemoteService
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:455)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:367)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1141)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1612)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
    at GXTWidgetTest.MyVaadinUI.init(MyVaadinUI.java:24)
    at com.vaadin.ui.UI.doInit(UI.java:639)
    at com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:222)
    at com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:74)
    at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41)
    at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1402)
    at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:305)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:745)

person MarterJay    schedule 06.01.2015    source источник
comment
Похоже, вы используете или, по крайней мере, импортируете com.google.gwt.user.client.rpc.RemoteService из класса Vaadin (т.е. на стороне сервера). Это клиентский интерфейс, который не должен использоваться на стороне сервера.   -  person geert3    schedule 06.01.2015
comment
Какую информацию вы имеете в виду. спс за ответ :)   -  person MarterJay    schedule 06.01.2015
comment
@ geert3, нет, я импортирую com.google.gwt.user.client.rpc.RemoteService в интерфейс на стороне клиента.   -  person MarterJay    schedule 06.01.2015
comment
Вы правы, этот интерфейс обычно также доступен на стороне сервера (для чистых приложений GWT) через gwt-servlet.jar. Но эта банка не является частью обычных приложений Vaadin. Вы можете попробовать развернуть его вместе с вашим приложением, не уверен, что это сломает другие вещи Vaadin.   -  person geert3    schedule 06.01.2015
comment
@ geert3, извините, я по ошибке реализовал этот интерфейс в одном из своих серверных классов. Спасибо за помощь. Удалив эту реализацию, я смог решить исключение. но теперь я не могу получить данные со стороны сервера. Спасибо за помощь :)   -  person MarterJay    schedule 06.01.2015
comment
Пожалуйста, задайте для этого новый вопрос, предоставив как можно больше информации. Также, пожалуйста, примите (т.е. поставьте галочку рядом с ответом, который решает ваш текущий вопрос.   -  person geert3    schedule 06.01.2015


Ответы (1)


Похоже, вы используете или, по крайней мере, импортируете com.google.gwt.user.client.rpc.RemoteService из класса Vaadin (т.е. на стороне сервера). Это клиентский интерфейс, который не должен использоваться на стороне сервера.

person geert3    schedule 06.01.2015