Tuscany SCA 发布Web Service

来源:互联网 发布:ug creo 编程 编辑:程序博客网 时间:2024/06/11 21:53

Tuscany可以简单地通过配置文件来发布web service。(工具eclipse 3.5)

1. 新建动态web项目,指定classpath编译后的存储路径为WebContent/WEB—INF/classes。(可右键项目,属性,Java Build Path,Source修改)将Tuscany的jar包都复制到webContent/Web-INF/lib下(此处使用的Tuscany 1.6,最新版本是2.0以上,不要提醒我说有些jar包不是必须的...都加进去也不多,省的到处提示你报错)。

2. 新建接口、实现类等。

     User实体类

[java] view plaincopy
  1. package tuscany.webService.service;  
  2. public class User {  
  3.     private String name;   
  4.     public String getName() {   
  5.         return name;   
  6.     }   
  7.   
  8.     public void setName(String name) {   
  9.         this.name = name;   
  10.     }   
  11. }  

IUserservice服务接口

[xhtml] view plaincopy
  1. package tuscany.webService.service;  
  2. import java.util.List;   
  3. import org.osoa.sca.annotations.Remotable;  
  4. //测试发现是必须的  
  5. @Remotable  
  6. public interface IUserservice {   
  7.     List<User> getAll();   
  8. }  

IUserservice接口实现类-UserServiceImpl.java

[xhtml] view plaincopy
  1. package tuscany.webService.service;  
  2. import java.util.*;  
  3. // implements IUserservice 可以不写,在构件配置中写出即可  
  4. public class UserServiceImpl{  
  5.     private static List<User> users = null;  
  6.     public List<User> getAll() {  
  7.         User user1=new User();  
  8.         user1.setName("user1");  
  9.         User user2=new User();  
  10.         user2.setName("user2");  
  11.         users=new ArrayList<User>();  
  12.         users.add(user1);  
  13.         users.add(user2);  
  14.         return users;   
  15.     }  
  16. }  

      给出文件结构图,便于设置发布文件时对照观看-

3. 配置发布文件

3.1 构件配置文件(.composite)-构件配置文件是用于指出发布的服务(service)和实现该服务的组件(component)

在classpath(根路径下)新建User.composite

[xhtml] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"   
  3.     xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0" name="UserComposite"   
  4.     targetNamespace="http://test.tuscany.webService">  
  5.     <!--composite元素中name为该构件的名,在sca-contribution部署composite时被使用  
  6.         此处的targetNamespace与sca-contribution中的targetNamespace必须相同  -->  
  7.     <!--组件,实现了服务UserService-->  
  8.     <component name="UserServiceImpl">   
  9.         <implementation.java class="tuscany.webService.service.UserServiceImpl"></implementation.java>   
  10.     </component>   
  11.       
  12.     <!--对外提供的服务-->  
  13.     <service name="UserService" promote="UserServiceImpl">   
  14.         <interface.java interface="tuscany.webService.service.IUserservice" />  
  15.         <!--定义了发布服务绑定的协议,使用webservice-->  
  16.         <binding.ws></binding.ws>           
  17.     </service>   
  18. </composite>  

补充:也可以在src下新建一文件夹或者包用于存放.composite文件,前提就是需要保证编译后的文件会被放到WEB-INF/classes下面元素composite中的name为构件名

3.2 部署文件(sca-contribution.xml),放在WebContent/META-INF下。

[xhtml] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"          xmlns:tuscanyWeb="http://test.tuscany.webService">  
  3.               <!-- 指出要部署的构件,格式为-命名空间别名:构件名 -->  
  4.               <deployable composite="tuscanyWeb:UserComposite"/>   
  5. </contribution>  

补充:.composite中的targetNamespace=sca-contribution.xml中的xmlns:tuscanyWeb的值!xmlns:tuscanyWeb可以随便命名,只是用来代表命名空间,在deployable元素中使用,deployable元素中指出的构件名为.composite文件中composite元素的name属性值。无需指出composite文件的存储位置,tuscany会自动搜索。

4. web.xml中配置Tuscany拦截器

[xhtml] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">  
  3.   <display-name>TuscanyWebService</display-name>  
  4.   <filter>  
  5.     <filter-name>tuscany</filter-name>  
  6.     <filter-class>org.apache.tuscany.sca.host.webapp.TuscanyServletFilter</filter-class>  
  7.   </filter>  
  8.   <filter-mapping>  
  9.     <filter-name>tuscany</filter-name>  
  10.     <url-pattern>/*</url-pattern>  
  11.   </filter-mapping>  
  12. </web-app>  

 将应用发布到应用服务器上,输入http://localhost:8080/TuscanyWebService/UserService?wsdl,即可看到服务UserService的WSDL描述文件,表示web服务发布成功,可以外部调用。(本例是使用的应用服务器为tomcat6.0)。应用发布可以打包成war包放到tomcat/webapps下,启动startup.bat。在eclipse中,直接右键项目,run as,  run on server。


0 0
原创粉丝点击