gwt-dispatchとguiceに関していくつか質問があります。Guice 2.0、gwt-dispatch 1.1.0スナップショット、mvp4g 1.1.0、およびGIN1.0を使用しています。
まず、簡単なアクション、結果、ハンドラーを定義しました。
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-dispatchの開始時に、アクションとそのハンドラーの間にバインディングを提供する必要があることを読みました。これは次のようになります。
public class ContactModule extends ActionHandlerModule{
@Override
protected void configureHandlers() {
bindHandler(ListContactsAction.class, ListContactsHandler.class);
}
}
しかし、gwt-dispatchサイトからのこの例のため、Guiceですべてを配線するのに問題があります。
public class DispatchServletModule extends ServletModule {
@Override
public void configureServlets() {
serve( "/path/to/dispatch" ).with( DispatchServiceServlet.class );
}
}
DispatchServiceServlet
パッケージにないため、動作しません。
私の質問は次のとおりです。
- DispatchServletModuleをどのように記述し、どのように実行するか(パスを提供する必要があるものを使用して)
- GINが
DispatcherAsync
実装されたプレゼンターからアクションを正しく実行できるようにするには、アプリのweb.xmlファイルに何を入れる必要がありますか SqlSessionFactory
必要な場所にSqlSessionFactoryを挿入できるように、提供メソッドをどこに配置する必要がありますか(どのモジュールに)- インジェクターをインスタンス化して、他のアクションハンドラーで適切に使用できるようにする方法
それがすべてだと思い、私は自分自身を明確にしました。何かが十分に明確でない場合、私はより具体的にしようとします。