[200分]j2ee中如何通过web service访问一个c++开发的系统中的API,急等-----急等! 还有别的方法吗!我们做的系统是用j2ee架构开发的!要访问一个c++开发的系统,对方系统提供了api接口!如何访问呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果对方已经发布成webservice了的话,调用方法都是一样的,先得到wsdl文件,用axis中的wsdl2java生成客户端框架,剩下的就和使用本地的方法没什么区别了。 方法有多种,但你的我觉得可以用socket通信更方便些。因为webservice的xml数据格式定义很不统一,对接很困难。还可以考虑com和java的native code方式 全部楼上的兄弟基本上都是这个意思,既然WebService是个跨平台的服务,那接口一定是标准的啦,这里是基于wsdl来定义的,至于实现调用嘛,比较多,我用过的apache的axis还是不错的,比较简单,可以去看看 我觉得你应该先看看webservice的实例,然后问题就比较清楚了,具体怎么做,在这里是说不清楚的,至于使用的工具,我上面介绍了一个axis,可以去看看,其他的也有很多 JB:import from webservices:and then it will build classes of interface.the end:invoke the interface as often as you do. 我提供两种方案: (1):用JMS,本人也是刚学. 但技术上学可行的; (2):CORBA, 通用对象请求代理, 不过设计上比较难. 但异构系统大都是采用这种方式. 以上仅供参考. 不用懂c++,用统一的标准去访问webservice,在java中实现很容易 我们目前大量的用到了java的代码调用c++代码的例子方法是java提供的标准的jni的做法,下面是例子1 做一个java的类package com.dayang.util;/** * 这个类通过dll访问域用户的信息,从而知道这个用户是否经过 了认证 * @author red * @version 1.0 2004-9-3 */public class DomainUserAuthenticator { /** * 用户是否得到认证 * @param userId 用户ID * @param password 用户密码 * @return */ public synchronized native boolean authenticate(String userId, String password); /**取到用户所属的组 * @param userId 用户ID * @return 用逗号隔开的组的字符串 */ public synchronized native String getGroups(String userId); public synchronized native String getRealName(String userId); static { try { System.loadLibrary("DOMAIN_USER"); } catch (UnsatisfiedLinkError e) { e.printStackTrace(); } catch (SecurityException securityexception) { securityexception.printStackTrace(); } } public static void main(String[] args) { DomainUserAuthenticator authenticator = new DomainUserAuthenticator(); System.out.println( "return:" + authenticator.authenticate("ss","ss")); System.out.println( "return:" + authenticator.authenticate("sssdfdsdf","sfsafss")); String s = authenticator.getGroups("zuoxiaojun"); System.out.println("s:" + s); String realname=authenticator.getRealName("red"); System.out.println("realname:"+realname); }}2 要求c++的开发者开发一个java可以调用的dll,也就是DOMAIN_USER.dll3 这个dll的头文件是用java的javah -jni命令生成的如果还是不懂,请看tij的关于jni的附录 我有个师傅说开发JAVA程序用双眼最好:眨左眼表示1,眨右眼表示0,这样就可以躺在床上写JAVA程序了,这样开发出来的程序效率超高,而且成本很低,而且可以劳逸结合,写程序的时候女朋友也可以帮上忙,我感觉比什么jbuilder,什么ECLIPSE,还有什么NetBean的划算和好玩多了!只是我还没练就! birt报表记录出现重复记录 Web App使用Quartz实现java schedule job 服务端分页技术探讨 关于编码的问题。实在让我头疼。 TOMCAT+SQL2000+JSP怎样才能运行顺利哟? 请问在做J2EE项目时,EAR包有什么作用阿?是必须要的吗? tomcat进入控制平台,页显无法显示的问题 在jboss3中怎样添加新的jdbc驱动,怎样配置mssql server的数据库连接池。 Dom问题 刚用jbuilder8,一个非常简单而恼火的问题 关于JDBC访问ACCESS数据库的问题,找了半天不知道错误在哪,高手帮我看看。 请问大家介绍一些比较好的缓存包,谢谢。
先得到wsdl文件,用axis中的wsdl2java生成客户端框架,
剩下的就和使用本地的方法没什么区别了。
import from webservices:and then it will build classes of interface.the end:
invoke the interface as often as you do.
(1):用JMS,本人也是刚学. 但技术上学可行的;
(2):CORBA, 通用对象请求代理, 不过设计上比较难. 但异构系统大都是采用这种方式.
以上仅供参考.
方法是java提供的标准的jni的做法,下面是例子
1 做一个java的类
package com.dayang.util;/**
* 这个类通过dll访问域用户的信息,从而知道这个用户是否经过 了认证
* @author red
* @version 1.0 2004-9-3
*/
public class DomainUserAuthenticator {
/**
* 用户是否得到认证
* @param userId 用户ID
* @param password 用户密码
* @return
*/
public synchronized native boolean authenticate(String userId, String password); /**取到用户所属的组
* @param userId 用户ID
* @return 用逗号隔开的组的字符串
*/
public synchronized native String getGroups(String userId); public synchronized native String getRealName(String userId); static {
try {
System.loadLibrary("DOMAIN_USER");
} catch (UnsatisfiedLinkError e) {
e.printStackTrace();
} catch (SecurityException securityexception) {
securityexception.printStackTrace();
}
} public static void main(String[] args) {
DomainUserAuthenticator authenticator = new DomainUserAuthenticator();
System.out.println( "return:" + authenticator.authenticate("ss","ss"));
System.out.println( "return:" + authenticator.authenticate("sssdfdsdf","sfsafss"));
String s = authenticator.getGroups("zuoxiaojun");
System.out.println("s:" + s);
String realname=authenticator.getRealName("red");
System.out.println("realname:"+realname);
}}
2 要求c++的开发者开发一个java可以调用的dll,也就是DOMAIN_USER.dll
3 这个dll的头文件是用java的javah -jni命令生成的
如果还是不懂,请看tij的关于jni的附录