连接应用程序派遣题之一,因与和mvp4g
-
03-10-2019 - |
题
我有一些问题有关的应用程序派遣和题之一,因.我使用的题之一,因2.0的应用程序派遣情况1.1.0快照,mvp4g情况1.1.0和杜松子酒1.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
}
我读了上应用程序分开始,我必须提供之间的结合我的行动,并就处理程序,它应类似于:
public class ContactModule extends ActionHandlerModule{
@Override
protected void configureHandlers() {
bindHandler(ListContactsAction.class, ListContactsHandler.class);
}
}
但是我有问题线这一切题之一,因,因为这个例子应用程序派遣站:
public class DispatchServletModule extends ServletModule {
@Override
public void configureServlets() {
serve( "/path/to/dispatch" ).with( DispatchServiceServlet.class );
}
}
不起作用,因为没有 DispatchServiceServlet
在包。
我的问题是:
- 我应该怎么写DispatchServletModule和如何使它将(与什么我应该成为路径)
- 我应该怎么把web.xml 文件我应用能够正确地执行行动从我的主持人,其中有杜松子酒注射
DispatcherAsync
执行情况 - 我应该在哪里把我
SqlSessionFactory
提供方法(在哪个模块)能够注入SqlSessionFactory我需要它 - 我如何实例的注射器然后我可以用它在其他行动处理程序正确
我认为这是所有和我做了自己明确的。如果有什么东西不够清楚,我会尝试更加具体。
没有正确的解决方案
其他提示
你创建的一个GuiceServletConfig类?这是你设置你的派遣servlet模块以及你的行动的处理模块题之一,因.
plubic class GuiceServletConfig extends GuiceServletContextListener {
@Override
protected Injector getInjector() {
return Guice.createInjector(new HandlerModule(), new DispatchServletModule());
}
}
该HandlerModule是你的ActionHandler模块类,所以从你的代码,你会把你的ContactModule类。
你SqlSessionFactory,可以建立结对于它在你的ContactModule,与我的代码,我只有一个单一的模块设置了我所有的服务和行动处理绑定。这主要是为了简洁。
应用程序的平台框架的采用应用程序派遣叉处理rpc请求。有大量的代码,其中你可能不得不志对wtite自己,如果你认为严重的是采用调度员和题之一,因.我强烈推荐它。
首先,我同情.把这所有的一起不记录在任何一个地方。我会回答您的每一个问题。添加意见,我的答案如果目前还不清楚。
QU:我应该怎么写DispatchServletModule和如何使它将(与什么我应该成为路径)?
有一个GuiceStandardDispatchServlet类的净额。customware.应用程序.调度。服务器。题之一,因软件包;使用。我不是100%肯定为什么,但我用包括的名称,我应用程序模块,随后通过'/调度'.你可能需要试验。
public class MyServletModule extends ServletModule {
@Override protected void configureServlets() {
serve("/com.my.module.name/dispatch")
.with(GuiceStandardDispatchServlet.class);
}
}
QU:我应该怎么把web.xml 文件我应用能够正确地执行行动从我的主持人,其中有杜松子酒注射DispatcherAsync的执行?
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<filter>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>com.myapp.whatever.MyContextListener</listener-class>
</listener>
...
</web-app>
...然后你就需要一个定义方面的听众,创造了一个题之一,因注射器如下。注意到我已经包括你的ContactModule,其结合行动的处理程序。
public class MyContextListener extends GuiceServletContextListener {
@Override protected Injector getInjector() {
return Guice.createInjector(new MyServletModule(),
new ContactModule(), new SQLStuffModule());
}
}
QU:我应该在哪里把我SqlSessionFactory提供方法(在哪个模块)能够注入SqlSessionFactory我需要它吗?
注意我的包括一个新的SQLStuffModule在前一段代码;这将是一个良好的把你的SqlSessionFactory结合。有没有伤害具有多个模块,我找到它让的各种关切很好地隔开。
QU:我如何实例的注射器然后我可以用它在其他行动处理程序是否正确?
服务器的端,请参阅MyContextListener代码段所述。
对客户的侧,你会需要一个自定义的喷口是这样的:
@GinModules(StandardDispatchModule.class, MyClientModule.class)
public interface MyGinjector extends Ginjector {
MyWidgetMainPanel getMainPanel();
}
...你可以结合你的MVP的东西在一个自定义杜松子酒模块如下。我很抱歉,我不熟悉mvp4g,但我认为你需要线的意见和主持人在一起的模块课。
public class MyClientModule extends AbstractGinModule {
@Override protected void configure() {
bind(...).to(...);
...
}
}