论坛首页 Java企业应用论坛

让SOA落地,tuscany初体验

浏览 6141 次
精华帖 (0) :: 良好帖 (8) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-05-29  
SOA
1 安装tuscany插件 http://archive.apache.org/dist/incubator/tuscany/java/sca/1.2-incubating/updatesite/
2 建立一个java项目hello
  定义接口
package soasample;

import org.osoa.sca.annotations.Remotable;


@Remotable
public interface Hello {

	String say(String name);
}	

  定义实现类
package soasample;

public class HelloImpl implements Hello {

	@Override
	public String say(String name) {
		// TODO Auto-generated method stub
		System.out.println("Hello-->"+ "hello:" + name);
		return "hello:" + name;
	}

}

  定义文件hello.composite文件
<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
	xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
	xmlns:c="http://hello" targetNamespace="http://hello" name="hello">
	<component name="Hello">
		<implementation.java class="soasample.HelloImpl"></implementation.java>
		<service name="Hello">
			<interface.java interface="soasample.Hello"></interface.java>
			<binding.ws></binding.ws>
		</service>
	</component>
</composite>


3 建立一个java项目first
  定义接口
package soasample;

import org.osoa.sca.annotations.Remotable;

@Remotable
public interface First {

	String first();
}

  定义实现
package soasample;

import org.osoa.sca.annotations.Reference;

public class FirstImpl implements First {
	
	private Hello hello = null;

	@Override
	public String first() {
		String say = hello.say("test");
		System.out.println("First-->"+ say);
		return say;
	}

	public Hello getHello() {
		return hello;
	}

	@Reference
	public void setHello(Hello hello) {
		this.hello = hello;
	}

}	

  定义文件first.composite文件
<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
    xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
    xmlns:c="http://first"
    targetNamespace="http://first"
    name="first">
	<component name="First">
		<implementation.java class="soasample.FirstImpl">			
		</implementation.java>
		<reference name="hello" target="Hello">
			<interface.java interface="soasample.Hello"></interface.java>
			<binding.ws uri="http://192.168.204.1:8100/Hello"/>
                        <!--此处ip端口不同,注意看控制台信息修改一下-->
		</reference>
		<service name="First">
			<interface.java interface="soasample.First"></interface.java>			
			<binding.ws></binding.ws>
		</service>
	</component>
</composite>


4 启动,先启动hello项目,选中hello.composite文件 运行选择tuscany方式,启动好之后以同样方式启动first项目
  你可以看到eclipse启动了3个控制台
  OK,你可以以web service方式调用First,看看输出
    hello控制台
      Hello-->hello:test
    first控制台
      First-->hello:test
5 tuscany比spring等IOC容器更提升了一步,将协议层彻底分离
   发表时间:2008-05-30  

将协议层彻底分离是个什么意思,我不懂。

希望能有原理性质的东西能拿出来讨论下,tuscany我用过他的SDO部分,感觉不错。

不知道这一块在SOA里面处于什么样的位置。

0 请登录后投票
   发表时间:2008-05-30  
slaser 写道

将协议层彻底分离是个什么意思,我不懂。

希望能有原理性质的东西能拿出来讨论下,tuscany我用过他的SDO部分,感觉不错。

不知道这一块在SOA里面处于什么样的位置。

你用spring等IOC容器进行组件装配,这些组件都是在同一个jvm内,通过jvm直接调用的,tuscany不光支持同一个JVM内调用,还支持通过webservice/jms/rmi等等协议调用,但是对组件使用者来说不用关心这些具体协议

0 请登录后投票
   发表时间:2008-05-30  
如果规范能得到大厂商支持的话,这种模式还是很有价值的!
关注....
0 请登录后投票
   发表时间:2008-05-30  
charles qi 写道
如果规范指定的比较规范的话,这种模式还是很有价值的!
关注....

规范制定上是没问题的,这是osoa组织制定的,几乎包括了java领域的领导者(ibm bea oracle sun sap等等)
0 请登录后投票
   发表时间:2008-07-31  
SUN自己的是JBI规范,  SDO这些是IBM,BEA搞得
0 请登录后投票
   发表时间:2008-11-14  
SCA思想的确很不错。

就是不需要写 annotation就更完美了。
0 请登录后投票
   发表时间:2008-11-27   最后修改:2008-11-27
SCA规范有Sun公司的人参与

annotation体现的是一种设计在实现之前,实现是基于良好的设计的前提。
不过这也在使用的灵活上打了一个折扣
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics