就他吧-9ta8为您提供:身份证查询、15位转16位身份证,手机号码归属地查询,IP地址查询服务,城市天气预报查询,
列车时刻表简易快速查询等等查询服务,就他吧欢迎您的光临!!
梦幻Dot Net
科学地研究编程,
品味开发的艺术
博客园
首页
社区
新随笔
联系
订阅
管理
随笔-96 评论-675 文章-7 trackbacks-102
.net反射技术的应用—如何调用Java的COM接口
前两天做了一个银行的电子支付接口,我用的是C#开发语言,银行给我们的是Java的COM组件(名字是:RSASig.class),按照银行的说明,一步一步做了配置,大家都知道Java的COM在windows上注册之后是没有动态链接库的,那该怎么在C#中调用其中的方法呢?如果用过.Net反射技术的朋友们很快就会想到使用反射。下面是C#实现反射代码:
1
Assembly assembly
=
null
;
2
Type type
=
null
;
3
string
dllPath
=
@"
c:\Reflected.dll
"
4
try
5
{
6
assembly
=
Assembly.LoadFile(dllPath);
7
type
=
assembly.GetType(typeName,
true
,
true
);
//
cMyResult
8
}
9
catch
(FileNotFoundException)
10
{
11
errMsg
=
"
Could not load Assembly: \
""
+ dllPath +
"
\
""
;
12
return
null
;
13
}
14
catch
(TypeLoadException)
15
{
16
errMsg
=
"
Could not load Type: \
"
string
\
"
\n from assembly: \
""
+ dllPath +
"
\
""
;
17
return
null
;
18
}
19
20
MethodInfo method
=
type.GetMethod(methodName);
//
提取方法信息
21
object
obj
=
assembly.CreateInstance(typeName);
//
创建实例
22
23
object
s
=
method.Invoke(obj,parameters);
//
new object[]{"jiangli"});
24
assembly
=
null
;
25
type
=
null
;
26
method
=
null
;
27
从这段代码中可以看出,这是需要动态链接库的。而Java却没有,怎么用呢?这是摆在面前的一个问题。再仔细看看他的说明,他们在ASP中是这么调用的,Set Obj = Server.CreateObject("ccb.pub.RSAsig"),灵机一动,在VB中是不是也可以这么用呢?马上就就在VB中作了一个实验,结果成功了,VB中的代码是这样实现的:
Namespace test
Namespace
test
Public
Class cJava
Class
cJava
Dim
obj
As
Object
=
Nothing
Public
Sub New()
Sub
New
()
obj
=
GetObject
(
"
java:RSASig
"
)
End Sub
Public
Function generateKeys()
Function
generateKeys()
As
Object
Return
obj.generateKeys()
End Function
Public
Function getPrivateKey()
Function
getPrivateKey()
As
String
Return
obj.getPrivateKey()
End Function
Public
Function getPublicKey()
Function
getPublicKey()
As
String
Return
obj.getPublicKey()
End Function
'
签名结果信息
Public
Function generateSigature()
Function
generateSigature(
ByVal
singstr
As
String
)
As
String
Return
obj.generateSigature(singstr)
End Function
Public
Function setPublicKey()
Function
setPublicKey(
ByVal
pubKey
As
String
)
As
String
Return
obj.setPublicKey(pubKey)
End Function
Public
Function verifySigature()
Function
verifySigature(
ByVal
orginstr
As
String
,
ByVal
sigStr
As
String
)
As
Object
Return
obj.verifySigature(sigStr, orginstr)
End Function
End Class
End Namespace
于是就把它封装成类库,然后在C#中调用,OK,成功了。苦苦寻找了一个星期.net怎么调用Java类中的方法,终于在此画上了一个句号。
不知道这算不算是.net和java互操作的一个案例。希望这篇文章能对还正在苦苦寻觅.net和java互操作的朋友有点启发。
如果各位大虾还有别的更简便的方法,请指教。
posted on 2005-08-15 15:01
振河
阅读(2545)
评论(10)
编辑
收藏
所属分类:
C#
评论:
#1楼
2005-08-16 10:33 |
小飞[未注册用户]
c#调用方法不对,可以直接用C#去反射!
回复
引用
#2楼
2005-08-16 11:19 |
振河
@小飞
能不能介绍详细点?
回复
引用
#3楼
2005-08-16 14:45 |
flyarror[未注册用户]
搂主你做的是那个银行的?我好像以前也作过的,呵呵
回复
引用
#4楼
2005-09-02 10:16 |
ynx[未注册用户]
建行的
回复
引用
#5楼
2005-12-03 01:12 |
xiaodao[未注册用户]
用Reflecte工具直接看VB.NET的GetObject方法是怎么实现的,直接就调相关的类就行了。
回复
引用
#6楼
2006-08-29 08:56 |
我用了[未注册用户]
obj = GetObject("java:RSASig")
这一句出错啊。
提示无法注册ActiveX组件
回复
引用
#7楼
2007-01-09 14:01 |
地方[未注册用户]
地方
回复
引用
#8楼
2007-01-09 14:02 |
***[未注册用户]
大家好.
回复
引用
#9楼
2007-01-09 14:40 |
温家宝[未注册用户]
大家好啊
回复
引用
#10楼
2007-05-28 14:25 |
cybernaute[未注册用户]
你好,能具体点么?
联系,icyker@gmail.com
回复
引用
刷新评论
切换模板
发表评论
昵称:
[登录]
[注册]
主页:
邮箱:
(仅博主可见)
验证码:
看不清,换一个
评论内容:
登录
注册
[使用Ctrl+Enter键快速提交评论]
0
215368
导航:
网站首页
社区
新闻
博问
闪存
网摘
招聘
找找看
Google搜索
China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务
相关文章:
最新IT新闻:
19岁天才黑客发布首个iPhone 3GS破解软件
新浪邮箱大本营粉墨登场!Sina.cn开放注册
IE市场份额首次跌破60%
Google App Engine宕机6小时——云的安全在哪里?
微软新推社交网站Windows Live Planet
相关链接:
清新的空气清晰的你愉快的心情陪伴你,
欢迎来到梦幻Dot Net。
<
2005年8月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
给我留言
查看留言
我参与的团队
Design & Pattern团队(0/0)
.NET 控件与组件开发(0/0)
敏捷软件开发组织(0/0)
北京.NET俱乐部(0/0)
Dot Net Web服务和Windows服务开发(0/0)
正则表达式团队(0/0)
随笔分类
.Net设计模式(21)
ASP.Net(9)
C#(12)
C#2005(3)
DotText
JavaScript(8)
Reporting Services(7)
SD Channel
SQL Server 2000(10)
Visio Studio 2005 WPF(2)
Web and Windows Service(5)
其他(8)
软件工程(7)
正则表达式(2)
随笔档案
2008年12月 (1)
2008年10月 (2)
2008年3月 (1)
2008年1月 (2)
2007年12月 (1)
2007年11月 (1)
2007年10月 (4)
2007年8月 (1)
2007年7月 (1)
2007年5月 (1)
2007年4月 (1)
2007年3月 (1)
2007年1月 (2)
2006年12月 (1)
2006年10月 (1)
2006年9月 (2)
2006年8月 (1)
2006年7月 (1)
2006年4月 (1)
2006年3月 (4)
2006年2月 (1)
2006年1月 (1)
2005年12月 (1)
2005年11月 (1)
2005年10月 (5)
2005年9月 (11)
2005年8月 (36)
2005年7月 (10)
文章分类
ASP.NET(2)
安全与加密(1)
管理(1)
生活(1)
数据库(2)
文章档案
2007年12月 (1)
2005年10月 (1)
2005年9月 (1)
2005年8月 (4)
相册
宝贝动物
精彩贴图
生活餐具
.NET技术网站
ASP.NET开发实践系列课程
ASP酷技术网
CodeProject
KnowDotNet
Visual Studio.net专栏
博客堂
发赛特技术网
酷网博客
孟宪会.NET开发者园地
太平洋开发编程技术与实例
天新网DotNet
新一代技术网
站长中国
正则表达式
中国C#技术网站
中文C#站
其他技术网
ASP.NET Forums 官方中文网站
MSDN中文站
动态网站制作指南
正则表达式网站(Eng)
中国BS网
中国Office Online
中国WEB开发者网络
数据库技术网站
SQL Server 提示与技巧
数据仓库之路
友情连接
就他吧服务
就他吧为您提供软件开发,网站设计,网站开发维护,各种办公软件、管理软件开发等等,详情请进入
http://www.9ta8.com
幽默笑话
笑话大全、智慧快餐、暴笑网文、高笑图片、恐怖故事、幽默短信、相声小品尽在其中,就他吧幽默站开心您每一天
积分与排名
积分 - 312678
排名 - 129
最新评论
1. re: 用实例解说Dot Net设计模式——装饰模式
Protected WithEvents cp As System.Web.UI.HtmlControls.HtmlTableCell
這句翻譯成C#怎麼定義啊 @慢一拍
--铁打的西西。
2. re: 用实例解说Dot Net设计模式——装饰模式
Protected WithEvents cp As System.Web.UI.HtmlControls.HtmlTableCell
這句翻譯成C#怎麼定義啊
--铁打的西西。
3. re: 用实例解说Dot Net设计模式——装饰模式
Protected WithEvents cp As System.Web.UI.HtmlControls.HtmlTableCell
這句翻譯成C#怎麼定義啊
--铁打的西西。
4. re: DotNet WebService和WindowsService团队开通
1.博客园帐户名:Jeriffe2.电子邮件:jiang-fei12356@126.com3.博客园地址:4.申请目的:Web和Windows服务一直是我期望的。...
--Jeriffe
5. re: 分布式数据库概述
顶上先...
--Old
阅读排行榜
1. 全面剖析C#正则表达式(28359)
2. 正则表达式基础知识(27515)
3. C#反射实例讲解(17329)
4. .NET反射、委托技术与设计模式(12515)
5. .Net调用Java的WebService之亲身体验(11938)
评论排行榜
1. DotNet WebService和WindowsService团队开通(130)
2. 如何掌握并在实践中自如运用设计模式(58)
3. C#写的一个代码生成器(36)
4. 用.Net开发Windows服务初探(27)
5. .NET反射、委托技术与设计模式(22)
就他吧-9ta8伴您开心每一天