JAVA与.NET的相互调用 通过WEB服务实现相互调用以及例子
java_调用.net_WebService2
Java调用.net写的webservice2Java使用axis来调用.net写的asmx WebService,大体步骤如下。
Axis需要用到的包如下:1.axis.jarmons-discovery-0.2.jarmons-logging-1.0.4.jar4.jaxrpc.jar5.wsdl4j-1.5.1.jarjava调用的代码如下:.net webService的GetSafeMode方法[WebMethod]publicstring GetSafeMode(string factoryId, string simId){…….return“0”;}上面的例子演示了怎样传递参数和接收返回值,传递string类型的数据。
下面看看怎么解决传递Dataset的问题。
(以下为转贴)原文地址:/blog/325610版权归原文作者所有package etpsmsws.etpsms.hnas;import java.util.Iterator;import space.QName;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.message.MessageElement;import org.apache.axis.types.Schema;/*** <p>* Title:* </p>* <p>* Description:* </p>* <p>* Copyright: Copyright (c) 2004* </p>* <p>* Company:* </p>** @author not attributable* @version 1.0*/public class testSoap2 {public testSoap2() {}public static void main(String[] args) {try {String wsdlUrl = "http://test";String soapActionURI = "HNAS.EtpSms.EtpSmsWS/GetRecvFromTemp"; Service service = new Service();Call call = (Call) service.createCall();//// call.setOperationName(new QName("HNAS.EtpSms.EtpSmsWS",// "EtpSmsWSSoap"));call.setOperationName(new QName("HNAS.EtpSms.EtpSmsWS", "GetRecvFromTemp"));call.setTargetEndpointAddress(new .URL(wsdlUrl));call.addParameter(new QName("HNAS.EtpSms.EtpSmsWS", "iMemberId"), org.apache.axis.encoding.XMLType.XSD_INT,javax.xml.rpc.ParameterMode.IN);call.setReturnType(org.apache.axis.encoding.XMLType.XSD_SCHEMA); call.setUseSOAPAction(true);call.setSOAPActionURI(soapActionURI);Object[] objs = new Object[] { "8918"};Object res = call.invoke(objs);// System.out.println(res);Schema schema = (Schema) res;MessageElement[] messageElement = schema.get_any();for (int i = 0; i < messageElement.length; i++) {// System.out.println(messageElement[i].getChildElements());// System.out.println(messageElement[i].getRealElement()// .getChildren());Iterator iterator = messageElement[i].getChildElements();while (iterator.hasNext()) {MessageElement m = (MessageElement) iterator.next();m = m.getRealElement();Iterator it = m.getChildElements();while (it.hasNext()) {m = (MessageElement) it.next();it = m.getChildElements();while (it.hasNext()) {m = (MessageElement) it.next();System.out.println(m.getValue());}}}}} catch (Exception ex) {System.err.println(ex.toString());}}}注意事项:参数必须是String类型的,你定义的是啥类型不管。
Java客户端调用.NET的WebService实例
Java客户端调⽤.NET的WebService实例项⽬需要去调⽤.NET的WebSrevice,本⾝是Java,研究了半天,终于有些头绪,记下来。
1,新建.NET WebService。
只在原⽅法上加上⼀个string类型的参数str[WebMethod]public string HelloWorld(string str){return "Hello World";}2,新建Java的WebService客户端,lib引⼊以下5个jar包(我是⽤idea⽣成的WebService客户端,会下载7个包,我试着删掉了log4j和saaj两个包也能正常运⾏)import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.encoding.XMLType;import space.QName;import javax.xml.rpc.ParameterMode;public class HelloWorldClient {public static void main(String[] argv) {String endpoint ="http://localhost:64662/WebService1.asmx?wsdl";try {// 定义服务Service service = new Service();Call call = (Call) service.createCall();call.setTargetEndpointAddress(endpoint);call.setOperationName(new QName("/", "HelloWorld"));call.setSOAPActionURI("/HelloWorld");call.addParameter(new QName("/", "str"),// 这⾥的str对应webservice参数名称XMLType.SOAP_STRING, ParameterMode.IN);call.setReturnType(XMLType.SOAP_STRING);String retVal1 = (String) call.invoke(new Object[] {"Hello World!"});System.out.println(retVal1);} catch (Exception e) {e.printStackTrace();}}}注:1,⽹上看到有直接写成call.setOperationName("HelloWorld"),我试过不⾏。
java和.net两大平台的分析及互用
摘要在Java平台推出并发展了十多年后, Microsoft的 .net平台闪亮登场,到现在为止,也已经发展了几年了,从最初的版本发展到现在的2.0版本。
java平台有着许多闪亮的地方,而后到的.net平台也有其过人之处。
但是本文所关心的并不是java平台和.net 平台,谁比谁更优秀或谁是谁的终结者,而是两者各自有什么特点,如何和平共处,实现彼此之间的互用。
因为两者实现互用将为软件行业带来极大的惊喜,为企业节省很大的软件投资,包括时间和成本。
本文首先是对java平台和.net平台进行了一个简单的介绍,对这两个平台进行了简单的分析,并且指出了这两大平台各自的优点。
接着讲述了这两大平台实现互用的必要性, 基础和所面对的挑战,然后介绍了实现互用的基本方法: 代码转换, 第三方运行时桥, xml webservice, 面向消息的中间件, 共享数据库, 集成代理程序。
最后是针对互用的未来发展,讲述了一些个人的看法。
毕竟现在的互用技术并不是相当的完善,还有待进一步的发展和提高。
但是相信经过世人的努力,java平台和.net平台的互用将会得到更好的实现,甚至实现所谓的“完美”的结合。
本文只是讲述了java 和.net 的基本知识和基本的互用实现,对于当中的许多复杂问题,如,实现单点登录(共享session),实现事务性,实现安全性……没有进行论述。
关键词: .net远程处理, java, .net, 互用, 互联网服务, xml, 消息, 序列化ABSTRACTJava platform has born and developed for about ten years. After that, Microsoft .net was born and has developed for several years too, from the newest version to the 2.0 version. Java platform has much advantage. But the .net platform also has much advantage. This article does not care about java platform and .net platform who is whose terminator, just want to show the advantage of java platform and .net platform and how to achieve interoperability of java and .net, because if these two platforms can achieve interoperability, it will give the software industry a great surprise, save the money and time for the enterprise. This article first gives a simple introduction about java platform and .net platform, point out the advantage of both java platform and .net platform. Then, talk about the necessary, the base and the challenge of achieving interoperability between these two platforms. Code changing, third party runtime bridge, xml web service, Message-Oriented Middleware, sharing database, Integration Brokers and Orchestration are the basic methods used to achieve interoperability. At the end of this article, there is some opinion of myself about the future of the interoperability. I believe that interoperability of java and .net would be more and more perfect. In this article, some complex issues, such as sharing session, achieving transaction, security etc are not related to.Keywords:.net remoting, java, .net, Interoperability, web service, xml, message, serialization目录摘要 (I)ABSTRACT (II)1绪言 (1)2认识JAVA平台 (2)2.1J AV A简介 (2)2.2J AV A的优势 (5)3认识.NET平台 (7)3.简介 (7)3.的优势 (11)和JAVA的互用 (13)4.1互用的基础和所面对的挑战 (13)4.2实现互用的基本方法 (20)4.2.1通过代码转换实现互用 (20)4.2.2通过第三方运行时桥实现互用 (22)4.2.3通过X ML WEBSERVICE 实现互用 (33)4.2.4使用面向消息的中间件来实现互用 (40)4.2.5通过共享数据库来实现互用 (41)4.2.6利用集成代理程序来实现互用 (42)4.3互用的未来发展 (44)5总结和体会 (45)致谢 (46)参考文献 (47)1 绪言“互用”,是指使用行业标准或被广泛认可的数据描述和通讯协议,在采用不同技术实现的不同平台上运行的功能单元之间进行通讯或者传输数据的能力。
Java调用.net的WebService-阿善的日志-网易博客
Java调用.net的WebService-阿善的日志-网易博客这几天公司需要做一个java和.net项目的整合,其中.net做了一个WebService,需要java来调用。
本以为很容易的一个东西,结果弄了几天才弄好。
最开始.net的Service代码如下(黄色背景是自己增加的代码)://<%@ WebService Language="C#" Class="Service" Debug=true %>using System;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;namespace Service{[WebService(Namespace="")]/// <summary>/// Service1 的摘要说明。
/// </summary>public class Service : System.Web.Services.WebService{public Service(){//CODEGEN: 该调用是 Web 服务设计器所必需的InitializeComponent();}#region 组件设计器生成的代码//Web 服务设计器所必需的private IContainer components = null;/// <summary>/// 设计器支持所需的方法 - 不要使用代码编辑器修改/// 此方法的内容。
/// </summary>private void InitializeComponent(){}/// <summary>/// 清理所有正在使用的资源。
/// </summary>protected override void Dispose( bool disposing ){if(disposing && components != null){components.Dispose();}base.Dispose(disposing);}#endregion[WebMethod(Description="test")]public string GetTestQuestions(string TeacherName,string Subject){return "11111";}}}=================Java调用代码:public static String GetTestQuestions(String TeacherName,String Subject){String result = "";try{Service service = new Service();Call call = (Call) service.createCall();call.setOperationName(new QName("", "GetTestQuestions"));call.addParameter("TeacherName", XMLType.XSD_STRING, ParameterMode.IN);call.addParameter("Subject", XMLType.XSD_STRING, ParameterMode.IN);call.setTargetEndpointAddress(new URL(""));result = (String) call.invoke(new Object[] { TeacherName, Subject});}catch(Exception e){e.printStackTrace();}return result;}public static void main(String args[]){System.out.println(UserWebService.GetTestQuestions("aaa", "HOMA060E"));}--------------------结果用java调用时总提示:faultString: 服务器未能识别 HTTP 标头 SOAPAction 的值:。
java 调用.net webservice的方法
java 调用.net webservice的方法在Java和.NET之间进行交互通常涉及到两种不同编程语言和平台之间的通信。
其中,.NET Web服务是一种常用的跨平台通信方式。
在Java中调用.NET Web 服务,可以通过多种方式实现,包括使用HTTP客户端库、SOAP库和Web服务适配器等。
下面将介绍一种常见的方法,以帮助您在Java中调用.NET Web服务。
一、准备工作1.确保您的Java应用程序已经安装并配置好。
2.确保您的.NET Web服务已经发布并可用。
3.安装适当的Java HTTP客户端库或SOAP库,以便在Java中调用Web服务。
二、Java调用.NET Web服务的步骤1.创建HTTP客户端对象使用Java HTTP客户端库(如Apache HttpClient或Java的HttpURLConnection)创建一个HTTP客户端对象,用于与.NET Web服务进行通信。
```javaHttpClient httpClient = HttpClientBuilder.create().build();```2.构建SOAP请求消息使用适当的SOAP库(如JAX-WS或CXF)构建SOAP请求消息,并将其发送到.NET Web服务。
确保您的SOAP请求符合Web服务的文档描述。
```javaSOAPMessage soapRequest = MessageFactory.createMessage();soapRequest.getSOAPPart().writeTo(System.out);```3.发送SOAP请求使用HTTP客户端对象将SOAP请求消息发送到.NET Web服务。
您可以使用HttpClient对象的execute()方法执行HTTP请求。
```javaHttpResponse httpResponse = httpClient.execute(webServiceUrl, context);```4.接收SOAP响应消息从Web服务的响应中获取SOAP响应消息,并解析其内容。
JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯
JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯分布式开发的历史利用Remote方式调用远程对象实现服务器与客户端之间通讯是一种常用的网络开发方式,在.NET与JAVA开发当中,对Remote远程对象早已有着足够的支持(对Remote远程对象调用有兴趣的朋友欢迎参考一下利用远程对象实现分布式开发)。
从2003年开始.NET当中就盛传着.NET Remoting远程对象调用的分布式开发,.NET Remoting主要用于管理跨应用程序域的同步和异步RPC 会话。
在默认情况下,Remoting可以使用HTTP 或TCP 协议进行信息通讯,并使用XML 编码的SOAP 或二进制消息格式进行数据交换。
.NET Remoting 提供了非常灵活和可扩展的编程框架,并且可以管理对象的状态。
在Framewok2.0出台以后,WCF盛世登场,它是综合了.NET Remoting远程对象,TCP/IP套接字,Web服务,MSMQ,P2P点对点等各类型通信方式的产物,WCF使远程通信进入另一个台阶。
而在JAVA方面,对远程通信也有强大的支持,它定义了的RPC(Remote Procedure Call Protocol)协议是—项远程过程调用协议,它可以通过网络从远程计算机请求的服务获得计算结果,它无需了解底层网络技术的协议就可以使用如TCP或UDP等通信方式,为程序之间传递信息数据。
在网络通信模型中,RPC跨越了传输层和应用层。
RPC使系统更容易地实现分布式式开发。
但RPC 通讯却并未实现面向对象的开发原则,到而RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象互相调用实现通讯的一种机制。
它以面向对象的开发方式,利用RPC协议,使服务器与客户端的对象能够实现远程调用。
但在.NET Remoting与RMI通信中同时存在一个弊端,那就是对开发语言的限制,无论是使用哪一种通讯方式,服务器与客户端都必须支持同一种开发语言。
.NET 访问JAVA的WEBSERVICE使用SOAP头
.NET 访问JAVA的WEBSERVICE使用SOAP头进来做的项目需要和JAVA的WebServices进行交互,其中访问WS的时候需要传入SOAP 头进行验证。
其中关键就是SOAP头内容。
由于JAVA的WS在.NET下生成的代理是没有SOAP 头的内容,所以需要手工修改代理类,达到可以传输SOAP头的目的。
1:修改代理类,建立SOAP头的对象:/// <remarks/>[piler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3053")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][ponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = true)] public partial class MySoapHeader : System.Web.Services.Protocols.SoapHeader{private string tokenValue;private System.Xml.XmlAttribute[] anyAttrField;/// <remarks/>//[XmlIgnoreAttribute]//[XmlAttribute("")][XmlTextAttribute()]public string TokenValue{get{return this.tokenValue;}set{this.tokenValue = value;}}/// <remarks/>[System.Xml.Serialization.XmlAnyAttributeAttribute()]public System.Xml.XmlAttribute[] AnyAttr{get{return this.anyAttrField;}set{this.anyAttrField = value;}}}2:修改代理类,添加一个SOAP对象:private mySoapHeader soapHeaderValue;public MySoapHeader SoapHeaderValue{get{return this.soapHeaderValue;}set{this.soapHeaderValue = value;}}3:在需要SOAP上方法上添加如下的代码:[System.Web.Services.Protocols.SoapHeaderAttribute("SoapHeaderValue")]public bool verifyWebserviceTest(){object[] results = this.Invoke("verifyWebserviceTest", new object[0]);return ((bool)(results[0]));}调用的时候使用如下代码:ArcWS.ManDispCmdSessionBeanService ws = new ARSSMonSite.ArcWS.ManDispCmdSessionBeanService();ArcWS.loginToken soapHeader = new ARSSMonSite.ArcWS.loginToken();soapHeader.TokenValue = "arsssongguixiang#19990101010101";ws.SoapHeaderValue = soapHeader;ws.verifyWebserviceTest();这样,就可以正确的向JAVS的WS传送SOAP头的信息。
webservice java调用示例
Web服务是一种基于网络的软件系统,它使用标准化的XML消息格式来交换数据。
这篇文章将介绍如何在Java中调用Web服务的示例。
1. 准备工作在开始调用Web服务之前,我们需要确保已经安装了Java开发环境,并且已经了解了Web服务的基本概念和相关知识。
2. 创建Java项目我们需要创建一个新的Java项目。
可以使用Eclipse、IntelliJ IDEA或者其他Java集成开发环境来创建项目。
在项目中,我们需要创建一个新的Java类来进行Web服务的调用。
3. 导入Web服务接口在Java项目中,我们需要导入Web服务的接口。
这可以通过WSDL (Web服务描述语言)文件来实现。
WSDL文件定义了Web服务的接口和可用操作。
可以使用wsimport工具来生成Java代码,该工具在Java的安装目录下的bin目录中可以找到。
4. 调用Web服务一旦导入了Web服务的接口,我们就可以使用Java代码来调用Web 服务了。
我们可以通过创建代理对象来调用Web服务的操作。
以下是一个简单的示例代码:```javaimport.example.webservice.MyWebService;import.example.webservice.MyWebServiceService;public class WebServiceClient {public static void main(String[] args) {MyWebServiceService service = new MyWebServiceService();MyWebService port = service.getMyWebServicePort();// 调用Web服务的操作String result = port.sayHello("World");System.out.println(result);}}```在这个示例中,我们首先创建了Web服务的代理对象,然后调用了Web服务的sayHello操作,并打印出了返回的结果。
推荐使用.NET调用java编写的WebService方法
推荐使用.NET调用java编写的WebService方法如果.NET调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader 的处理。
先说说的思路:1、先用soapUI进行测试,这个工具会自动生成调用某个方法的XML。
2、把soapUI生成的XML作为模版,自己也生成一个一模一样的XML并为参数节点赋好值。
3、将这个XML通过http直接发送给WebService。
4、接收返回的XML进行处理。
这样做最大的好处就是可以自己很轻松的控制XML格式,最开始的时候我是通过添加引用的方式去调用某个方法一直失败,但是用soapUI去测试这个方法又是可以成功调用的,折腾了半天,最后通过抓包的方式对发送的数据进行对比,发现两者发送的XML相差甚远,好了废话不说了,就拿一个小实例来演示这个过程吧。
首先,通过soapUI工具测试调用WebService里一个名为getPopCheckedInfo 的方法,生成的XML如下:soapUI生成的XML []<soapenv:Envelopexmlns:soapenv="/soap/envelope/"xmlns:ws="/"><soapenv:Header><wsse:Security soapenv:mustUnderstand="1"xmlns:wsse="/wss/2004/01/oasis-200401-wss-w ssecurity-secext-1.0.xsd"><wsse:UsernameToken wsu:Id="UsernameToken-2"xmlns:wsu="/wss/2004/01/oasis-200401-wss-ws security-utility-1.0.xsd"><wsse:Username>用户名</wsse:Username><wsse:PasswordType="/wss/2004/01/oasis-200401-wss-usernam e-token-profile-1.0#PasswordText">密码</wsse:Password><wsse:NonceEncodingType="/wss/2004/01/oasis-200401-wss -soap-message-security-1.0#Base64Binary">qTW5ajMAEp4o9BiSvcczNA==</ws se:Nonce><wsu:Created>2010-05-24T07:02:10.531Z</wsu:Created> </wsse:UsernameToken></wsse:Security></soapenv:Header><soapenv:Body><ws:getPopCheckedInfo><arg0>参数</arg0></ws:getPopCheckedInfo></soapenv:Body></soapenv:Envelope>上面三个用汉字标示的地方就是我们要修改赋值的地方,大家看到了吧,如果用添加引用自动生成代理类的方式,要产生这样格式的XML有多难控制了吧,但是如果全部用代码来生成也不是一件容易的事,个人用了一个比较巧妙的办法:在项目中添加一个名为“getPopCheckedInfo”的xml文件,将上面的XML粘贴上去,然后再将这个XML文件作为内嵌资源(在这个的文件属性里面的…生产操作‟选择…嵌入的资源‟),使用的时候直接加载这个XML文件,然后修改那3个节点的值就可以了(用户名和密码一般都预先确定的,也可以直接写在XML文件里,调用的时候就只要对那一个参数赋值了)。
基于WebService技术的J2ME和.NET互连
动电子商务系统改造过程中 ,利用 We Sri 技术成功地实现 b ev e c
JME移 动 终 端 设 备 和 . E 2 N T企 业 级 应 用 的 互 连 ,取 得 了 良好 的效 果 。
ctM a T mp f a n t u1 i y x e l t o l o n .
ctHu ii la n t l i y m dt f t o l y o nu , ・
二、. E N T企 业 级 应 用 程 序
1 .系统功能设计 该企 业级 应用程 序是 为互 联 网上 的用 户提供 天气 预报 服 务 ,用户登录该系统 ,输入感兴趣 的城市和 日期 ,系统 就会将 相应 的最高和最低温度 、湿度 、阴晴状况 、出行提示 等天气信 息告 诉用户 。系统采用 的是 微软 的 S L e e2 0 Q S r r0 0数据库来存 v 储城 市天气状况 。该系统 的数据 表设计 如图 1 所示 ( :为节 注 约篇 幅 ,笔 者 对 系统 的数据 表 和业 务 流程 进 行 了适 当的 简
用都是 构建在 . E N T或 者 J E 2 E平 台上 ,笔 者 在 为 某 企 业 的移
图 1 服 务器 端 应 用 程 序 数 据 表 设 计 图
c n t i K B C T r r k y ( i l ) o s r n P J L IYp i y e c y a t ma td
徐 翔 斌
摘 要 使 用 实 现 J R12规 范 的 JME开发 包, 可 以快 速 实现 J ME客 户 端 同 WeS r S 7 2 2 b e-
vc 务 器端 应 用程 序 通 信 和数 据 交换 ,为 企 业构 建移 动 电子 商 务 系统提 供 了 i e服
基于Java EE与.NET技术框架的互操作性及其应用
a e n 接(R ..) 术 实 现 这 样 的功 能 。 B a 桥 J E 141 技 23 W e . b服 务 用 于 基 于 X ML的 远 程 过 程 调 用 的 J v P aaA I
(A J X—RP J v API o C, a a s f rXM L a e R mo e -b s d e t Prc d r C l o e u e a1 )
使 J v 用 程序 能够 使 用 远 程 过程 调 用 机 制 同步 地 调 用 远 程 W e a a应 b 服务。客户端应用程序可 以用标准服务定 义 ( We 像 b服务定义语 言— — W e ev e D f io a g a e 或 称 W S L中 定 义 的) b S ri eit n L n u g c ni D 关键词 :a a E N T 集成 互操作 J r g r J v E E NBi e Po d 来 调 用远 程业 务 服 务 或 者 用 数 据 结 果 做 出应 答 。J X R C客 户 端 A— P O 引 言 存 根 把服 务 请 求 映 射 为 W S L文 件 中 特 定 的 数据 类 型 , 通 过服 务 D 并 近年来 , 在企 业 级 应 用 中 ,2 EJ v nepi dt n 现 E ( a 2 E trr e E io , J a s i 代 理 激 活 R C调 用 。 务 端 ( 务 提供 者) 到 服务 请 求 , 服 务请 求 P 服 B E 接 把 已改 为 Jv E技 术 因 为其 成 熟 、 面 及 其 跨 平 台 的优 点在 复杂 的 aaE ) 全 映 射 为 本地 的数 据 类 型 , 处理 服 务 请 求 。 并 大型应用中得到 了广泛的运用。随着. E N T框架的逐步推广 , E . T框 N 3 . T框 架 的 集成 能 力 NE 架 的便 于 开 发 、 富 的 客 户 界 面 及 在 桌 面领 域 的 强 大 优 势 , . T 丰 使 NE 31 C . OM 互操作 C R能够通 过互操作层 与 C L OM 组件、 c A— 框架 在 企 业 级应 用 中也 不 断增 长 。 由于 这两 大 应 用 架构 将 在 未 来 的 te i X控件和( v 非托管) 动态链接库 fy a c L k L rr, L ) D n mi i i a D L这样 n b y 数年 中互相竞争 , 同时发展 , 从而使在企业应用集成 中 J E 2 E与. N盯 的非 托 管代 码 实现 互 操 作 。 这 些 组 件 有 一 个 关联 的类 型 库 ( p i t e1 y — 的集 成 操作 就 成 了研 究 的 必要 课 题 。 ba ) 义 接 口以及 在 . T框 架 中用 来 生 成 这 个 互 操作 层 的 t i rr 定 y NE l mp b 对 于 企 业而 言 ,拥 有 大规 模 而 且 各 不相 同的 系 统 是很 普 遍 的 现 (ve l rr I otr类型 库 导 入器 ) 具 。 T p i ay mp r , b e 工 象 , 拥 有统 一 的 系统 却 很 少 见 。 而 由于 企 业 的 收购 和 兼 并 以及 其 他 各 32 用 同步 W e - b服 务 实 现 的互 操 作 W e b服 务 是 由名 为 W e b 方面 的原 因 , 业 拥有 的 系统 用 不 同 的语 言 建 立 , 行在 不 同的软 件 服 务 描 述语 言 ( e e i e cit n L n u g , S L的 文档 企 运 W b S rc D s r i a ga eW D ) v e po 平 台上 , 针对 不 同的硬 件 。 在 这 种 背景 下 , 产 生 了对集 成 的互 操 作 定 义 的 抽 象 实 体 , S L是 一 个 为 W e 就 W D b服 务 定 义 了 位 置 和 方 法 签 性 系统 的需 求 , 以便 能够 积 极 快 速地 响应 业 务 需 求。 名的X ML文 档 。 使 用 W S L 可 以生 成 或 编 写代 码 来 调 用 服 务 , D , 这 1什 么 是 互 操作 性 些服 务 以 W S DL描述 的特性 为基础 。简单对 象访 问协 议(O , S AP 互操作就是在使用者不知道或几乎不知道不同平 台特征时 , 提 Smpe Ob c c e s Poo o i l j tA c s rtc 1 准 化 了调 用 方 式 。 用 来 创 建 e )标 供不同平 台之间的沟通、 执行程序与数据交换的能力。这就意味着 , We b服务的基础服务并不重要, 因为接 口是标; 隹的。 根据定义 , 客户 在 进行 不 同平 台 间 的整 合 时 ,不需 要 把 不 同 的 系统 与 解 决 方案 使 用 端通过 向服务端发送 S OAP文档 来调用方法。这样带来了很多有关 种 系统 或语 言 重 新 撰 写 , 是相 反地 善 用 各 个平 台或 环境 的优 点 , 互操作性方面 的优点。 而 根本不需要关心技术问题 , 只要关, ̄ 务本身 bJ P 且在 便 利 使 用者 的情 况 下 进行 沟 通 、 行 程 序 , 是 交换 数 据 。 这 类 就 行 。 执 或 当服 务 都 定 义在 公 认 的标 准上 时 , 实现 互 操 作 时 轻而 易举 的 事 整合 方式 有 下列 优 点 情。 11保障既有投资 : . 目前多数 大型企业仍保有旧有的大型 系统 , 33 用 异 步 W e . b服 务 实 现 互 操 作 性 用 W S L根 据 生成 的 代 D 或是投资数年时间所建构的企业解决方案,若经 由互操作方式进行 理能够用来同步地调用 W e b服 务 ,在这种情况下 ,线程一直被锁 整合 , 不只可延长上述系统寿命 , 甚至可产生许多新机会与商机。 住, 直到服 务响应方法调用 ; 也可 以异步调 用 We b服务 , 这种 情 在 12善用不同技术与平台的优点 : - 每一平 台都有其优 势 , 也许是 况下 , 用 We 调 b服务后 , 客户端 一直继 续执行 , 直到 We b服务 响 成 熟度 、 可靠 性 、 延展 性 或 是 先进 的技 术 。 过 互 操作 技 术 , 业 可 以 应 , 通 企 之后 调 用 一 个 预 先定 义 的会 叫 函 数。 整合 且 最 大 化 不 同平 台间 的优 点。 34 用 . T R moig 实 现 的 互 操 作 性 . T e t g . . NE e t n NE R moi ( n 1 完成 导 入 新 平 台 前 的试 验 :在 完 全 投 入 、 转移 至 新 平 台之 N T远程 调 用 ) 供 一 个 框 架 , . 3 E 提 允许 不 同 的 应 用 程 序 域 之 间 的 对 象 前, 如果能进 行所谓 的 pl 或是 po fo o c p 计划 , it o ro fc n e t 并连结至 进行交互。它提供 了几种服务 , 例如激活 与支持 , 以及负责与远程应 既有系统 , 将更容易推 导出新技术平台的适用性。 用程 序 进 行 消 息传 输 的 重 要 的 通信 通 道 。 它提 供 格 式 化程 序 , 为消 息 1 平 台的 转移 : 决 定 转 换至 新 的平 台 , 很 少 有让 系统 全 能在 通 道 上 得 以传 输 进 行 编 码 和解 码 。 . 4 即使 也 部停 止 、 写 的状 况。 重 通过 互 操作 技 术 , 不仅 可将 旧系统 依 需要 切 割成 35 互操作性 的其他技术 数据互操作 性: . 应用程序 的状态和数 不 同模 块 与新 平 台一 起运 作 , 甚至 可 以继 续维 持 整个 系 统 的可 用性 。 据可以存储在数据库 中, 根据 已定义的标准 , 应用程序也能够读取数 简 言之 ,互 操作 技 术 就 是 在 不 改变 运 行环 境 和 编 程 语 言 的前 提 据 库 。 下 , 过 现 有 技术 实现 不 同应 用 程 序 之 间 的 相 互调 用 。J v 通 a a与 N T E 表 示 层 互 操作 性 :在 许 多 情 况 下 , 当需 要合 并 现 有 的 应用 程 序 的互操作性 , 主要针对基于 W e b的应 用系统 , 使不 同环境下 的业务 时 , 须 实 现 互操 作 性 , 不 是 简 单 的集 成 。 多时 候 , 些 应 用程 序 必 而 很 这 调 用 能够 顺 利 进 行 。 可 能 都 有 自己 的用 不 同技 术 实现 的表 示层 , A PN T W e 如 S E b表 单 2 J E (a a E ) 2 EJ v E的互操作能力 和 J P页 面 。虽 然 两者 之 间 几 乎 没 有重 叠 的技 术 来 实现 有 效 的互 操 S 21 消 息传 送 J SJ v s a e S ri ) 供 了可 靠 的 异 作 ( 页 面状 态 或 应用 程 序 状 态 都 不 能 共 享 )但 是 H MUH P标 准 . M (a a Me s g evc 提 e 如 , T 丌 步 消 息传 送 机 制 ,用于 带 有 连 接管 理 �
在.net应用中调用java程序
在.net应用中调用java程序本例主要是介绍利用C#程序调用已经写好的JA V A程序.很多时候我们不可避免的要用到别人写的东西.就拿我来说.很多应用是用.NET写的.也有很多程序是用JA V A写的.这就带来了很多麻烦,有时候要实现同样的功能,必须写两遍代码.那么我们有没有办法让C#直接调用java写好的东西呢?(java直接调用.net的程序也是可以的).这里需要提到的就是开源程序.这个开源程序不想过多的介绍.说多了也没有太多的意义,有兴趣的朋友可以深入研究.他的源代码可以到/project/showfiles.php?group_id=69637去下载.简单的介绍一下 还是有必要的.是一个针对Mono和微软.net框架的java实现,其设计目的是在.NET平台上运行java程序。
它包含了以下的组建:* 一个用.NET实现的java虚拟机* 一个java类库的.NET实现* 致力于在java和.NET之间交互的工具还要说一下我们将要用到的中我们将要用到的部分.* IKVM.Runtime.dll: VM运行时和所有支持代码。
它包括以下的功能:Byte Code JIT 编译器和验证器: 使用JIT将Java Byte Code编译为CIL(C中间语言)。
对象模式映射结构: 将.NET中的System.Object,System.String,System.Exception映射为java代码中的ng.Object,ng.String,ng.Throwable。
管理本地方法(在Classpath中)的.NET重新实现。
* IKVM.GNU.Classpath.dll: 被编译的GNU Classpath版本,它是由自由软件基金会实现的java类库和一些附加代码组成的。
注意:这里的GNU Classpath不是的一部分,但是前者被用在中。
* IKVM.JNI.[Mono|CLR-Win32].dll: 通过实现JNI接口管理C++汇编。
JAVA与.NET的相互调用——TCPIP相互调用基本架构(附原代)
TCP/IP套接字的概念TCP/IP(传输控制协议/网际协议)是网络互连的通信协议,通过它可以实现各种异构网络或异种机之间的互联通信。
TCP/IP是Transmission Control Protocol/Internet Protocol的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的。
TCP/IP 定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。
TCP/IP是一个四层的分层体系结构。
高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。
低层是网际协议,它处理每个包的地址部分,使这些包正确的到达目的地。
TCP/IP已成为当今计算机网络最成熟、应用最广的互联协议。
Internet采用的就是TCP/IP协议,网络上各种各样的计算机上只要安装了TCP/IP协议,它们之间就能相互通信。
TCP/IP套接字通讯的开发在众多的开发语言中,绝大部分的开发语言都支持TCP/IP协议通讯,开发过程也十分相像,先设置好Socket,然后由客户端发送请求信息,服务器连接客户端接收到请求后再返还信息。
而在.NET系统当中则稍有不同,系统把Socket对象包装在TcpClient对象内,对Socket对象的生命周期进行管理。
在开发过程当中,服务器与客户端的开发语言有所不同的情况经常发生,服务器是在JDK1.6的环境下进行开发的,客户却要求使用.NET开发客户端,这往往会令开发人员感到困惑!下面在下使用JAVA为服务器,.NET 为客户端为例子,为大家介绍一下如何使用TCP/IP协议进行JAVA .NET之间的相互调用。
像TCP/IP实现聊天室这样的例子很多,开发起来也比较简单,因为通讯双方都是使用String来传送信息。
而在真正建立ERP、OA、CRM等系统的时候,通讯双方都必须先建立一套统一的通讯契约,才能实现TCP/IP通讯,下面将为大家介绍一个比较典型的企业信息通讯实例。
Java和.NET互操作性研究与实现的开题报告
Java和.NET互操作性研究与实现的开题报告一、研究背景Java和.NET是现今最广泛使用的两种编程平台,Java平台是由Sun公司发布的;而.NET平台是由微软公司发布的。
这两种平台优点互补,但是它们拥有不兼容的API和格式,这给软件开发者带来了一个很大的问题。
为了使程序互操作,必须寻找解决方法,本研究目的就是为了研究Java和.NET互操作性问题,并实现一个实用的互操作平台。
二、研究意义Java和.NET之间的互操作性问题一直是开发者关注的问题,本研究对于解决Java和.NET编程平台之间的兼容性问题非常有意义。
研究结果将能够帮助开发者在Java和.NET之间实现代码共享、提高开发效率、降低开发成本,增加应用程序的多样性和功能性。
此外,这项研究还将促进Java和.NET等不同平台的进一步发展。
三、研究内容本研究将分为两个阶段:理论研究和实验实现。
- 理论研究对Java和.NET的体系结构、API和格式等进行深入分析,以确定它们之间的区别和相似之处。
着重考虑Java和.NET之间的通信协议,例如SOAP和REST等,以确定这些协议如何实现跨平台的数据传输。
此外,本研究还将分析Java和.NET之间的相互调用原理,包括Java调用.NET的DLL文件和.NET Web Service的调用等。
- 实验实现本研究将基于.NET框架和Java平台实现跨平台的互操作性,开发一个示例应用程序,展示在Java和.NET之间共享数据和功能的能力。
具体步骤如下:1. 编写Java和.NET代码2. 实现Java和.NET之间的通信协议3. 设计低耦合的数据传输格式4. 实现Java调用.NET的DLL文件5. 实现.NET调用Java接口6. 实现.NET Web Service的调用7. 组合各项实现,构建示例应用程序四、研究方法本研究将采用书面调查、对照试验、实验方法和实践验证相结合的方法。
- 书面调查通过调查文献、查阅专业文献、技术博客和技术论坛等一系列网络和图书资源,收集Java和.NET平台、互操作性的相关信息和技术资料,为实验的开展提供充分的理论基础。
JAVA与.NET的相互调用——通过Web服务实现相互调用
JAVA与.NET是现今世界竞争激烈的两大开发媒体,两者语言有很多相似的地方。
而在很多大型的开发项目里面,往往需要使用两种语言进行集成开发。
而很多的开发人员都会偏向于其中一种语言,在使用集成开发的时候对另一种语言感觉到畏惧。
在这里在下向各位介绍一下,JAVA与.NET相互调用的例子。
下面的介绍主要包括三方面:一是通过常用Web 服务进行相互调用,二是使用TCP/IP套接字进行相互调用,三是使用Remoting进行相互调用。
在这章里面先为大家介绍一下最简单,最常用的Web服务相互调用方式。
首先说一下Web 服务的来源,Web服务是一种新的Web应用程序分支,可以执行从简单的请求到复杂商务处理等任何功能。
一旦部署以后,其他Web服务应用程序可以发现并调用它部署的服务。
Web Service是一种应用程序,它可以使用标准的互联网协议,像超文件传输协议(HTTP)、简单对象访问协议(SOAP)、XML等,将功能纲领性地体现在互联网和企业内部网上,Web 服务被视作是Web上的组件编程。
Web服务必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。
XML和XSD可扩展的标记语言XML是Web Service平台中表示数据的基本格式。
除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。
XML是由万维网协会(W3C)创建,W3C制定的XML SchemaXSD定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。
Web Service平台是用XSD来作为数据类型系统的。
当你用某种语言如JAVA、C#来构造一个Web Service时,为了符合Web Service标准,所有你使用的数据类型都必须被转换为XSD类型。
如想让它使用在不同平台和不同软件的不同组织间传递,还需要通过SOAP协议将它包装起来。
SOAPSOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。
java方法跨系统调用方法
java方法跨系统调用方法Java方法是一种用于封装一系列执行特定任务的代码块的机制。
在实际开发中,我们经常会遇到需要跨系统调用方法的情况。
跨系统调用方法是指在一个系统中调用另一个系统中的方法。
本文将介绍如何使用Java方法进行跨系统调用方法。
我们需要明确跨系统调用方法的背景和需求。
通常情况下,不同的系统可能使用不同的编程语言和技术实现,因此需要通过一定的方式进行系统间的通信和数据交互。
跨系统调用方法可以帮助我们实现系统间的协作和数据传递。
在Java中,我们可以使用多种方式进行跨系统调用方法,下面将介绍其中的几种常用方式。
1. Web服务(Web Services):Web服务是一种基于标准化协议和格式的系统间通信方式,常用的有SOAP和RESTful。
通过Web 服务,我们可以将系统中的方法暴露为可供其他系统调用的接口,实现跨系统调用方法。
2. 远程过程调用(RPC):RPC是一种客户端-服务器模式的通信协议,它允许一个程序在另一个计算机上执行程序,并且可以像调用本地方法一样调用远程方法。
Java中常用的RPC框架有Dubbo、gRPC等,通过这些框架,我们可以方便地进行跨系统调用方法。
3. 消息队列(Message Queue):消息队列是一种实现异步通信的机制,通过将消息发送到队列中,可以实现不同系统之间的解耦和数据交换。
常用的消息队列中间件有ActiveMQ、RabbitMQ等,我们可以使用这些中间件来实现跨系统调用方法。
4. 接口适配器(Adapter Pattern):适配器模式是一种常用的设计模式,它可以通过封装不同系统的接口,使它们可以以统一的方式进行调用。
在跨系统调用方法中,我们可以使用适配器模式来对不同系统的接口进行适配,从而实现系统间的方法调用。
以上是几种常用的跨系统调用方法的方式,不同的方式适用于不同的场景和需求。
在实际开发中,我们需要根据具体的情况选择合适的方式来进行跨系统调用方法。
Sun通过Web服务的开源实施提高Java技术与.NET平台的互操作性能
Sun通过Web服务的开源实施提高Java技术与.NET平台
的互操作性能
佚名
【期刊名称】《华南金融电脑》
【年(卷),期】2005(13)12
【摘要】2005年11月8日,Sun Microsystems公司宣布说,它将通过WS主要技术规范的开源研发和分销,促进与Windows Communication Foundation (WCF:视窗通信基础)的互操作性能,以便进一步强化其Java技术与.NET平台之间的互操作能力。
【总页数】1页(P19-19)
【关键词】Java技术;.NET平台;操作性能;Sun;Web服务;开源;systems公
司;Windows;Micro;操作能力
【正文语种】中文
【中图分类】TP393;TP311.1
【相关文献】
1.Sun发布全方位Sun ONE Web服务平台 [J], 郭新
2.Web服务平台.NET、WebSphere与Sun ONE的比较研究 [J], 章颖芳;陈强
3.Web服务平台.NET、WebSphere与Sun ONE的比较研究 [J], 章颖芳;陈强
4.基于Web服务的.NET和J2EE互操作模型 [J], 曾锻成
5.用SOA与Web服务进行集成—.NET与J2EE互操作 [J], 王介强; 唐瑞春; 楚有斌
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
return personList;
} }
在 Service.xml 上面对服务进行配置 代码
SOAP
SOAP 即简单对象访问协议(Simple Object Access Protocol),它是用于交换 XML 编码信息的轻量级协议。它有三 个主要方面:XML-envelope 为描述信息内容和如何处理内容定义了框架,将程序对象编码成为 XML 对象的规则,执 行远程过程调用(RPC)的约定。SOAP 可以运行在任何其他传输协议上。例如,你可以使用 SMTP,即因特网电子邮件 协议来传递 SOAP 消息,这可是很有诱惑力的。在传输层之间的头是不同的,但 XML 有效负载保持相同。Web Service 希望实现不同的系统之间能够用“软件-软件对话”的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的 状态,实现“基于 Web 无缝集成”的目标。
此时为此项目添加测试类,运行进行测试 代码
二、使用 JAVA 作为服务器端,.NET 作为客户端实现相互调用。
JAVA 开发 Web Service 的工具有很多,最常用的有 Axis、XFire、NetBean 等,在 JAVA-SE 6.0 以上支持 JAX-WS2.0 ,JAX-WS 2.0 是 JAX-RPC 1.0 的更新产品。在 JAX-WS 中,一个远程调用可以转换为一个基于 XML 的协议例如 SOAP。在使用 JAX-WS 过程中,开发者不需要编写任何生成和处理 SOAP 消息的代码。JAX-WS 的运行 时实现会将这些 API 的调用转换成为对于 SOAP 消息。 在服务器端,用户只需要通过 Java 语言定义远程调用所需要 实现的接口 SEI (service endpoint interface),并提供相关的实现,通过调用 JAX-WS 的服务发布接口就可以将其 发布为 WebService 接口。在下面我们就以 XFire 建立一个 Web Service。 首先建立一个在一个项目上单击右键,选择 MyEclipse->Add XFire Web Service Capabilities,引用了 XFire 工具 包以后。在项目会自动建立一个 WebServices 文件夹,文件夹里面的 service.xml 就是对发布 Web Service 进行配 置的。 现在先建立好一个服务层
XML 和 XSD
可扩展的标记语言 XML 是 Web Service 平台中表示数据的基本格式。除了易于建立和易于分析外,XML 主要的优 点在于它既与平台无关,又与厂商无关。XML 是由万维网协会 (W3C)创建,W3C 制定的 XML SchemaXSD 定义 了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。 Web Service 平台是用 XSD 来作为数据类型系统 的。当你用某种语言如 JAVA、C#来构造一个 Web Service 时,为了符合 Web Service 标准,所有你使用的数据类 型都必须被转换为 XSD 类型。如想让它使用在不同平台和不同软件的不同组织间传递,还需要通过 SOAP 协议将它包 装起来。
代码
//建立一个 Model 包,里面包含一个值对象 Person
package Model;
import java.io.Serializable; public class Person implements Serializable {
private int id; private String name; private int age;
代码 为了使用 Person 能够实现远程传送,我们必须对 Person 进行序列化,在 WCF 中包括服务契约、数据契约、消息契 约三部分,而数据契约正是用于对数据进行序列化处理的,如果想对 WCF 有进一步的了解,可以链接使用 WCF 实现 SOA 面向服务编程
代码 数据契约里面有多种的序列化方式,包括 DataContractSerializer,NetDataContractSerializer,XmlServializer,DataContractJsonSerializer。在这里面只 用使用最普遍的 DataContractSerializer,而 DataContractJsonSerializer 是现今比较热门的方式,特别是在开发 网络项目时候,多使用 Json 进行数据通讯。 最后配置好 web.config,就可以成功将 WCF 服务发布
Service.PersonService </serviceClass> <implementationClass>
ServiceImpl.PersonServiceImpl </implementationClass> </service> </beans>
其配置功能如下:
service
service 标签和它所包含的 xml 内容为发布成 Web 服务的 POJO 提供完整的描述。
}
public int getAge(){ return age;
}
public void setAge(int age){ this.age=age;
} }
//建立一个 Service 包,里面包含服务接口
package Service;
import java.util.List; import Model.*;
public int getId(){ return id;
}
public void setId(int id){ this.id=id;
}
public String getName(){ return name;
}
public void setName(String name){ =name;
public class PersonServiceImpl implements PersonService{ public List<Person> GetList(){ List<Person> personList=new LinkedList<Person>();
Person person1=new Person(); person1.setId(0); person1.setAge(23); person1.setName("Leslie"); personList.add(person1);
public interface PersonService { List<Person> GetList();
}
//建Байду номын сангаас一个 ServiceImpl 包,实现服务
package ServiceImpl;
import Model.*; import Service.*; import java.util.*;
WSDL
<?xml version="1.0" encoding="UTF-8" ?> - <wsdl:definitions targetNamespace="http://leslie-pc:8080 /PersonService" xmlns:ns1="http://Model" xmlns:soapenc12=" /2003/05/soap-encoding" xmlns:tns="http: //leslie-pc:8080/PersonService" xmlns:wsdl="http://schema /wsdl/" xmlns:xsd="/2001/XM LSchema" xmlns:soap11="/soap/en velope/" xmlns:wsdlsoap="/wsdl/ soap/" xmlns:soapenc11="/soap/e ncoding/" xmlns:soap12="/2003/05/soap-en velope"> - <wsdl:types> - <xsd:schema xmlns:xsd="/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qual ified" targetNamespace="http://leslie-pc:8080/PersonServi ce"> - <xsd:element name="GetList">
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="/config/1.0"> <service>
<name>PersonService</name> <namespace>http://leslie-pc:8080/PersonService</namesp ace> <serviceClass>
JAVA 与.NET 的相互调用——通过 Web 服务实现相互调用(附原代码)
JAVA 与.NET 是现今世界竞争激烈的两大开发媒体,两者语言有很多相似的地方。而在很多大型的开发项目里面,往往 需要使用两种语言进行集成开发。而很多的开发人员都会偏向于其中一种语言,在使用集成开发的时候对另一种语言感 觉到畏惧。在这里在下向各位介绍一下,JAVA 与.NET 相互调用的例子。下面的介绍主要包括三方面:一是通过常用 Web 服务进行相互调用,二是使用 TCP/IP 套接字进行相互调用,三是使用 Remote 实现远程对象相互调用。 在这章里面先为大家介绍一下最简单,最常用的 Web 服务相互调用方式。首先说一下 Web 服务的来源,Web 服务是 一种新的 Web 应用程序分支,可以执行从简单的请求到复杂商务处理等任何功能。一旦部署以后,其他 Web 服务应用 程序可以发现并调用它部署的服务。 Web Service 是一种应用程序,它可以使用标准的互联网协议,像超文件传输协 议(HTTP)、简单对象访问协议(SOAP)、XML 等,将功能纲领性地体现在互联网和企业内部网上,Web 服务被视作是 Web 上的组件编程。Web 服务必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型 系统。