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

Silverlight 訪問 Apache服務器中的Webservice

開發環境

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 應用程序”   效果如下:

 

4、 在瀏覽器中運行 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

 

 

 

發佈了19 篇原創文章 · 獲贊 23 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章