发表于: 2018-01-29 21:41:24
1 784
今日完成
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。
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.
评论