我在写一个Java Dll客户端,它完成从Interface Repository.接口库中读取信息。我必须执行一个含有外部类型参数的远程方法,这个外部类型是用户自定义的数据类型。我将如何建立这个需求的模型,使其能够调用操作方法并且读取结果呢?现在我可以读取该方法所使用的参数名称,参数类型以及参数个数。我尝试过使用动态factory来构造dynstruct,但是不行。那么使用什么方法我才能将用户自定义的数据类型作为外部参数传递给COBRA方法呢?
这是个好问题,因为J2EE动态调用接口(Dll)客户端模型允许对基于远程过程调用(RPC)的Web服务进行存取,即使在运行之前并不知道这个服务的详细信息。创建一个Dll客户端,请按照以下步骤进行:
1:使用javax.xml.rpc.ServiceFactory类创建一个服务对象,方法如下:
ServiceFactory factory = ServiceFactory.newInstance();
Service service = factory.createService(new QName(theServiceQName));
2:在服务对象中,创建一个调用对象(Call object),方法如下:
QName port = new QName(theQNnamePort);
Call call = service.createCall(port);
3:作为对Web服务描述语言(WSDL)文件单元的响应,在调用对象(Call object)中设置服务终点地址,方法如下:
call.setTargetEndpointAddress(theEndpointAddress);
4:在调用对象(Call object)中设置适当的属性。
5:指定该方法的返回类型、名称以及参数,方法如下:
QName qNameRetType = new QName(NS_XSD, "theXSDType");
call.setReturnType(qNameRetType);
call.setOperationName(new QName(theOperationNamespaceValue,
"theOperationName"));
call.addParameter("String_1", QNAME_TYPE_STRING,
ParameterMode.IN);
6:在调用对象(Call object)中调用远程方法,方法如下:
String[] params = { "param1" };
String result = (String)call.invoke(params);
