本文讲述基于SCA(tuscany)的SOA实践,第一篇讲发布服务,tuscany支持N多协议,这里主要是针对webservice。先说一下开发环境jdk6+eclipse3.4+wst+stp+tuscany1.3.1。
1 建立一个动态web工程tuscanytest,源文件目录是src/main/java,资源文件目录是src/main/resources,web 目录是src/main/webapp,把tuscany的jar复制到src/main/webapp/WEB-INF/lib/目录下
2 接口,sca中接口可以有java和wsdl2种方法,本例使用java 定义接口 IUserservice,代码如下
以下是引用片段: package com.tuscanytest.service; import java.util.List; import org.osoa.sca.annotations.Remotable; @Remotable public interface IUserservice { //如果服务是分布式的,就需要使用@Remotable声明 List<User> getAll(); } |
3 定义User和Address类,都是简单的pojo对象,代码如下
以下是引用片段: User类 package com.tuscanytest.service; public class User { private String id; private String name; private String password; private Address address; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } } Address类 package com.tuscanytest.service; public class Address { private String street; public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } } |
4 定义IUserservice的UserServiceImpl实现类,这里只是简单的从内存中获得模拟数据,代码如下
以下是引用片段: package com.tuscanytest.service; import java.util.ArrayList; import java.util.List; public class UserServiceImpl implements IUserservice { private static List<User> users = null; static { users = new ArrayList<User>(); for (int i = 0; i < 10; i++) { User user = new User(); user.setId(“id” + i); user.setName(“name” + i); user.setPassword(“password” + i); Address address = new Address(); address.setStreet(“street” + i); user.setAddress(address); users.add(user); } } public List<User> getAll() { return users; } } |
5 在src/main/resources/下定义default.composite文件,代码如下
以下是引用片段: <?xml version=”1.0″ encoding=”UTF-8″?> <composite name=”tuscanytest” targetNamespace=”http://serivce.tuscanytest.com”> <component name=”UserServiceImpl”> <implementation.java class=”com.tuscanytest.service.UserServiceImpl”></implementation.java> </component> <service name=”UserService” promote=”UserServiceImpl”> <interface.java interface=”com.tuscanytest.service.IUserservice” /> <binding.ws></binding.ws> <!–定义了发布服务绑定的协议,使用webservice,还有其他多种协议绑定,可参考tuscany文档–> </service> </composite> |
文件最终部署到webapp/WEB-INF/classes/目录下即可。
6 定义sca-contribution.xml,代码如下
以下是引用片段: <?xml version=”1.0″ encoding=”UTF-8″?> <contribution targetNamespace=”http://serivce.tuscanytest.com” > <deployable composite=”tuscanytest:tuscanytest”/> </contribution> |
文件最终部署到webapp/META-INF/目录下即可。
7 修改webapp/WEB-INF/web.xml文件,添加如下的filter。
以下是引用片段: <filter> <filter-name>tuscany</filter-name> <filter-class>org.apache.tuscany.sca.host.webapp.TuscanyServletFilter</filter-class> </filter> <filter-mapping> <filter-name>tuscany</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
8 然后启动部署到web服务器上,访问地址http://localhost:9080/tuscanytest/UserService?wsdl,就可以看到wsdl服务描述文件
看你只需要增加一行配置,一个普通的java类就变成了web服务了。
比起axis2的复杂来说,发布服务是如此的简单 。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
如何透过业务和技术看SOA的发展
随着SOA发展的深入,各种SOA相关技术标准也随之发展和完善。面对庞大而复杂的SOA相关技术标准,我们如何来有选择的使用它们呢?
-
SOA架构下补偿模型驱动的安全苛求软件开发
随着我国高速铁路的快速发展,传统的计算机联锁软件开发方法在灵活性、可维护性、安全性以及开发效率上都显露出不足,怎样才能弥补这一不足呢?
-
浅谈基于SOA架构的服务集成技术研究
在近几年软件行业的发展中,面向服务架构(SOA)成为了当下的热门话题。那么对于SOA架构的服务集成你又了解多少?
-
浅谈SOA应用平台下的新一代中间件
随着SOA的实施,从事企业应用软件开发的建设者们面临着很多挑战。那么SOA的未来挑战有哪些呢?SOA应用平台下的新一代中间件又是怎样的呢?