使用 Web Services 调用框架 (WSIF) Java™ 提供程序,WSIF 可以调用 Java 代码。这意味着在瘦客户机环境(例如 Java 虚拟机 (JVM) 或 Tomcat 测试运行时环境)中,可定义到本地 Java 程序的快捷方式。使用此过程来帮助您编写 Web 服务描述语言 (WSDL) 扩展,以将 WSIF 服务与本地 Java 应用程序进行链接。
开始之前
WSIF Java 提供程序不适用于用在 Java Platform, Enterprise Edition (Java EE) 环境中。使用 WSIF Java 提供程序来调用 Java 组件的客户机与将 Web Service 作为服务器端上 Java 组件来实现的客户机之间存在差异。
关于此任务
WSIF Java 绑定使用类型映射的格式绑定。使用格式绑定,您的 WSDL 可定义 XML 模式类型和 Java 类型之间的映射。
WSIF Java 提供程序要求目标 Java 类位于客户机的类路径上。Java 方法是在进程内、线程内与当前线程和对象请求代理 (ORB) 上下文同步调用的。
WSIF Java 提供程序不是事务性的。
WSIF Java 提供程序不支持 WSIF 同步超时。Java 提供程序将不进行超时等待来让 Java 方法完成。
使用以下过程和相关联的代码段来指定 WSDL 扩展,以允许 WSIF 服务对本地 Java 对象调用方法。
过程
- 指定 Java 绑定。
要使用 Java 提供程序,您需要在 WSDL 文件中指定的以下绑定:
<!-- Java binding -->
<binding .... >
<java:binding />
<format:typeMapping style="Java" encoding="Java"/>?
<format:typeMap name="qname" formatType="nmtoken"/>*
</format:typeMapping>
<operation>*
<java:operation
methodName="nmtoken"
parameterOrder="nmtoken"
returnPart="nmtoken"?
methodType="instance|constructor" />
<input name="nmtoken"? />?
<output name="nmtoken"? />?
<fault name="nmtoken"? />?
</operation>
</binding>
在本示例中:
- 问号 (?) 表示可选,而星号(*)表示 0 或更多。
- <format:typeMap> 元素的 name 属性是某个 Java 操作使用的简单或复杂类型的限定名。
- <format:typeMap> 元素的 formatType 属性是 Java 类的标准类名,name 指定的元素映射到此 Java 类。
- <java:operation> 元素的 methodName 属性是操作所调用 Java 对象上方法的名称。
- <java:operation> 元素的 parameterOrder 属性包含空格分隔的部件名列表,这些部件名定义了将它们传递给 Java 对象方法的顺序。
- <java:operation> 元素的 methodType 属性必须设为 instance 或 constructor。此值指定在对象上调用的方法是实例方法,还是对象的构造函数。
- 指定 <java:address> 元素。
<java:address> 元素的 className 属性指定包含要调用方法的对象的标准类名:
<service ... >
<port>*
<java:address
className="nmtoken"/>
</port>
</service>