发表于: 2018-01-29 21:41:24

1 785


今日完成

1.继续配置spring+Tuscany。还是没有成功,spring也降级成3.0.5 了,

(1)配置组件与服务

<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
         xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
         name="ScaDemo" targetNamespace="http://ScaDemo">

   <component name="StuComponent">
       <implementation.spring location="spring/spring-tuscany.xml"/>
       <service name="ScaDemo1">
           <tuscany:binding.rmi uri="https://127.0.0.1:8088/ScaDemo1"/>
       </service>
   </component>

</composite>

(2)在spring中申明这个服务

<sca:service name="ScaDemo1" type="lujing.service.ScaDemo" target="ScaDemo"/>

<bean id="ScaDemo"  class="lujing.serviceimpl.ScaDemoImpl"/>

<import resource="applicationContext-dao.xml"/>

网上说tuscany的容器和spring的容器不是同一个。所以这里要import一下DAO。

2.在主方法中启动。

ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext("spring/spring-tuscany.xml");
   Node node NodeFactory.newInstance().createNode("spring/sac1.composite");
   node.start();
   System.out.println("service启动");
}

最开始是报错spring的配置文件的约束的版本号和实际的版本号不一致,改一下就可以了。

然后配置文件也不一样了,3.0.5的spring,引入properties文件的方式也不一样。

<!-- 配置加载数据源文件 -->
<!--<context:property-placeholder location="classpath:db.properties" />-->
<bean id="propertiesConfigurer" class= "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:db.properties"/>
</bean>

xml的解析约束也不一样了。

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:context="http://www.springframework.org/schema/context"
     xmlns:aop="http://www.springframework.org/schema/aop"
     xmlns:tx="http://www.springframework.org/schema/tx"
     xsi:schemaLocation="http://www.springframework.org/schema/beans
                   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                   http://www.springframework.org/schema/context
                   http://www.springframework.org/schema/context/spring-context-3.0.xsd
                   http://www.springframework.org/schema/aop
                   http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
                   http://www.springframework.org/schema/tx
                   http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
  <context:component-scan base-package="lujing"/>

启动试一下。

还是不行呢。

还是写一个demo找点成就感,学习一下sca构建的过程,将一个个的服务申明成service。

包含 4 个服务的 SCA 计算器

2.写一个计算器的demo,能够跑通了。

<composite
       xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
       xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
       targetNamespace="http://com.jnshu.service"
       name="Calculator">
   <!--  xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"-->
       <!--xmlns="http://www.osoa.org/xmlns/sca/1.0"-->

   <service name="Calculator" promote="Calculator">
       <interface.java interface="com.jnshu.service.ICalculator"/>

       <!--<tuscany:binding.rmi port="8099" host="localhost" serviceName="Calculator" />-->
       <binding.ws uri="http://127.0.0.1:8099/Calculator"/>
   </service>

   <component name="Calculator">
       <implementation.java class="com.jnshu.service.Calculator" />
       <reference name="add" target="AddComponent"/>
       <reference name="subtract" target="SubtractComponent"/>
       <reference name="multiply" target="MultiplyComponent"/>
       <reference name="divide" target="DivideComponent"/>
   </component>
   <component name="AddComponent">
       <implementation.java class="com.jnshu.service.Add" />
   </component>
   <component name="SubtractComponent">
       <implementation.java class="com.jnshu.service.Subtract" />
   </component>
   <component name="MultiplyComponent">
       <implementation.java class="com.jnshu.service.Multiply" />
   </component>
   <component name="DivideComponent">
       <implementation.java class="com.jnshu.service.Divide" />
   </component>

</composite>


3.整合spring

(1)配置,没变。服务端

public class TuscanyRun {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-tuscany.xml");
       Node node = NodeFactory.newInstance().createNode("Sac1.composite");
       node.start();
       System.out.println("service启动");

(2)客户端

public static void main(String[] args) {
try {
ScaDemo xx= (ScaDemo) Naming.lookup("//127.0.0.1:8088/ScaDemoService");
       System.out.println(xx.sayHi("nishuoxingbuxing"));
   } catch (NotBoundException e) {
e.printStackTrace();
   } catch (MalformedURLException e) {
e.printStackTrace();
   } catch (RemoteException e) {
e.printStackTrace();
   }
}

放在一个项目中没问题了


(2)尝试放在两个项目中试一试,这个地方有点奇怪。composite没发正常编译进classes里面,手动放进去就可以拉。

(3)用两个项目链接。把就扣拷贝过来,主方法还是一样的,这样就可以拉。


明日计划

1.web 和 service分离。

2.任务9完成

遇到问题

收获

1.本地跑通了tuscany.







返回列表 返回列表
评论

    分享到