发表于: 2017-06-15 13:06:06

1 1273


今天完成的事情:

1、部署了好几个RMI service。也算是完成了 部署两台Service,在WEB中随机访问任意一台Service。

2、学习Tuscany。搭建demo。

3、本地重装 memcache,版本为1.1.4。

重装以后,从java客户端存入的值、用可视化工具读取时不会乱码了。

4、学习一道算法题。一个二维数组从左到右从上到下都是递增,从中查找某个数。

明天计划的事情:

1、任务9。

遇到的问题:

1、第三方API工具类 如何发布成RMI service?由于第三方API 的账密等参数、都是通过spring配置文件读取的。如下图,是任务7中自己写的一个封装了容联短信API的工具类。

<!--封装第三方接口的工具类-->
<!--容联短信-->
<bean id="ccPclient" class="utils.CCPclient">
   <property name="serverIP" value="${serverIP}" />
   <property name="serverPort" value="${serverPort}" />
   <property name="accountSid" value="${accountSid}" />
   <property name="accountToken" value="${accountToken}" />
   <property name="appId" value="${ccp_appId}" />
</bean>

其中,有5个property,所以并不能直接配置成 RMIService Exporter 。

解决办法:

那么我就新建一个名为 SMSService 的 Interface:

public interface SMSService {

HashMap<String, Object> sendSMS(String phoneNum, String templateId, String[] info);

}

再来个实现类,实现类中,持有一个CCPclient,也就是图一里配置在spring文件里的bean。

现在可以在服务端 ( springRMI-service 项目) 的 server.xml 中配置它了。

<bean id="smsService" class="service.impl.SMSServiceImpl" />
<bean id="serviceExport" class="org.springframework.remoting.rmi.RmiServiceExporter">
   <property name="service" ref="smsService" />
   <property name="serviceName" value="SMSService" />
   <property name="serviceInterface" value="com.jn.service.SMSService" />
   <property name="registryPort" value="7777" />
</bean>

-------------------------------------------------------------------------------------------------------------------

客户端的xml中也配置一下:

<bean id="smsService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
   <property name="serviceUrl" value="rmi://localhost:7777/SMSService"/>
   <property name="serviceInterface" value="com.jn.service.SMSService"/>
</bean>

客户端试着调用一下,

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("rmi-client.xml");

String[] beanDefinitionNames = context.getBeanDefinitionNames();

for (String s : beanDefinitionNames) {
System.out.println("已经实例化的bean" + s);
}
// 测试发短信 smsService
SMSService smsService = (SMSService) context.getBean("smsService");
HashMap<String, Object> result = smsService.sendSMS("17721420363", "1", new String[]{"7529", "5"});
System.out.println(result);

运行结果:一看返回信息就知道成功啦。

手机也收到短信了。


收获:

1、对spring配置文件特别是实例化bean的部分有了一定的认识。

2、了解了萝卜多项目的启动方式。service模块(服务端)不需要通过容器启动,

在main方法中调用server.start()方法就可以了。


返回列表 返回列表
评论

    分享到