Silverlight訪問Apache服務器(Tomcat,Geronimo)中部署的Webservice

作者: duicky  來源: 博客園  發布時間: 2010-12-03 13:51  閱讀: 3184 次  推薦: 0   原文鏈接   [收藏]  

  開發環境

  Vs2010 、 Silverlight4 、 Java Jdk1.6 U 21 、 Apache-tomcat-6.0.20 、 Myeclipse8.5 、 Apache-ant-1.8.1 、 Axis2 、 Geronimo-tomcat6-javaee5-2.2

  下載地址:

  Apache-tomcat : http://apache.ziply.com/tomcat/

  Apache-ant   : http://apache.ziply.com/ant/

  Axis2 : http://apache.ziply.com/ws/axis2/

  Geronimo-tomcat : http://apache.ziply.com/geronimo/

  編寫 Webservice

  其實就是寫個 java class ,步驟如下:

  1、 使用 Myeclipse 新建個 java project

  2、 在工程的 src 目錄下新建個 java class (注:沒有用 package ) SlWebServiceHelloWorld.java ,內容如下:

  3、 找到這個 SlWebServiceHelloWorld 的 class 文件 ,發布的時候有用。

  SlWebServiceHelloWorld.java

 
public class SlWebServiceHelloWorld {
/**
* Webservice 業務方法
*
*
@return " XXX , Hello World!"
*/
public String sayHelloWorld(String name) {
return name + ", Hello World!" ;
}

  生成 Axis2

  Axis2 是一套嶄新的 WebService 引擎,該版本是對 Axis1.x 重新設計的產物。 Axis2 不僅支持 SOAP1.1 和 SOAP1.2 ,還集成了非常流行的 REST WebService ,同時還支持 Spring 、 JSON 等技術。我們直接使用現成的 Axis2 War 文件。

  1、  將 下載好的 axis2-1.5.1 和   apache-ant-1.8.1 解壓。

  2、  通過 運行 , 進入 axis2-1.5.1\webapp 文件夾下

  3、  配置好 Ant!

  set ANT_HOME= D:\ apache-ant-1.8.1   (Ant 解壓的路徑 )

  set PATH=%ANT_HOME%\bin  

  4、  打開 axis2-1.5.1\webapp\WEB-INF , 在文件夾下新建個 名為 pojo 的文件夾,把SlWebServiceHelloWorld.class (上步編寫好 java 類的 Class 文件) 粘帖到這:

  5、  運行 ant 命令   , 自動在上級添加 dist 文件夾 ,生成 axis2.war。

  6、  打開 axis2-1.5.1\dist 文件夾, 你會發現已經有 axis2.war 存在。

  發布 Axis2

  眾所周知,若要允許 Silverlight 控件訪問其他域上的服務,該服務必須明確選擇允許跨域訪問。 Silverlight 4 支持兩種不同的機制供服務選擇跨域訪問:

  在承載服務的域的根目錄中放置一個 clientaccesspolicy.xml 文件,以配置服務允許跨域訪問。

  在承載服務的域的根目錄中放置一個有效的 crossdomain.xml 文件。

  我們這邊使用的是 clientaccesspolicy.xml 。內容如下:

  clientaccesspolicy.xml

 
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="SOAPAction">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>

  (1) 使用 Tomcat 發布

  1 、把clientaccesspolicy.xml 放在apache-tomcat-6.0.20\webapps\ROOT 下。

  2 、把 axis2.war 文件 復制 粘帖到 Tomcat 的 webapps   文件夾下: apache-tomcat-6.0.20\webapps\axis2.war

  1、 啟動 Tomcat ( apache-tomcat-6.0.20\bin\startup.bat )

  2、 在瀏覽器中輸入: http://localhost:8080/axis2/services/listServices   結果如下:

  你會發現有你部署上的 SlWebServiceHelloWorld 。

  3、 點擊頁面中的 SlWebServiceHelloWorld ,你能看見 部署的 webservice  結果如下:

  4、 測試你的 webservice 運行

  http://localhost:8080/axis2/services/SlWebServiceHelloWorld/sayHelloWorld?name=” Sweet ”

  結果如下:

  恭喜你, webservice 部署 ok !

  (2)使用 Geronimo 發布

  1、 把 clientaccesspolicy.xml 放在 geronimo-tomcat6-javaee5-2.2\repository\org\apache\geronimo\configs\welcome-tomcat\2.2\welcome-tomcat-2.2.car 下 。

  2、 運行 Geronimo 服務,并登陸后臺http://localhost:8080/console/portal/Welcome。

  UserName:system

  PassWord :manager

  3、 點擊“ 部署新應用” 部署 Axis2.war。

  4、部署成功 點擊“ web 應用程序”, 在瀏覽器中運行 http://localhost:8080/axis2/services/listServices。

  效果如下:

  和 Tomcat 一樣 ,你會發現有你部署上的 SlWebServiceHelloWorld 。

  5、 點擊頁面中的 SlWebServiceHelloWorld ,你能看見 部署的 webservice  結果如下:

  和 Tomcat 部署一樣。

  6、 測試下運行的 webservice,http://localhost:8080/axis2/services/SlWebServiceHelloWorld/sayHelloWorld?name="Geronimo "。

  因為 Tomcat 和 Geronimo 部署的項目都一樣 , 所以 效果都一樣。

  Silverlight 測試 Webservice

  1、  新建個 silverlight 項目 ,命名為: SlApacheWebServiceTest

  2、  Add  Service Reference ,填入http://localhost:8081/axis2/services/SlWebServiceHelloWorld?wsdl。

  命名為: ApacheSR   如下:

  3、  設計界面,編寫方法。 因為用于測試,所以界面 比較隨便。效果如下:

  左邊文本框填入信息,右邊文本框接收信息。

  Xaml

 
< UserControl x : Class ="SlApacheWebServiceTest.MainPage"
xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns : x ="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns : d ="http://schemas.microsoft.com/expression/blend/2008"
xmlns : mc ="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc : Ignorable ="d"
d : DesignHeight ="300" d : DesignWidth ="800">

< Grid >
< TextBox x : Name ="tbName"
Height ="79"
Width ="200"
Margin ="131,81,469,139" />
< Button x : Name ="btnSend"
Content =" 獲 ? 取 ¨? 信 ? 息 ¡é"
Height ="100"
Width ="450"
Click ="btnSend_Click"
Margin ="131,167,205,33" />
< TextBox x : Name ="tbMessage"
Height ="79"
Width ="200"
Margin ="395,81,205,139" />
</ Grid >
</ UserControl >

  Cs

 
namespace SlApacheWebServiceTest
{

public partial class MainPage : UserControl
{

public MainPage()
{
InitializeComponent();
}


private void btnSend_Click(object sender, RoutedEventArgs e)
{
ApacheSR.SlWebServiceHelloWorldPortTypeClient ws
= new ApacheSR.SlWebServiceHelloWorldPortTypeClient ();
ws.sayHelloWorldAsync(tbName.Text.Trim());
ws.sayHelloWorldCompleted
+= new EventHandler <ApacheSR.sayHelloWorldCompletedEventArgs >(ws_sayHelloWorldCompleted);
}


void ws_sayHelloWorldCompleted(object sender, ApacheSR.sayHelloWorldCompletedEventArgs e) {
tbMessage.Text
= e.Result.ToString();
}
}
}

  4、  F5 運行,輸入 Sweet , 得到結果 Sweet, Hello World! 。 效果如下:

  測試 Pass ! 

  (注意:我使用的 Tomcat 端口為 8081 ,大家注意自己的端口!

  跨域文件 clientaccesspolicy.xml 的路徑:

  Tomcat : apache-tomcat-6.0.20\webapps\ROOT

  Geronimo :geronimo-tomcat6-javaee5-2.2\repository\org\apache\geronimo\configs\welcome-tomcat\2.2\welcome-tomcat-2.2.car  )

0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()