实现 JAX-RPC 处理程序以访问 SDO 消息

JAX-RPC 处理程序是在处理请求和响应消息期间调用的。对于使用 SOAP 协议进行交换的消息,将向每个 JAX-RPC 处理程序传递一个特定于 SOAP 的 MessageContext 对象。对于其他协议,IBM Web Service 运行时环境将传递 MessageContext 对象,该对象提供消息的“服务数据对象”视图。服务数据对象 (SDO) 是一个开放式标准,它使应用程序能够以统一方式(例如数据图)来处理来自不同数据源的数据。

如果 JAX-RPC 处理程序仅处理消息上下文属性,那么它不需要了解给定它的 MessageContext 的特定子类,因为上下文属性方法由 MessageContext 接口本身定义。如果处理程序需要处理消息中包含的信息,那么必须对它进行编码以使用必需的子类。JAX-RPC 处理程序应测试 MessageContext 是否是所需子类的实例。

在下列情况下,对 JAX-RPC 处理程序给出特定于 SDO 的 MessageContext 对象(com.ibm.websphere.webservices.handler.sdo.SDOMessageContext 类的实例),而不是特定于 SOAP 的 MessageContext 对象:
  • JAX-RPC 客户机或来自服务集成总线的出站调用通过使用 EJB 绑定来调用服务。
  • 根据非绑定 WSDL 来开发 JAX-RPC 客户机并将其目标重新定向至服务集成总线中的目标

SDOMessageContext 类提供方法以获取和设置表示正在处理的消息的 com.ibm.websphere.sdo.SDOMessage 实例。SDOMessage 具有访问 SDO DataGraph 对象的方法,该对象将消息内容保留为 SDO DataObjects。

JAX-RPC 处理程序可以修改 SDO DataGraph 内容,但它不能更改消息的格式或模式。

以下示例显示可用于访问来自 JAX-RPC 处理程序 handleRequest 方法中的 MessageContext 对象的 SDO DataGraph 的代码:

public boolean handleRequest(MessageContext messageContext) {

		// Convert the MessageContext into an SDOMessageContext
		if( messageContext instanceof SDOMessageContext) {
			SDOMessageContext smc = (SDOMessageContext)messageContext;

			// Retrieve the message
			SDOMessage message = smc.getSDOMessage();
		
			// Get the root object in the SDO DataGraph
			DataGraph graph = message.getDataGraph();
			DataObject content = graph.getRootObject();
		
			// Now do something with the message content.....
		}
		return true;
	}

指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rjw_jaxrpc_sdo
文件名:rjw_jaxrpc_sdo.html