Попытка интегрировать GWT в комплект OSGi - PullRequest
0 голосов
/ 15 мая 2011

Я пытаюсь интегрировать GWT с OSGi (Equinox), чтобы предоставить веб-интерфейс для остальной части моей модульной системы.До сих пор мне удалось встроить сервлет GWT в модуль OSGi.

Я использую проект примера кода GWT, сгенерированный плагином Eclipse GWT, который состоит из 3 пакетов: клиент, сервер и общий ресурс.Класс в пакете сервера (ui.server.GreetingServiceImpl) реализует интерфейс в пакете клиента (ui.client.GreetingService), и все они находятся в одном пакете.

Когда я пытаюсь выполнить удаленный вызов процедуры изна клиентской веб-странице я получаю сообщение об ошибке:

IncompatibleRemoteServiceException: Could not locate requested interface 'ui.client.GreetingService' in default classloader

Я понимаю, что класс не был найден загрузчиком классов, но я не знаю, как это исправить.Я могу получить доступ к классам в других пакетах, запрашивая или импортируя их, но не интерфейс, который находится в том же пакете, что и реализующий класс.Кто-нибудь может указать мне правильное направление?Я гуглял часами.

Ответы [ 2 ]

2 голосов
/ 26 мая 2011

Необходимо переопределить метод 'service' из HttpServlet на вашем GreetingServiceImpl:

@Override 
protected void service(HttpServletRequest req, HttpServletResponse resp) 
        throws ServletException, IOException { 
    // Cache the current thread 
    Thread currentThread = Thread.currentThread(); 
    // We are going to swap the class loader 
    ClassLoader oldContextClassLoader = 
    currentThread.getContextClassLoader(); 
    currentThread.setContextClassLoader(this.getClass().getClassLoader()); 
    super.service(req, resp); 
    currentThread.setContextClassLoader(oldContextClassLoader); 
} 

Таким образом, приложение работает на Equinox !!

0 голосов
/ 16 мая 2011

IncompatibleRemoteServiceException означает, что вызов RPC из графического интерфейса не обнаружил интерфейс, указанный в аннотации @RemoteService.

Можете ли вы опубликовать свой проект с исходными кодами?

Кстати, вы также можете посмотреть этот проект: http://code.google.com/p/gwt-in-osgi/

...