一:简介
本文介绍了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。代码如下:
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 引用。
添加代码如下:
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,代码如下:
//指定SoapAction
[SoapRpcMethod(Action="http://www.zjh.com/Rpc",RequestNamespace="http://www.zjh.com/SU",ResponseNamespace="http://www.zjh.com/SU")]
[WebMethod]
public string getName(string name)
{
return "Hello"+name;
}
然后运行它,并利用IE进行测试成功。
2. 打开Eclipse,新建一个Web项目,添加一个JSP页面 ,命名为action_hello.jsp,输入下列代码:
<%@page pageEncoding="GBK" contentType="text/html; charset=GBK" %>
<%@page import="org.apache.axis.client.Call"%>
<%@page import="org.apache.axis.client.Service"%>
<%@page import="javax.xml.namespace.QName"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
<title></title>
</head>
<body>
<%
request.setCharacterEncoding("GBK");
String name=request.getParameter("name");
String endpoint="http://localhost/HelloClient/Service1.asmx";
Service service = new Service();
Call call = (Call)service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName("http://www.zjh.com/SU","getName"));
call.addParameter("name",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://www.zjh.com/Rpc");
String res =(String)call.invoke(new Object[]{name});
out.print(res);
%>
</body>
</html>
这个要比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技术,它们之间的相互通信需要作特殊处理。可以看我下一篇文章。
分享到:
- 2007-04-23 10:11
- 浏览 2630
- 评论(0)
- 论坛回复 / 浏览 (0 / 4885)
- 查看更多
相关推荐
"一个完全免费的WEB打印插件控件,支持:C#/vb.net/asp/PHP/JSP,也有实例" 提供了一个解决方案,允许开发者在各种Web应用平台上实现便捷的打印功能。 这个插件控件兼容多种编程语言,如C#、VB.NET、ASP、PHP和JSP,...
【Java/.NET程序员简历模版】是一个为求职者提供的标准参考模版,主要适用于寻找Java或.NET软件工程师职位的专业人士。这份简历展示了应聘者的基本信息、教育背景、工作经历、项目经验、技能专长和证书等内容,对于...
HTML/PHP/ASP/ASP.NET/JSP... jQuery 编写一款显示输入框的密码 源码 jQuery 编写一款显示输入框的密码小插件,能把以密码格式的输入框显示在弹出框中,言外之意也就是获取了密码,神奇吧?其实有了jQuery 这一切...
【标题】"Web课件ASP/asp.net/jsp程序设计"涵盖了三种主要的Web开发技术:ASP(Active Server Pages)、ASP.NET以及JSP(JavaServer Pages)。这些技术都是用于构建动态网页和Web应用程序的重要工具。 ASP是微软在...
JSP 技术的主要特点是可以在服务器端运行 Java 代码,从而实现动态的 Web 页面生成。JSP 技术与 ASP 技术类似,但 JSP 技术具有更好的可扩展性和跨平台性。JSP 技术可以与各种服务器集成,包括 Apache Web 服务器和 ...
HTML/PHP/ASP/ASP.NET/JSP... jQuery ui.ariaSorTable 支持排序、分页的表格 jQuery ui.ariaSorTable 支持分页的表格组件,想实现无刷新分页的朋友一定要看看这个jQuery ui插件,为你实现多功能表格提供有一份有力...
JSP(JavaServer Pages)是Java平台上的动态网页技术,它允许开发者将Java代码嵌入到HTML中,由服务器处理后返回给客户端。JSP强调“一次编写,到处运行”,具有良好的可移植性和强大的后端功能。 jQuery 是一个...
本文将详细讲解如何使用JavaScript来生成适用于各种Web开发环境(如ASP、PHP、JSP、HTML和ASP.NET)的二维码。 首先,我们需要一个JavaScript库来生成二维码。"QRCode"可能就是这样一个库,它提供了简单的API接口,...
【标题】:“JAVA(JSP.NET+HSS框架)做的人力资源管理系统”指的是一个使用Java技术栈,结合JSP、.NET以及HSS框架开发的人力资源管理软件。这种系统通常用于企业的内部管理,帮助管理员工信息、招聘、培训、绩效考核...
总结来说,"java/JSP车辆租赁管理系统"是一个综合运用了Java、JSP、数据库管理、Web服务器技术、前端开发等多个领域的项目。通过学习和分析这个系统,开发者不仅可以提升自身的技术能力,也能深入了解车辆租赁行业的...
【JSP销售网站前后台+Oracle数据库】是一个基于Java Web技术构建的电子商务平台,它集成了JSP(JavaServer Pages)、Servlet和JavaBean组件来实现动态网页和业务逻辑处理。这个项目不仅包含了用户界面,还涉及到后台...
本文将深入解析在Java/JSP环境中获取客户端网卡MAC地址的三种常见方法,旨在为开发者提供全面而深入的理解。 ### 方法一:通过Java NIO(非阻塞I/O)库 Java NIO库提供了访问底层网络接口的能力,从而可以获取包括...
30个计算机类Java JSP ASP.NET 安卓Android 项目源码合集: asp.net_093_sqlserver_音乐网站_.zip asp.net教务选课管理系统毕业设计源码.rar ASP.NET电影播放网站的设计.rar ASP.NET通讯录.zip ASP毕业设计-新闻发布...
### JS表单验证代码在JSP与.NET中的应用全集 #### 一、概述 本文档将详细介绍如何在JSP和.NET环境中运用JavaScript进行表单验证。表单验证是前端开发中不可或缺的一部分,它能够确保用户输入的数据符合预期格式或...
Java+JSP+Mysql实现Web学生图书管理系统,系统经多次测试,运行无误,请大家放心下载。 资源包含数据库和说明文档,数据库在sql文件夹下面,说明文档在doc文件夹下面。 系统功能:实现用户注册登录,实现用户对图书...
Java vs C# —— JSP与ASP.NET简单之比较! 在这篇文章中,我们将比较Java和C#这两种编程语言,并对比JSP和ASP.NET这两种技术栈的优缺点。 Java vs C# Java和C#都是面向对象的编程语言,它们都继承了面向对象编程...
本主题主要关注使用JAVA(JSP.NET)来实现这些功能。尽管具体实现细节未在描述中提供,但我们可以深入探讨如何使用JAVA和JSP.NET来完成CRUD操作。 首先,JAVA JSP(JavaServer Pages)是一种动态网页技术,它允许...
2. 设计JSP页面,利用EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)与JavaBean进行交互,实现数据的展示和提交。 3. 编写Servlet,处理HTTP请求,通过请求参数获取用户输入,调用DAO...
SSM框架,全称为Spring、SpringMVC和Mybatis的集成框架,是Java Web开发中常用的三大组件。这个项目的源码提供了使用IDEA开发工具整合SSM框架的基础实现,可以帮助开发者理解并掌握如何构建一个完整的Web应用。 1. ...
深入体验Java_Web开发内幕-核心基础.part1.rar 由于文件比较大,所以分成了5个rar文件,请大家耐心下载。 part1:http://download.csdn.net/source/953028 part2:http://download.csdn.net/source/953041 part3:...