一起谈.NET技术,Silverlight访问Apache服务器(Tomcat,Geronimo)中部署的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 应用程序”, 在浏览器中运行 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  )

时间: 2024-08-11 12:48:43

一起谈.NET技术,Silverlight访问Apache服务器(Tomcat,Geronimo)中部署的Webservice的相关文章

Silverlight访问Apache服务器(Tomcat,Geronimo)中部署的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 : ht

无法访问远程服务器tomcat中的images文件夹

问题描述 无法访问远程服务器tomcat中的images文件夹 在本地可以访问这个文件夹的!但是在远程服务器上就显示错误!!!求大神指点啊!!

一起谈.NET技术,负载均衡服务器Session共享的解决方案

在ASP.NET的程序中要使用Session对象时,必须确保页面的@page指令中EnableSessionState属性是True或者 Readonly,并且在web.config文件中正确的设置了SessionState属性. ASP.NET中Session的状态保持是由web.config文件中的标记下的标记的mode属性来决定的.该属性有四种可能的值:Off.Inproc.StateServer和SQlServer. 设为Off会禁用Session. Inproc是缺省的设置,这种模式和

在Apache Geronimo中部署Web服务

要确定某个应用服务器是否支持 Web 服务开发工作吗?Apache Geronimo 应 用服务器完全可以满足这一要求,它是 Apache Software Foundation 的最新项 目之一.Java 专家 Kunal Mittal 将通过演示如何在 Geronimo 中编写 和开发标准 J2EE Web 服务代码,向您介绍 Geronimo 的 Web 服务功能.您将学 会如何根据底层简单对象访问协议(SOAP)实现使用 Apache Axis,从而使用 Amazon Web 服务,并且

Apache 与tomcat实现分布式应用部署

一:原理 tomcat是一个web应用服务器,能够解析静态文件和动态文件(如:html.jsp.servlet等):apache是一个web server,能够解析静态文件.Tomcat作为一个独立的web服务器是可以使用的,但是它对静态文件的解析能力不如apache,所以就产生现在的web应用的分布式部署,apache+tomcat. 两者之间的通信通过workers配置(由tomcat使用Server.xml中的Connector标签定义端口port和协议protocol,workers.p

一起谈.NET技术,在.NET Workflow 3.5中使用多线程提高工作流性能

最近在工作上碰到一个性能问题,由于项目是基于SOA的架构,使得整个系统完全依赖于各种各样的Service,其中用于处理业务逻辑的Business Services全部都用.NET Workflow 3.5实现(历史原因,项目还没升级到Workflow 4).在众多的Business Service中,其中有一个的主要功能是,通过调用不同的Data Service来获取数据,然后根据业务逻辑来组织这些数据并返回给它的调用者.该Business Service的工作流(Workflow)主要包含三个

一起谈.NET技术,体验ASP.NET MVC 3中的Razor特性

1 闲话ASP.NET MVC 3 beta 不知道不觉MVC3更新了好几次了...因为一直在弄Silverlight的开发没有时间关注ASP.NET MVC.之前出preview 的时候就看了园子里的一些文章. 但是总觉得"不咋地",依赖注入早就有一套了,全局拦截器也就那么回事..好像都没有对开发效率有太大的提升...(一己之见.目前正在学习MVC3BEAT的DI). 除了RAZOR...  好吧. 现在开始动手吧! 2开工  2.1目录     在_ViewStart.cshtml

一起谈.NET技术,ASP.NET MVC验证框架中关于属性标记的通用扩展方法

之前写过一篇文章<ASP.NET MVC中的验证>,唯一的遗憾就是在使用Data Annotation Validators方式验证的时候,如果数据库是Entityframework等自动生成的文件,就没有办法使用扩展属性标记进行标记.现在已经开始有了一些其它的Asp.net MVC 验证框架,使用上跟Data Annotation Validators差不太多,但是普遍有这样的问题,如果数据库是Entityframework生成的edm文件,没有办法进行扩展属性标记. 今天在网上发现了另外一

一起谈.NET技术,在ASP.NET 2.0中数据绑定的实现方法

1.为什么ASP.NET 2.0中的数据绑定控件不需要写代码就能完成更新.删除.新建等数据操作? ASP.NET 1.x时,DataGrid等控件使用DataBinder.Eval(Container.DataItem,"ColumnName")这样的表达式可以将数据源中的数据绑定到控件上,但并不能在更新数据时自动将控件中的新值取出,更新回数据库.所以ASP.NET 2.0中的数据绑定分为两种:单向数据绑定(即表达式或ReadOnly设为True的BoundField,只提供从数据源到