Tuscany SCA 發佈Web Service

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。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章