WSIFOperation - 上下文
尽管 Web 服务描述语言 (WSDL) 不定义上下文,但大量使用 Web Services Invocation Framework (WSIF) 需要能够将上下文传递到正在调用该服务的端口。
例如,SOAP over HTTP 端口可能需要 HTTP 用户名和密码。此信息特定于此调用,但不是服务的参数。通常,上下文定义为一组“名称/值”对。但因为 Web Service 趋向于使用 XML 模式类型定义数据类型,所以 WSIF 表示与 WSIFMessage 类使用同一种表示法的上下文“名称/值”对;那是一组命名的部分,每一个部分等同于一个 XML 模式类型实例。
您使用 WSIFOperation 接口 setContext 和 getContext 方法来传递上下文信息到绑定。端口实现可使用此上下文 - 例如,更新 SOAP 头。关于端口可如何使用此上下文不存在定义。
setContext 和 getContext 方法的参数是 WSIFMessage 接口,并且此接口具有定义上下文信息的已命名部件。WSIFConstants 类定义可在上下文 WSIFMessage 接口中设置的部件名的常量。
下列代码片段显示如何设置 HTTP 基本认证的用户名和密码:
// set a basic authentication header
WSIFMessage headers = new WSIFDefaultMessage();
headers.setObjectPart( WSIFConstants.CONTEXT_HTTP_USER, “user name” );
headers.setObjectPart( WSIFConstants.CONTEXT_HTTP_PSWD, “password” );
operation.setContext( headers );
WSIFOperation 接口忽略了其不支持的上下文部件。例如,WSIF Java™ 提供程序忽略先前的代码。
WSIFConstants 类包含下列可用于上下文部件名称的常量:
- CONTEXT_HTTP_USER
- CONTEXT_HTTP_PSWD
- CONTEXT_SOAP_HEADERS
期望的 HTTP 头值的类型是 String,期望的 SOAP 头值的类型是 java.util.List,后者应该包含类型为 org.w3c.dom.Element 的条目。