惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Tor Project blog
K
Kaspersky official blog
S
Security Affairs
Hacker News: Ask HN
Hacker News: Ask HN
L
LINUX DO - 最新话题
S
Securelist
Google DeepMind News
Google DeepMind News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
N
News and Events Feed by Topic
The Last Watchdog
The Last Watchdog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
小众软件
小众软件
Vercel News
Vercel News
博客园 - 叶小钗
量子位
Help Net Security
Help Net Security
C
Cybersecurity and Infrastructure Security Agency CISA
P
Privacy & Cybersecurity Law Blog
T
The Exploit Database - CXSecurity.com
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
美团技术团队
AI
AI
V
V2EX
T
Troy Hunt's Blog
aimingoo的专栏
aimingoo的专栏
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
D
DataBreaches.Net
H
Help Net Security
V2EX - 技术
V2EX - 技术
T
Tailwind CSS Blog
宝玉的分享
宝玉的分享
MongoDB | Blog
MongoDB | Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
N
News and Events Feed by Topic
阮一峰的网络日志
阮一峰的网络日志
T
Threatpost
J
Java Code Geeks
Recent Announcements
Recent Announcements
T
The Blog of Author Tim Ferriss
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Webroot Blog
Webroot Blog
Cyberwarzone
Cyberwarzone
Google DeepMind News
Google DeepMind News
I
InfoQ
P
Proofpoint News Feed
Spread Privacy
Spread Privacy
Security Latest
Security Latest

博客园 - asheng

JavaScript UI选型及Jquery EasyUI使用经验谈 云计算风险识别 五年之痒 敏捷软件开发 嫁给程序员吧!!! Cute Editor for .NET v6.4 用户体验5大要素 【转】LINQ To XML 入门(3) 【转】LINQ To XML 入门(2) 【转】LINQ To XML 入门(1) 学写Windows Service 微软发布ASP.NET MVC框架1.0正式版 Web定时任务 CSS分类编写方法 JS中错误处理(2) JS中错误处理(1) Log4Net OWC画图表 - asheng - 博客园 好员工为什么会变坏
Java与.NET的WebServices相互调用
asheng · 2009-06-23 · via 博客园 - asheng

一:简介
本文介绍了Java与.NET开发的Web Services相互调用的技术。本文包括两个部分,第一部分介绍了如何用.NET做客户端调用Java写的Web Services,第二部分介绍了如何用Java做客户端调用.NET开发的Web Services。  
二:项目需要的工具  
WindowsXP Professial(IIS)

Eclipse3.1(已装好Tomcat axis)

VS.Net 2003

备注:下载安装Tomcat5.5.16 以及 Axis的开发包,并做相应配置。看我前一片文档。

三:用.NET做客户端调用Java写的Web Services
1.生成一个Java Web Services
使用Eclipse生成一个Web Services是非常简单的。新建一个Web工程,右键建立一个Class,名为HelloClient.java。代码如下:

java 代码:

public class HelloClient    
{    
public String getName(String name)    
{    
return "Hello,"+name;    
}    
}   

右键此文件选择"WebServices"-->"Create Web Service"即可部署为本机的一个ws。在IE浏览器中输入http://localhost:8008/testWebService/services/HelloClient可以看到已经部署了的HelloClient服务。输入http://localhost:8008/testWebService/services/HelloClient?wsdl这个服务的描述文件。

     新建一个项目(WinForm,ASP.net都可以),我在这里使用的是一个Asp.Net项目。在起始页面上放置一个文本输入框用来输入,一个标签用来显示调用Web Services的结果,放置一个按钮,用来单击调用Web Services。然后,选择添加Web 引用,URL一栏里填入http://localhost:8008/testWebService/services/HelloClient?wsdl,Web 引用的名称输入JavaWebService,单击添加引用按钮就可以了。此时,我们可以在VS.net 的Solution Explore中看到这个Web 引用。
添加代码如下:

c# 代码:

protected System.Web.UI.WebControls.TextBox txtName;    
protected System.Web.UI.WebControls.Button btnSend;    
protected System.Web.UI.WebControls.Label lblMsg;    
   
private JavaWebService.HelloClientService ws;    
private void Page_Load(object sender, System.EventArgs e)    
{    
// 在此处放置用户代码以初始化页面    
ws=new testWebService.JavaWebService.HelloClientService();    
}    
   
private void btnSend_Click(object sender, System.EventArgs e)    
{    
lblMsg.Text
=ws.getName(txtName.Text);    
}   

这样,一个.NET客户端就完成了,测试一下,工作正常,OK.

四:用Java做客户端调用.NET写的 Web Services

1. 用VS.NET新建一个Asp Web Services工程,添加一个web 服务,命名为Service1.asmx。新增一个web method,代码如下:

c# 代码:

Code

然后运行它,并利用IE进行测试成功。

2. 打开Eclipse,新建一个Web项目,添加一个JSP页面 ,命名为action_hello.jsp,输入下列代码:

java 代码:

Code

这个要比Java调用Java写的ws来的复杂。ws和Java客户端都要设置SOAPAction,否则会有异常说 System.Web.Services.Protocols.SoapException: 服务器未能识别 HTTP 标头 SOAPAction 的值


五:总结
经过两天的试验,终于从技术上明确了通过Web Services实现.net 与 java的互通是可能的。当然有几点是需要注意的:

  1. 在提供Web Services的时候,尽量使用xml schema中支持的变量类型做参数。如果使用.net 中的dataset这种类型,对于java来说解析起来将是一个灾难,当然,理论上是可以解析的。但是从效率角度来说,在Web Services与客户端交换信息的过程中,始终有一个序列化和反序列化的问题。如果使用dataset这种类型,系统还需要对它进行序列化操作,这将是一个很耗费资源的过程。而使用string类型将简单很多。

  2. 如果使用了soap header等扩展功能,例如使用了微软提供的WSE技术,它们之间的相互通信需要作特殊处理。

 引自:http://www.cnblogs.com/lzhdim/archive/2008/12/21/1359308.html

//****************************************
  by: Amen cnblogs博客  转载请注明出处
//****************************************