dev2dev 首页 > 资源中心 > 专家Blog > 专家Blog文章
使用Workshop Webservice上下文
使用Workshop Webservice上下文
默认情况下,当创建一个Workshop Webservice(JWS文件)时,并不会自动公开一个上下文(Context)对象,这不太好,因为WebService上下文包含了许多有用的方法和回调。在此我将向您展示如何添加和使用JwsContext以便使Workshop Webservice发挥更大的作用。
添加上下文注释
为使Workshop可以填充上下文对象变量,需要使用 @common:context注释。下面的代码在WebService中创建了一个上下文对象jwsCtx。记住,只可以向一个WebService添加一个上下文对象。再多的话,Workshop就会发出警告!
/**
* @common:context
*/
JwsContext jwsCtx;
注意:当按下【ALT+ENTER】键自动导入JwsContext时,一定要选择com.bea.control.JwsContext,而不赞成使用weblogic.jws.control.JwsContext类。
使用上下文方法
一旦指定了上下文对象,就可以像使用标准的Java对象一样使用它了。Workshop运行时将会使用关于当前的WebService调用的上下文信息来填充它。
com.bea.control.JwsContext上下文类中包含有许多方法,我们在此不一一说明,只介绍一些比较有用的方法:
- getLogger():返回一个记录器,可以将其直接写入磁盘日志文件。
- isCallerInRole(String roleName):如果所验证的principal属于指定的角色,就返回true。
- getService():返回一个ServiceHandle对象,它可以用于获取关于当前WebService的附加信息。
- getInputHeaders():返回一个元素数组,表示当前请求的SOAP标题。
- finishedConversation():在会话式服务中,该方法将显式结束会话。可以使用该方法代替对特定方法设置@conversation phase="finish"。
关于可用的所有方法,请访问http://e-docs.bea.com/workshop/docs81/doc/en/workshop/java-class/com/bea/control/JwsContext.html。
使用上下文回调
该上下文对象的一个特别的特性就是在其生存期内可以用它来调用WebService实现。回调的实现是通过使用<CONTEXT_VARIABLE_NAME>_<CALLBACK_METHOD_NAME>的专用方法命名约定创建的。下面的代码是一个例子,它展示了初次创建WebService对象时如何执行代码:
/**
* @common:context
*/
JwsContext jwsCtx;
// This method will be called when the WebService is first created
public void jwsCtx_onCreate() {
// Just a test message but could possibly setup WebService state
System.out.println("Webservice Object has been Created!");
}
还有许多其他的上下文回调,这些回调在下面的站点上均有描述:http://e-docs.bea.com/workshop/docs81/doc/en/workshop/java-class/com/bea/control/JwsContext.Callback.html。
不赞成使用的上下文方法
BEA说明文档关于上下文方法(如getCallbackURL)的描述很容易令人混淆。对于JwsContext中的这些方法,说明文档说,不赞成使用它们,而应该使用ServiceControl,但是它却没有说明如何获得该ServiceControl接口的实例。
说明文档试图说明的是,WebService中的回调(Callback)对象现在就是一个ServiceControl实例。当然了,回调对象只有在定义了回调方法的情况下才可用。只要定义了回调方法,就可以使用callback.getEndPoint()访问方法(比如getEndPoint())。
这是有原因的:只有定义了回调方法,CallbackURL才真正有效。关于ServiceControl接口的可用方法的更多信息,可访问http://e-docs.bea.com/workshop/docs81/doc/en/workshop/java-class/com/bea/control/ServiceControl.html。
原文出处:http://dev2dev.bea.com/blog/maddison/archive/2005/04/using_the_works_1.html
作者其它文章
|