当前位置: 首页 > 工具软件 > WSIF > 使用案例 >

WSIF的使用

符俊材
2023-12-01

WSIF 提供了用于调用 Web 服务的 Java API,与调用它所依据的服务格式或转输协议无

关。它处理 WSIF 的目标中确定的所有问题。
WSIF 提供以下功能:

1.具有可对任何 Web 服务进行独立于绑定的访问的 API。
2.它紧密依赖于 WSDL,因此可以调用可在 WSDL 中描述的任何服务。
3.允许对 Web 服务进行无占位程序(完全动态)调用。
4.您可以在运行时将新的或更新的绑定实现插入 WSIF。
5.您可以推迟绑定选择直至运行时。
6.WSIF 是为在非受管环境(单机)和受管容器中工作而设计的。您可以使用 JNDI 来查

找 WSIF 服务,否则将在 WSDL 定义中读取。

在使用WSIF开发相关的web services应用时,需要描述WSDL文档的信息,这也许正是

体现了XML的自描述性。如果开发一个解析wsdl文档的程序,提取相关的方法和参数,然

后在WSIF的程序中调用,这样就形成了一个基于Web Services的自适应的应用。

目前在使用WSIF来制作客户端程序时,可能有一个问题在于用户认证上还存在许多的问题

。其API还没有完善;具体见如下内容:
Uses of Class
org.apache.wsif.wsdl.AuthenticatingProxyWSDLLocatorImpl
No usage of org.apache.wsif.wsdl.AuthenticatingProxyWSDLLocatorImpl

参见一个基于WSIF的client实例:

import org.apache.wsif.WSIFException;
import org.apache.wsif.WSIFMessage;
import org.apache.wsif.WSIFOperation;
import org.apache.wsif.WSIFPort;
import org.apache.wsif.WSIFService;
import org.apache.wsif.WSIFServiceFactory;
import org.apache.wsif.wsdl.AuthenticatingProxyWSDLLocatorImpl;

public class WisfTest{
 public static void main(String arg[]){
   try{
  String url="http://127.0.0.1:7001/axis/services/Version?wsdl";
  WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
 // AuthenticatingProxyWSDLLocatorImpl awsli=new AuthenticatingProxyWSDLLocatorImpl(url,"gaolong1","19831001");
  WSIFService service = factory.getService(url,"http://127.0.0.1:7001/axis/services/Version","VersionService","http://127.0.0.1:7001/axis/services/Version","Version");
  //其参数分别代表:WSDL地址参数,Service命名空间参数,WSDL文档中Service名称参数,WSDL文档中的portType命名空间参数,WSDL文档中的portType名称参数
  WSIFPort port = service.getPort();
  WSIFOperation operation = port.createOperation("getVersion","getVersionRequest",null);
  //根据给定的操作名称参数operationName,输入元素名称inputName,输出元素名称outputName.
  WSIFMessage input = operation.createOutputMessage();
  input.setObjectPart("name","gaolong");
  //设置soap消息中part的表现内容
  WSIFMessage output = operation.createOutputMessage();
  WSIFMessage fault = operation.createFaultMessage();
  operation.executeRequestResponseOperation(input,output,fault);
  //执行请求和接受响应消息的方法,第一个组作为输入的input消息被发送到服务器端,第二个代表输入响应的信息会在执行后包含着返回的消息,第三个消息用来封装错误和状态消息。
  System.out.println(output.getObjectPart("getVersionReturn"));//获得这个soap消息的表现内容
     }catch(WSIFException we){
   we.printStackTrace();
   }
 }
}

 类似资料: