和小白一起探討,覺得如果XFire用JSR181去驅(qū)動,一定會非常簡潔。
從JSR175發(fā)展過來的JSR181,早期實現(xiàn)于Weblogic Workshop 7.1,我們
對@WebService, @WebMethod這些標記的最初理解是將Java類通過Annotation
直接編譯成Weblogic的JWS,BEA作為JSR181標準的Leader,很大膽地將
JSR181用于Weblogic 9.1,去驅(qū)動Weblogic下一代的WebService框架。
SpringSide團隊開始選用XFire作為SS 1.0的時候,已經(jīng)充分考慮Xfire在JSR181
支持上的優(yōu)勢(對比于Axis)。
作為Spring Web Services的一個最佳實踐,我們已經(jīng)開始考慮基于JSR181驅(qū)動的
Web Service框架,我們一致認為JSR181能夠為架構(gòu)解耦提供非常切實有效的
途徑。
在下一個SS2.0版本中,我們考慮提供以下的DEMO:
1,基于Security的JSR181 DEMO
2,基于Conversation的JSR181 DEMO
3,基于Transaction的JSR181 DEMO
4,基于Context的JSR181 DEMO
另外,在框架考慮上,會使用JSR標記Handlers的方式(配置文件也是可以,但放在
Annotation,帶來的是更好的易讀性)
????
package
?examples.webservices.handlers;
????@WebService?()
????@SOAPMessageHandlers?(?{
??????@SOAPMessageHandler?(
???????className
=
"
examples.webservices.soap_handlers.simple.ServerHandler1
"
),
??????@SOAPMessageHandler?(
???????className
=
"
examples.webservices.soap_handlers.simple.ServerHandler2
"
)
????}?)
????
public
?
class
?HandlersImpl?{
????????????
//
Your?Code
????}
另外,在SS2.0的下一個版本中,提供SOAPBinding,可以設置其Style為Document或者RPC,Encode和Literal也是能夠定制的(跟Workshop一樣方便),也是一件簡單的事情:
@WebService
@SOAPBinding(style=SOAPBinding.Style.DOCUMENT,
use=SOAPBinding.Use.LITERAL,
parameterStyle=SOAPBinding.ParameterStyle.BARE)

public?class?EchoService?
{
@WebMethod(action="echo")
@WebResult(targetNamespace=“http://www.springside.org.cn”,?name="echoResult")
public?String?echo(
@WebParam(targetNamespace=“http://www.springside.org.cn”,?name="echoMsg")?String?msg){
return?msg;
}
}同時,考慮很多人喜歡搞作SOAP Header,利用它來做一些業(yè)務標記處理,我們會支持下面的方式
@WebMethod
public?String?echo(
@WebParam(name="myHeader",
header=true,
mode=WebParam.Mode.INOUT)?StringHolder?header,
String?msg){
String?ret?=?header.value?+?",?"?+?msg;
header.value?=?"got?it";
return?ret;
}
來自:
[
http://www.tkk7.com/security/archive/2006/10/31/Spring_JSR181_XFire_WebService.html]