У меня есть вопросы относительно gwt-dispatch и guice. Я использую Guice 2.0, GWT-диспетчерская 1.1.0 снимок, mvp4g 1.1.0 и джин 1,0Подключение gwt-dispatch с направляющими и mvp4g
Прежде всего, я определил простое действие, результат и обработчик:
ListContactsAction.java
public class ListContactsAction implements Action<ListContactsResult>{
public ListContactsAction() {
}
}
ListContactsResult.java
public class ListContactsResult implements Result {
private List<Contact> contactList;
public ListContactsResult() {
}
public ListContactsResult(List<Contact> contactList) {
this.contactList = contactList;
}
public List<Contact> getContactList() {
return contactList;
}
}
ListContactsHandler.java
public class ListContactsHandler implements ActionHandler<ListContactsAction, ListContactsResult>{
@Inject
private SqlSessionFactory factory;
public Class<ListContactsAction> getActionType() {
return ListContactsAction.class;
}
public ListContactsResult execute(ListContactsAction a, ExecutionContext ec) throws DispatchException {
// some code using SqlSessionFactory and returning ListContactResult
// with list of contacts
}
public void rollback(ListContactsAction a, ListContactsResult r, ExecutionContext ec) throws DispatchException {
/* get action - no rollback needed */
}
}
В предыдущей версии моего приложения, который с помощью службы RPC вместо команды, у меня был метод, который обеспечивал SqlSessionFactory
для инъекций, что-то вроде этого:
@Provides
public SqlSessionFactory getSqlSessionFactory(){
// some code here
}
я прочитал на GWT-отправке при получении начал, что я должен обеспечить связывание между моим действием, и это обработчик, который должен выглядеть примерно так:
public class ContactModule extends ActionHandlerModule{
@Override
protected void configureHandlers() {
bindHandler(ListContactsAction.class, ListContactsHandler.class);
}
}
Но у меня есть проблемы с проводкой все это с Guice, потому что этот пример из GWT-диспетчерский сайте:
public class DispatchServletModule extends ServletModule {
@Override
public void configureServlets() {
serve("/path/to/dispatch").with(DispatchServiceServlet.class);
}
}
не работает, т.к. DispatchServiceServlet
в пакете.
Мои вопросы:
- Как я должен написать DispatchServletModule и как сделать это происходит (с тем, что я должен служить путь)
- что я должен поставить в файле web.xml мое приложение к уметь правильно выполнять действия от моего ведущего, который имеет GIN впрыскивается
DispatcherAsync
реализацию - где я должен поставить свою
SqlSessionFactory
, обеспечивающий метод (в котором модуль), чтобы иметь возможность вводить SqlSessionFactory, где мне это нужно - Как создайте экземпляр инжектора, чтобы я мог использовать его в других обработчиках должным образом.
Я думаю, что это все, и я ясно дал понять. Если что-то недостаточно ясно, я постараюсь быть более конкретным.
Похоже, что на стороне сервера работает, но на стороне клиента mu нет. У меня есть Ginjector с моим модулем, предоставляющим Mvp4g и стандартный модуль gwt-dispatch, обеспечивающий реализацию DispatchAsync. Но похоже, что инжектор вводит нулевой экземпляр, так как я получаю null, у меня нет свойств в моем отладке firebug. И когда я отключу фрагмент кода, который использует диспетчер, приложения работают:/Я не знаю, как это решить. – jjczopek