- 浏览: 365118 次
- 性别:
- 来自: 广东广州
文章分类
最新评论
-
javaAlpha:
我现在也是一直出现这样的错误。也是java调用。net的接口A ...
关于java调用.net webserivce出现: 服务器无法处理请求。 --> 未将对象引用设置到对象的实例 -
javalover1:
贴出你的代码供大家学习学习啦
验证码的破解思路! -
liaolliso:
你好,请问你的最后一种方法,怎么从rgb值里 直接将每个部分的 ...
验证码的破解思路! -
tant:
天涯之海 写道从网页的session里下手好些吧
请问怎样从 ...
验证码的破解思路! -
wilddonkey:
lz此言说的到位啊
现实中很多人在这样的公司还没有做到了解这个 ...
转: 如何在管理不规范的公司中生存
.Net 与 J2EE/Java Web Service 互操作完整实例
实现支持文件分块多点异步上传的 J2EE/Java Web Services 及其 .Net 非 Web 客户端应用程序异步上传
本文参考:
实现支持文件分块多点异步上传的 Web Services 及其客户端(非Web)应用程序调用相关异步执行的 Web Method
http://blog.csdn.net/playyuer/archive/2004/12/11/213069.aspx
升级到 JDK 5.0 Update 1 or 2 定制部署 WebServices - Axis 终于正常了!
http://blog.csdn.net/playyuer/archive/2005/03/01/306360.aspx
为了使程序及环境简洁,本文均使用最简陋的 NotePad 编写程序或配置环境,命令行编译程序!
不使用任何集成开发环境(IDE)!
相关源程序下载:
http://www.cnblogs.com/Files/Microshaoft/jws.net.rar
Sever Side:
采用 Resin/Tomcat + Axis 来部署 java Web Service。
1.首先确认 Windows 系统中安装(不一定要安装,解压到目录即可)了如下软件:
J2SE(TM) Development Kit 5.0 Update 4 (JDK 5.0 Update 4):
http://java.sun.com/j2se/1.5.0/download.jsp
Web Application Server: Resin/Tomcat 二者有其一即可:
Resin v2.1.16:
http://www.caucho.com/download/resin-2.1.16.zip
Tomcat v5.5.9:
http://apache.justdn.org/jakarta/tomcat-5/v5.5.9/bin/jakarta-tomcat-5.5.9.zip
下载后解压到某目录,如:
D:\dotNet.J2EE\resin-2.1.16\
或
D:\dotNet.J2EE\jakarta-tomcat-5.5.9\
Web Services - Axis
http://apache.freelamp.com/ws/axis/1_2_1/axis-bin-1_2_1.zip
下载后解压到某目录,如:
D:\dotNet.J2EE\axis-1_2_1\
然后将该目录下的 webapps 下的 axis 子目录,复制到:
D:\dotNet.J2EE\resin-2.1.16\webapps\
或
D:\dotNet.J2EE\jakarta-tomcat-5.5.9\webapps\
即生成如下路径:
D:\dotNet.J2EE\resin-2.1.16\webapps\axis\
或
D:\dotNet.J2EE\jakarta-tomcat-5.5.9\webapps\axis\
至此就具备运行 Axis 的基本条件了:
先做一下 Java Web Application Server 端口配置到 1080:
(如果你的端口不冲突,可以跳过此步)
Resin:
D:\Resin\resin-2.1.16\conf\resin.conf 用 IE 访问:
http://localhost:1080/axis/
应该看到:
Apache-AXIS 主页
点击超链接:
Validation - Validate the local installation's configuration
see below if this does not work.
访问页面:
http://localhost:1080/axis/happyaxis.jsp
就可以检测当前环境是否满足运行 Apache-AXIS。
根据页面提示下载到所有 zip 文件:
http://192.18.97.238/ECom/EComTicketServlet/BEGIN8656005BAB2BAA9A4B1688FB7D4AF765/-2147483648/972910143/1/359918/359906/972910143/2ts+/westCoastFSEND/7017-jaf-1.0.2-oth-JPR/7017-jaf-1.0.2-oth-JPR:1/jaf-1_0_2-upd2.zip
http://192.18.97.186/ECom/EComTicketServlet/BEGIN87ACAEFABC9A644DBEC89773E476BF24/-2147483648/972928407/1/540782/540770/972928407/2ts+/westCoastFSEND/javamail-1_3_2-oth-JPR/javamail-1_3_2-oth-JPR:1/javamail-1_3_2-upd.zip
http://xml.apache.org/security/dist/java-library/xml-security-bin-1_2_1.zip
各自解压后得到所需所有 jar 包文件:
activation.jar
axis-ant.jar
axis.jar
commons-discovery-0.2.jar
commons-logging-1.0.4.jar
commons-logging-api.jar
commons-logging.jar
imap.jar
jaxrpc.jar
log4j-1.2.8.jar
mail.jar
mailapi.jar
pop3.jar
saaj.jar
smtp.jar
tt.txt
wsdl4j-1.5.1.jar
xalan.jar
xercesImpl.jar
xml-apis.jar
xmlsec-1.2.1.jar
xmlsecSamples-1.2.1.jar
xmlsecTests-1.2.1.jar
将这些文件全部复制到如下目录:
D:\dotNet.J2EE\resin-2.1.16\webapps\axis\WEB-INF\lib
或
D:\dotNet.J2EE\jakarta-tomcat-5.5.9\webapps\axis\WEB-INF\lib
再次访问:
http://localhost:1080/axis/happyaxis.jsp
以验证是否完全满足运行 Apache-AXIS 的环境,
如无错误就说明已经配置好服务器了!
<http port='1080'/>
Tomcat:
D:\dotNet.J2EE\jakarta-tomcat-5.5.9\conf
<Connector port="1080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
然后,启动 Java Web Application Server:
Resin:
D:\dotNet.J2EE\resin-2.1.16\bin\httpd.exe
Tomcat:
(启动 Tomcat 要预先配置 JAVA_HOME 环境变量)
D:\dotNet.J2EE\jakarta-tomcat-5.5.9\bin\start.bat
2.编写 Java Web Service 程序:
其实实现 Web Service 的 Java 类没啥特殊的,
下面程序就是:
实现支持文件分块多点异步上传的 Java Web Services (Server Side)//=========================================================================
Class1.jws
Class1.java
javac Class1.java
java -cp %axis_lib%;%classpath%;. org.apache.axis.client.AdminClient deploy.wsdd -p1080
*/
import java.io.*;
import java.lang.*;
public class Class1
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
public String SayHelloTo(String Who)
{
return "你好: " + Who;
}
public String SayHelloToo(String Who)
{
return "你好: " + Who;
}
public String UploadFileBytes(byte[] Bytes,String FileName)
throws Exception
{
return UploadFileChunkBytes(Bytes, 0, FileName);
}
public String UploadFileChunkBytes(byte[] Bytes,int Position,String FileName)
throws Exception
{
//"d:\\Server\\Upload\\" 为服务器端路径
String ServerPath = "d:\\Server\\Upload\\";
java.io.RandomAccessFile raf = new java.io.RandomAccessFile(ServerPath + FileName,"rws");
raf.skipBytes(Position);
raf.write(Bytes);
//该 Bytes 的字节要写到 服务器端 相应文件的从 Position 开始的字节
raf.close();
raf = null;
System.gc();
return FileName + " 文件块: 位置[" + Position + "," + (Position + Bytes.length) + "] 大小(" + Bytes.length + ") 上传成功!";
}
public String CreateBlankFile(String FileName,int Length) //建议由客户端同步调用
throws Exception
{
//"d:\\Server\\Upload\\" 为服务器端路径
String ServerPath = "d:\\Server\\Upload\\";
FileOutputStream fos = new FileOutputStream(ServerPath + FileName);
fos.write(new byte[Length], 0, Length);
fos.close();
fos = null;
System.gc() ;
return FileName + " (" + Length + ") 空白文件已经创建!";
}
public byte[] DownloadFileBytes(String FileName)
throws Exception
{
File f = new File(FileName);
FileInputStream fis = new FileInputStream(f);
int i = (int) f.length();
byte[] b = new byte[i];
fis.read(b,0,i);
fis.close();
fis = null;
f = null;
System.gc() ;
return b;
}
}
//=========================================================================
如果上面程序存为: Class1.jws 文件,直接复制到:
D:\dotNet.J2EE\resin-2.1.16\webapps\axis\Class1.jws
或
D:\dotNet.J2EE\jakarta-tomcat-5.5.9\webapps\axis\Class1.jws
即可通过 IE 直接访问如下 URL 地址:
http://localhost:1080/axis/Class1.jws
这就如同 .Net Web Service .asmx 的前代码方式
接下来着重介绍一下定制部署 Java Web Service
将上面程序存为: Class1.java 文件,并用如下命令行编译:
javac.exe Class1.java
生成的 Class1.class 文件复制到:
D:\dotNet.J2EE\resin-2.1.16\webapps\axis\WEB-INF\classes\Class1.class
或
D:\dotNet.J2EE\jakarta-tomcat-5.5.9\webapps\axis\WEB-INF\classes\Class1.class
编写部署文件
deploy.wsdd (undeploy.wsdd): 在通过如下命令行部署该 Web Service ,此时 Java Web Application Server 应已经运行:
java -cp %axis_lib%;%classpath%;. org.apache.axis.client.AdminClient deploy.wsdd -p1080
如果部署成功屏幕将会输出:
<service name="Class1Service" provider="java:RPC">
<parameter name="className" value="Class1"/>
<parameter name="allowedMethods" value="*"/>
</service>
</deployment>
<Admin>Done processing</Admin>
如果在 Resin 上部署失败,可在:
D:\Resin\resin-2.1.16\conf\resin.conf
中:
Tomcat 上暂没发现上面部署失败问题!
部署成功后,在下面文件:
D:\dotNet.J2EE\resin-2.1.16\webapps\axis\WEB-INF\server-config.wsdd
或
D:\dotNet.J2EE\jakarta-tomcat-5.5.9\webapps\axis\WEB-INF\server-config.wsdd
中,已经被自动添加如下配置:
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="Class1"/>
</service>
当然也可以手工直接填写配置 server-config.wsdd 而不使用命令行工具!
至此如不出意外 java Web Service 已经部署完毕!
Client Side:
http://localhost:1080/axis/services/Class1Service?wsdl
已经可以正常访问!
java Client:
还可以用解压 axis-bin-1_2_1.zip 后:
D:\dotNet.J2EE\axis-bin-1_2_1\axis-1_2_1\samples\client\DynamicInvoker.java
用如下命令行编译后:
javac -cp %classpath%;%axis_lib%;. -Xlint:unchecked DynamicInvoker.java
生成 DynamicInvoker.class,
再如下命令行运行:
java -cp %axis_lib%;%classpath%;. DynamicInvoker http://localhost:1080/axis/services/Class1Service?wsdl SayHelloTo 小平
其中 %axis_lib% 为环境变量! 其中 %classpath% 为环境变量!
测试如果正常则输出:
Preparing Axis dynamic invocation
Executing operation SayHelloTo with parameters:
in0=小平
SayHelloToReturn=你好: 小平
Done!
.Net Client:
先用如下命令生成代理类的程序 C# 代码:
% Visual Studio .Net 2003 安装目录下的 %\SDK\v1.1\Bin\wsdl.exe
具体命令行如下:
wsdl.exe /l:CS /out:Class1ServiceProxy.cs http://localhost:1080/axis/services/Class1Service?wsdl
然后用如下命令编译生成程序集: Class1ServiceProxy.dll
csc /t:library Class1ServiceProxy.cs 然后用如下命令编译生成程序集: Class1ServiceClient.exe
csc Class1ServiceClient.cs /r:Class1ServiceService.dll
using System.IO;
public class Class1
{
static void Main(string[] args)
{
//Download(ServerSidepath, ClientSidePath)
//Download(@"客户端本地路径", @"服务器端路径");
Download(@"d:\server\download\editplus.rar", @"e:\download_editplus.rar");
System.Console.WriteLine("down End");
System.Console.WriteLine("同步 up file exec ");
UploadFile(@"d:\Northwind.mdb");
System.Console.WriteLine("同步 up file End\n");
System.Console.WriteLine("异步 up chunks exec ");
UploadFileChunks(@"d:\editplus.rar", 64);
System.Console.ReadLine();
}
public static void UploadFile(string LocalFileName)
{
Class1Service xx = new Class1Service();
FileStream fs = new FileStream(LocalFileName, FileMode.Open); //Client Side Path
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
//调用 "同步执行" 的本地 Web Sevices 代理类的&nb
发表评论
-
Visual Editor插件下载、安装问题(Eclipse3.1.1) 及解决办法
2007-12-03 12:11 6991http://download.eclipse.org/too ... -
以前正规表达式的学习笔记
2007-10-16 22:50 1274js 代码 以前正规 ... -
阿里巴巴--文字上下滚动代码
2007-10-12 14:31 2526http://www.soojs.com/t/?p=947&a ... -
Java heap space 解决方法
2007-10-12 14:20 19408因为程序要从数据读取近10W行记录处理,当读到9W的时候就出现 ... -
Struts-Layout
2007-10-07 21:47 1124... -
Java实现HTTP的断点续传
2007-08-20 14:29 1407(一)断点续传的原理 其实断点续传的原理很简单,就是在Ht ... -
Java开发框架调查:6%的JSF欲撼动21%的Struts
2007-08-15 09:17 1429来自:CSDN 马京 共有评论(25)条 发表评论 ... -
使用技巧:Java实现随机验证码功能实例
2007-08-07 21:39 4871现在许多系统的注册、登录或者<nobr>发布信息& ... -
Java老师培训讲稿
2007-08-06 21:17 1297暑期的Java老师培训这月就要在八个城市展开了,我的职责和去年 ... -
我的Java程序在做什么呢?
2007-08-06 21:01 1914经常被客户问到这样的问题,我想知道我的Java应用到底在干什么 ... -
用P3P解决第三方cookie存取的问题
2007-06-29 14:48 2511... -
如何创建 Eclipse 自定义向导
2007-06-22 09:02 3438Eclipse 框架和集成开发 ... -
单元测试利器 JUnit 4
2007-06-20 10:43 2147本文主要介绍了如何使用 JUnit 4 提供的各种功能开展有效 ... -
[收藏]利用JExcelApi来动态生成excel文档
2007-06-15 08:47 2201首先,请到http://www.andykhan.com/je ... -
通过JDBC连接Oracle数据库中的十大技巧
2007-06-13 08:52 11851、在客户端软件开发中 ... -
java虚拟机jvm关于内存的设置与调优
2007-03-08 11:10 43049JVM内存的设置的原理 默认的java虚拟机的大小比较小 ... -
java读取配置文件的几种方法
2007-03-01 09:10 2713在现实工作中,我们常常需要保存一些系统配置信息, ... -
System.properties列表
2007-02-01 12:23 1401由于编辑器的原因,还是上传个附件把,大家看附件把! -
JAVA操作EXCEL文件
2007-02-01 12:21 2393使用Windows操作系统的朋友对Excel(电子表格)一定不 ... -
java进阶之字符串替换的思考
2007-01-30 17:51 1857最近在开发的过程中用到了字符串的替换, 本来觉得挺简单的问题, ...
相关推荐
《iPhone高级编程:使用Mono Touch和.NET/C#》从基本的概念入手,全面地介绍了基于monotouch使用C#/.net进行iphone应用程序开发。从monotouch和.net开发环境到objective-c和c#开发语言,从基于monotouch进行iphone...
.NET/C#⾯试题汇总系列:基础语法 .NET/C#⾯试题汇总系列:⾯向对象 .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF! .NET/C#⾯试题汇总系列:多线程 .NET/C#⾯试题汇总系列:ASP.NET MVC .NET/C# ⾯...
C#开发Android应用实战——使用Mono for Android和.NET/C#(移动与嵌入式开发技术)是一本很不错的书籍,但网上下载的多是不完整的。该版本是完整版。希望对大家有所帮助。
Java程序调用.NET/C#的Web服务是一种跨平台的交互方式,主要依赖于SOAP(Simple Object Access Protocol)协议,使得不同编程语言开发的应用程序能够相互通信。在本场景中,用户已经提供了一个.NET的Web服务,而我们...
[Vb.Net/C#/J#] 需求:My_FastReport.dll/adodb.dll/Interop.My_FastReport.dll [C++] 需求:My_FastReport.dll/adodb.dll/Interop.My_FastReport.1.0.dll .net 本案例基于.net2005开发平台 QQ:122391458 E-mail:Hz...
最新 价值15K的大型微信二次开发框架源码免费供大家开发学习。 功能涵盖现有所有微信开发接口,功能丰富,供各位微信开发的朋友下载学习。 ...文件经过.7Z格式高压缩比压缩,仅20多MB,方便大家下载。
[Vb.Net/C#/J#] 需求:My_FastReport.dll/adodb.dll/Interop.My_FastReport.dll [C++] 需求:My_FastReport.dll/adodb.dll/Interop.My_FastReport.1.0.dll .net 本案例基于.net2005开发平台 QQ:122391458 E-mail:Hz...
- **CTS(Common Type System)**:全称为公共类型系统,它是CLR的一部分,包含了VB.NET/C#.NET/J#等不同语言的所有数据类型信息。CTS描述了类型在运行时如何声明、使用和管理,促进了跨语言集成、类型安全和高性能...
.net面试题汇总,涵盖基础语法,面向对象,集合,异常,泛型,LINQ,委托,多线程,数据库概念
ASP.NET 中使用 C# 调用 Java Web Service ...在 ASP.NET 中使用 C# 调用 Java Web Service 需要了解 Web Service 的基本概念、使用 C# 调用 Java Web Service 和在 ASP.NET 中实现 Web Service 的客户端和服务器端。
【ASP.NET/C#图书馆管理系统】是一款基于ASP.NET技术并采用C#编程语言开发的应用系统,专为计算机毕业设计而设计,适用于学习和实践。在这个项目中,开发者利用了微软的.NET框架,结合C#的强大功能,构建了一个高效...
ASP.NET/C#火车订票系统是一款基于Web技术的在线预订火车票的应用程序,它整合了多项功能以提供全面的火车票务服务。该系统利用ASP.NET框架和C#编程语言,构建了一个用户友好的交互界面,同时实现了后端的数据处理和...
ASP.NET/C#超市库存管理系统是一款基于ASP.NET技术开发的,用于超市日常运营的全面库存管理软件。该系统涵盖了商品入库、出库、员工信息管理、查询、统计以及数据查询与统计等多个关键功能,旨在提高超市的运营效率...
微信公众平台(asp.net/c#版) 欢迎下载...查看
【标题解析】:“毕业设计----ASP.NET/C#家具网上购物网站”这个标题表明这是一个基于ASP.NET技术,使用C#编程语言开发的项目,主要用于家具类产品的在线销售。它是一个计算机科学或信息技术专业的毕业设计,意味着...
综上所述,这个项目提供了一个实践.NET/C# Socket编程的实例,特别适合学习网络通信、多线程处理以及WinForm应用开发。通过分析源代码和参考提供的教程,开发者可以深入了解如何使用C#实现一个多人聊天系统,以及...
"一个完全免费的WEB打印插件控件,支持:C#/vb.net/asp/PHP/JSP,也有实例" 提供了一个解决方案,允许开发者在各种Web应用平台上实现便捷的打印功能。 这个插件控件兼容多种编程语言,如C#、VB.NET、ASP、PHP和JSP,...
一个应用程序框架,您可以将它集成到任何 .NET/C# 应用程序中。让 .NET 开发更简单,更通用,更流行。
ASP.NET/C#与SQL Server是开发企业级Web应用程序的常用技术栈,尤其在构建复杂的管理信息系统,如学生学籍管理系统时。在这个系统中,ASP.NET提供了服务器端的编程框架,而C#则作为主要的编程语言,用于实现业务逻辑...
一个Android IOS Java通用的AES128加密解密Demo、这个Demo可以满足用Java开发的后端接口、但是如果不巧你用的.net开发的后台程序、那么我们又应该怎么去编写后端的程序呢?今天给大家分享一个比较强大的Demo、可以...