Я хочу использовать аннотированные классы DWR в моем проекте. Поэтому я создал 2 класса. Предположим Dwr1.java & Dwr2.javaНесколько классов DWR в web.xml (используя аннотации)
в моей web.xml я иметь следующую запись для загрузки классов:
<servlet>
<display-name>DWR Servlet</display-name>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>classes</param-name>
<param-value>
de.package.Dwr1,
de.another.package.Dwr2
</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
Proplem является то, что Dwr2 класс не получает экземпляр. Если я удалю Dwr1 из моего web.xml, Dwr2 получает экземпляр. Но если у меня есть две записи в моем web.xml, создается только экземпляр Dwr1.
Dwr1 очень простой класс:
@RemoteProxy
public class Dwr1 {
@RemoteMethod
public String getString(String key) {
return Util.GetString(key);
}
}
Dwr2 является немного более сложным, как:
@RemoteProxy
public class Dwr2 {
@RemoteMethod
public Dwr2() {
ServerUtil.registerOnFE(new UpdateClient());
}
private void updateBrowser(final String arg) {
Browser.withPage("/page.do", new Runnable() {
@Override
public void run() {
ScriptSessions.addFunctionCall("update", arg);
}
});
}
private class UpdateClient {
@Override
onRecieveUpdate(String arg) {
updateBrowser(arg);
}
}
}
Есть ли какие-либо ошибки в моих классах, или в моем web.xml? Или как я могу создать несколько классов DWR с аннотациями?
в вашем 'start()' из 'Dwr2' вы ничего не писали? –
Нет, это действительно пусто. Но я рекомендую поместить в него комментарий, который описывает, почему существует пустой метод. – Schlangguru