当客户端应用程序调用使用 JWS 文件实现的 WebLogic Web Service 时,WebLogic Server 会自动创建一个上下文
,Web Service 可以使用该上下文来访问有关该服务的运行时信息,有时还可以更改这些信息。此信息主要与对话相关,例如当前对话是否已完成、对话属性的当前值以及在运行时更改对话属性等。(有关对话和如何实现对话的信息,请参阅
创建对话 Web Service。)可以通过该上下文访问的某些信息更为通用,如用于调用该 Web Service 的协议(HTTP/S 或 JMS)、SOAP 消息请求中的 SOAP 头等。
可以在 JWS 文件中使用批注和 WebLogic Web Service API 访问运行时上下文信息,如下列部分所述。
访问 Web Service 上下文的准则
下例说明使用上下文确定用于调用 Web Service 的协议的简单 JWS 文件;该示例之后的编程准则中将讨论用粗体显示的代码。
package examples.webservices.jws_context;
import javax.jws.WebMethod;
import javax.jws.WebService;
import weblogic.jws.WLHttpTransport;import weblogic.jws.Context;
import weblogic.wsee.jws.JwsContext;
import weblogic.wsee.jws.Protocol;
@WebService(name="JwsContextPortType", serviceName="JwsContextService",
targetNamespace="http://example.org")
@WLHttpTransport(contextPath="contexts", serviceUri="JwsContext",
portName="JwsContextPort")
* 说明如何使用 @Context 批注的简单 Web Service。
public class JwsContextImpl {
@Context
private JwsContext ctx;
@WebMethod()
public String getProtocol() {
Protocol protocol = ctx.getProtocol();
System.out.println("protocol: " + protocol);
return "This is the protocol: " + protocol;
}
}
使用 JWS 文件中的下列准则访问 Web Service 的运行时上下文,如上例中用粗体显示的代码所示:
@weblogic.jws.Context
JWS 批注:import weblogic.jws.Context;
weblogic.wsee.jws.JwsContext
API 以及可能使用的所有其他相关 API(该示例还使用weblogic.wsee.jws.Protocol
API):import weblogic.wsee.jws.JwsContext;
import weblogic.wsee.jws.Protocol;@Context
JWS 批注对weblogic.wsee.jws.JwsContext
数据类型的私有变量进行批注:@Context
private JwsContext ctx;ctx
)分配JwsContext
运行时实现,所以,以后无需在代码中明确初始化该变量即可以使用它。JwsContext
类的方法获取和在某些情况下更改有关 Web Service 的运行时信息。下例说明如何获取用于调用 Web Service 的协议:Protocol protocol = ctx.getProtocol();