上一篇日志已经将一个War bundle注册成一个Spring Bean。现在我们需要bundle之间能通信,即能相互调用对方提供的服务。
先看一下MainServcieImpl目前的内容,因为后面该类的内容需要做更改:
我们增加一个将input反转的方法,但是这个方法是别的bundle里面的service提供的,从而我们必须再新建一个plug-in工程。
这是新工程的目录结构:
现在来看GWTPartition.war的目录结构:
为了增加对spring的支持,需要更改配置文件web.xml:
此时需要根据用到的类引入相关的包,例如:org.springframework.osgi.web.context.support,同时必须增加配置文件mainServlet-servlet.xml这个配置文件,注意名称mainServlet与上面<servlet-name>元素的值必须一致。同时还需要一个applicationContext.xml文件,名字也是固定的。在mainServlet-servlet.xml这个配置文件里面,将配置一个controller来转发请求:
下面是applicationContext.xml文件的内容,相当于bean.xml:
下面是GwtRpcController的内容:
这两幅图片是同一个类的代码,因为在一个截图里面显示不全。在这里,动态注册mainService这个field,并将请求转发到个field引用的service里面去。
此时MainServiceImpl的构造方法为(注意上述applicationContext.xml与mainServlet-servlet.xml中constructor-arg):
而此时greetServer方法的内容(片段)为:
在这里就调用ReverseService的reverse方法。
最后运行结果图:
Best Regards
胡靖飞