发表于: 2017-11-15 23:26:58

1 853


今天完成的任务:

1.今天理解一下tuscany中代码的含义。

在我们使用tuscany的时候,会将以前的Service接口全部都分开,每一个接口对应一个实现类,最后有一个总的接口和实现类来被调用,就像下面的这个,每一个接口都分开,然后再汇总在CalculatorService 中。这样虽然接口和实现类的文件变多了,但是这样进一步的降低了耦合,需要修改接口的时候,只要改一下就好了,不需要去做很多改动。

看一下配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<composite
xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
          
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
          
targetNamespace="http://sample"
          
xmlns:sample="http://sample"
          
xmlns:scallop="http://scallop/xmlns/sca/1.1"
          
name="Calculator">
    <component
name="CalculatorServiceComponent">
        <implementation.java
class="comNaNteng.service.CalculatorServiceImpl"/>
        <reference
name="addService" target="AddServiceComponent" />
        <reference
name="multiplyService" target="MultiplyServiceImpl"/>
    </component>
    <component
name="AddServiceComponent">
        <implementation.java
class="comNaNteng.service.AddServiceImpl"/>
    </component>
    <component
name="MultiplyServiceComponent">
        <implementation.java
class="comNaNteng.service.MultiplyServiceImpl"/>
    </component>
</composite>

配置文件里面首先是xmlns的第一个引用,一定要写的一样,后面的没什么大影响。

然后是

<composite>

<component>

</component>

</composite>

标签,这个里面的component用来将每一个接口和总的接口都注册为服务然后被调用。这样的话,就可以实现类,每一个Service都可以作为一个服务。

 

2.将简单的项目分成客户端和服务端。

远程的调用RMI

就是主要在配置文件里面加上这个,去绑定到ip和端口。

<service name="CalculatorService">
    <interface.java
interface="comNaNteng.inter.CalculatorService"/>
    <
tuscany:binding.rmi uri="rmi://127.0.0.1:9999/CalculatorRMIService"/>
</service>

然后很重要的是需要在总的接口上面加上@Remoteable注解。

不然会报错的。

这样就可以在客户端启动了,

public static void main(String[] args) throws InterruptedException {
   Node node = NodeFactory.newInstance().createNode(
"Calculator.composite");
           
node.start();
           
System.out.println("开始了");
      
    }

然后再去客户端调用,

调用的时候地址前面一定加上//,不然会找不到路径。。。

public static void main(String[] args) throws Exception {
    CalculatorService cs= (CalculatorService) Naming.lookup(
"//127.0.0.1:9999/CalculatorRMIService");
   
System.out.println(cs.add(1,2));
}

3.SpringRMI

SpringRMI和前面的也差不多,还需要在加一个Spring的配置文件。

加一个配置文件之后,可以使用注解的方法,将实现类注入到IOC中,这样就更加方便,不需要再去XXX.component中添加实现类的服务组件。只要去读取到配置文件就可以了。

<component name="CalculatorServiceComponent">
    <implementation.spring
location="spring-test.xml"/>
    <service
name="CalculatorService">
        <
tuscany:binding.rmi uri="rmi//127.0.0.1/8888/CalculatorService"/>
    </service>
</component>

spring.xml,里面自动扫描,然后注入sca服务的组件。

<context:component-scan base-package="comNaNteng"></context:component-scan>
<
sca:service name="CalculatorService" target="calculatorService" />

Spring整合tuscany确实比较难做,主要是资料很少,而且各种头文件,还有依赖都比较乱。另外还有自己的理解也是不够,所以还需要继续学习。


4.昨天日报里面大佬提出来servlet的生命周期

1.Servlet 通过调用 init () 方法进行初始化。

init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。因此,它是用于一次性初始化,就像 Applet init 方法一样。

对应了web.xml中的

<loadon-startup>1</loadon-startup>

2.Servlet 调用 service() 方法来处理客户端的请求。

service() 方法是执行实际任务的主要方法。Servlet 容器(Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。

每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GETPOSTPUTDELETE 等),并在适当的时候调用 doGetdoPostdoPutdoDelete 等方法。

 

3.Servlet 通过调用 destroy() 方法终止(结束)。

destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。

在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。

 

明天计划:

明天请假一天

遇到问题:

整合的时候一直报错解决不了,还是对tuscany理解不够啊。

收获:

在大佬帮助下把任务九Spring+tuscany整合好了。。

禅道:

http://taskNaNteng.com/zentao/task-view-10343.html



返回列表 返回列表
评论

    分享到