<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 119  文章 - 3173  trackbacks - 0
    <2008年6月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    交友莫獨酒,茅臺西鳳游。
    口干古井貢,心徜洋河流。
    稱多情杜康,趟無量雙溝。
    贊中華巍巍,無此不銷愁。

    常用鏈接

    留言簿(68)

    隨筆分類(136)

    隨筆檔案(122)

    最新隨筆

    搜索

    •  

    積分與排名

    • 積分 - 525023
    • 排名 - 93

    最新評論

    今天把以前寫的java6 web service Security的例子拿出來跑一跑,想整理一下寫篇文章。結果發現代碼不能跑了。
    代碼如下
    --------------------------------------server--------------------------------------------------------

    package ?publish;

    import ?java.util.LinkedList;
    import ?java.util.List;

    import ?javax.xml.ws.Binding;
    import ?javax.xml.ws.Endpoint;
    import ?javax.xml.ws.handler.Handler;

    import ?security.SecurityHandler;
    import ?service.SecurityHello;

    public ? class ?SecturityPublishApplication?{

    ????
    /**
    ?????*?
    @param ?args
    ?????
    */
    ????
    public ? static ? void ?main(String[]?args)?{
    ????????
    // ?wsimport?-keep? http://127.0.0.1 :8088/SecurityHello?wsdl
    ????????System.out.println( " 準備啟動服務 " );
    ????????Endpoint?endpoint?
    = ?Endpoint.publish( " http://127.0.0.1:8088/SecurityHello " ,? new ?SecurityHello());
    ????????Binding?binding?
    = ?endpoint.getBinding();
    ????????List
    < Handler > ?handlerChain? = ? new ?LinkedList < Handler > ();
    ????????handlerChain.add(
    new ?SecurityHandler());
    ????????binding.setHandlerChain(handlerChain);
    ????????System.out.println(
    " 服務啟動完畢 " );
    ????}

    }


    package ?org.hermit.study.jdk.shello;

    import ?javax.jws.WebMethod;
    import ?javax.jws.WebParam;
    import ?javax.jws.WebResult;
    import ?javax.jws.WebService;
    import ?javax.jws.soap.SOAPBinding;


    /**
    ?*?This?class?was?generated?by?the?JAXWS?SI.
    ?*?JAX-WS?RI?2.0_02-b08-fcs
    ?*?Generated?source?version:?2.0
    ?*?
    ?
    */
    @WebService(name?
    = ? " SecurityHello " ,?targetNamespace? = ? " http://jdk.study.hermit.org/shello " )
    @SOAPBinding(style?
    = ?SOAPBinding.Style.RPC)
    public ? interface ?SecurityHello?{


    ????
    /**
    ?????*?
    ?????*?
    @param ?arg0
    ?????*?
    @return
    ?????*?????returns?java.lang.String
    ?????
    */
    ????@WebMethod
    ????@WebResult(partName?
    = ? " return " )
    ????
    public ?String?sayHello(
    ????????@WebParam(name?
    = ? " arg0 " ,?partName? = ? " arg0 " )
    ????????String?arg0);

    }




    package ?org.hermit.study.jdk.shello;

    import ?java.net.MalformedURLException;
    import ?java.net.URL;
    import ?javax.xml.namespace.QName;
    import ?javax.xml.ws.Service;
    import ?javax.xml.ws.WebEndpoint;
    import ?javax.xml.ws.WebServiceClient;


    /**
    ?*?This?class?was?generated?by?the?JAXWS?SI.
    ?*?JAX-WS?RI?2.0_02-b08-fcs
    ?*?Generated?source?version:?2.0
    ?*?
    ?
    */
    @WebServiceClient(name?
    = ? " SecurityHelloService " ,?targetNamespace? = ? " http://jdk.study.hermit.org/shello " ,?wsdlLocation? = ? " http://127.0.0.1:8088/SecurityHello?wsdl " )
    public ? class ?SecurityHelloService
    ????
    extends ?Service
    {

    ????
    private ? final ? static ?URL?SECURITYHELLOSERVICE_WSDL_LOCATION;

    ????
    static ?{
    ????????URL?url?
    = ? null ;
    ????????
    try ?{
    ????????????url?
    = ? new ?URL( " http://127.0.0.1:8088/SecurityHello?wsdl " );
    ????????}?
    catch ?(MalformedURLException?e)?{
    ????????????e.printStackTrace();
    ????????}
    ????????SECURITYHELLOSERVICE_WSDL_LOCATION?
    = ?url;
    ????}

    ????
    public ?SecurityHelloService(URL?wsdlLocation,?QName?serviceName)?{
    ????????
    super (wsdlLocation,?serviceName);
    ????}

    ????
    public ?SecurityHelloService()?{
    ????????
    super (SECURITYHELLOSERVICE_WSDL_LOCATION,? new ?QName( " http://jdk.study.hermit.org/shello " ,? " SecurityHelloService " ));
    ????}

    ????
    /**
    ?????*?
    ?????*?
    @return
    ?????*?????returns?SecurityHello
    ?????
    */
    ????@WebEndpoint(name?
    = ? " SecurityHelloPort " )
    ????
    public ?SecurityHello?getSecurityHelloPort()?{
    ????????
    return ?(SecurityHello) super .getPort( new ?QName( " http://jdk.study.hermit.org/shello " ,? " SecurityHelloPort " ),?SecurityHello. class );
    ????}

    }

    user-pass-authenticate-server.xml
    <!--

    Copyright?2004?Sun?Microsystems,?Inc.?All?rights?reserved.
    SUN?PROPRIETARY/CONFIDENTIAL.?Use?is?subject?to?license?terms.

    -->
    <xwss:SecurityConfiguration?xmlns:xwss="http://java.sun.com/xml/ns/xwss/config"?dumpMessages="true"?>
    ????
    <xwss:RequireUsernameToken?passwordDigestRequired="true"/>
    </xwss:SecurityConfiguration>


    /*
    ?*?SecurityHandler.java
    ?*
    ?*?Created?on?March?26,?2007,?12:58?PM
    ?*
    ?*?To?change?this?template,?choose?Tools?|?Template?Manager
    ?*?and?open?the?template?in?the?editor.
    ?
    */

    package?security;

    import?java.io.File;
    import?java.io.FileInputStream;
    import?java.util.Set;

    import?javax.xml.namespace.QName;
    import?javax.xml.soap.SOAPException;
    import?javax.xml.soap.SOAPMessage;
    import?javax.xml.ws.WebServiceException;
    import?javax.xml.ws.handler.MessageContext;
    import?javax.xml.ws.handler.soap.SOAPHandler;
    import?javax.xml.ws.handler.soap.SOAPMessageContext;

    import?com.sun.xml.wss.ProcessingContext;
    import?com.sun.xml.wss.SubjectAccessor;
    import?com.sun.xml.wss.XWSSProcessor;
    import?com.sun.xml.wss.XWSSProcessorFactory;
    import?com.sun.xml.wss.XWSSecurityException;

    /**
    ?*?
    ?*?Kumar?Jayanti
    ?
    */

    public?class?SecurityHandler?implements?SOAPHandler<SOAPMessageContext>?{

    ????XWSSProcessor?sprocessor?
    =?null;

    ????XWSSProcessor?cprocessor?
    =?null;

    ????
    public?SecurityHandler()?{
    ????????FileInputStream?serverConfig?
    =?null;
    ????????
    try?{

    ????????????serverConfig?
    =?new?FileInputStream(new?File("./src/publish/user-pass-authenticate-server.xml"));
    ????????????XWSSProcessorFactory?factory?
    =?XWSSProcessorFactory.newInstance();
    ????????????sprocessor?
    =?factory.createProcessorForSecurityConfiguration(serverConfig,?new?SecurityEnvironmentHandler("server"));
    ????????????serverConfig.close();

    ????????}?
    catch?(Exception?e)?{
    ????????????e.printStackTrace();
    ????????????
    throw?new?RuntimeException(e);
    ????????}

    ????}

    ????
    public?Set<QName>?getHeaders()?{
    ????????
    return?null;
    ????}

    ????
    public?boolean?handleFault(SOAPMessageContext?messageContext)?{
    ????????
    return?true;
    ????}

    ????
    public?boolean?handleMessage(SOAPMessageContext?messageContext)?{

    ????????secureServer(messageContext);
    ????????
    return?true;
    ????}

    ????
    public?void?close(MessageContext?messageContext)?{
    ????}

    ????
    private?void?secureServer(SOAPMessageContext?messageContext)?{
    ????????Boolean?outMessageIndicator?
    =?(Boolean)?messageContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
    ????????SOAPMessage?message?
    =?messageContext.getMessage();

    ????????
    if?(outMessageIndicator.booleanValue())?{
    ????????????
    return;
    ????????}?
    else?{
    ????????????
    try?{
    ????????????????ProcessingContext?context?
    =?sprocessor.createProcessingContext(message);
    ????????????????context.getExtraneousProperties().putAll(messageContext);
    ????????????????context.setSOAPMessage(message);
    ????????????????SOAPMessage?verifiedMsg?
    =?sprocessor.verifyInboundMessage(context);
    ????????????????messageContext.setMessage(verifiedMsg);
    ????????????}?
    catch?(XWSSecurityException?ex)?{
    ????????????????ex.printStackTrace();
    ????????????????
    throw?new?WebServiceException(ex);
    ????????????}?
    catch?(Exception?ex)?{
    ????????????????ex.printStackTrace();
    ????????????????
    throw?new?WebServiceException(ex);
    ????????????}

    ????????}

    ????}

    }


    package?security;

    import?java.io.IOException;

    import?javax.security.auth.callback.Callback;
    import?javax.security.auth.callback.CallbackHandler;
    import?javax.security.auth.callback.UnsupportedCallbackException;
    import?javax.xml.ws.BindingProvider;

    import?com.sun.xml.wss.impl.callback.PasswordCallback;
    import?com.sun.xml.wss.impl.callback.PasswordValidationCallback;
    import?com.sun.xml.wss.impl.callback.UsernameCallback;


    public?class?SecurityEnvironmentHandler?implements?CallbackHandler?{

    ????
    private?static?final?UnsupportedCallbackException?unsupported?=?new?UnsupportedCallbackException(null,
    ????????????
    "Unsupported?Callback?Type?Encountered");

    ????
    public?SecurityEnvironmentHandler(String?arg)?{
    ????}

    ????
    public?void?handle(Callback[]?callbacks)?throws?IOException,?UnsupportedCallbackException?{
    ????????
    for?(int?i?=?0;?i?<?callbacks.length;?i++)?{
    ????????????
    if?(callbacks[i]?instanceof?PasswordValidationCallback)?{
    ????????????????PasswordValidationCallback?cb?
    =?(PasswordValidationCallback)?callbacks[i];
    ????????????????
    if?(cb.getRequest()?instanceof?PasswordValidationCallback.PlainTextPasswordRequest)?{
    ????????????????????cb.setValidator(
    new?PlainTextPasswordValidator());

    ????????????????}?
    ????????????????
    else?if?(cb.getRequest()?instanceof?PasswordValidationCallback.DigestPasswordRequest)?{
    ????????????????????PasswordValidationCallback.DigestPasswordRequest?request?
    =?(PasswordValidationCallback.DigestPasswordRequest)?cb
    ????????????????????????????.getRequest();
    ????????????????????String?username?
    =?request.getUsername();
    ????????????????????
    if?("hermit".equals(username))?{
    ????????????????????????request.setPassword(
    "hermit");
    ????????????????????????cb.setValidator(
    new?PasswordValidationCallback.DigestPasswordValidator());
    ????????????????????}
    ????????????????}
    ????????????}?
    else?if?(callbacks[i]?instanceof?UsernameCallback)?{
    ????????????????UsernameCallback?cb?
    =?(UsernameCallback)?callbacks[i];
    ????????????????String?username?
    =?(String)?cb.getRuntimeProperties().get(BindingProvider.USERNAME_PROPERTY);
    ????????????????System.out.println(
    "Got?Username?:?"?+?username);
    ????????????????cb.setUsername(username);

    ????????????}?
    else?if?(callbacks[i]?instanceof?PasswordCallback)?{
    ????????????????PasswordCallback?cb?
    =?(PasswordCallback)?callbacks[i];
    ????????????????String?password?
    =?(String)?cb.getRuntimeProperties().get(BindingProvider.PASSWORD_PROPERTY);
    ????????????????System.out.println(
    "Got?Password?:?"?+?password);
    ????????????????cb.setPassword(password);

    ????????????}?
    else?{
    ????????????????
    throw?unsupported;
    ????????????}
    ????????}
    ????}

    ????
    private?class?PlainTextPasswordValidator?implements?PasswordValidationCallback.PasswordValidator?{

    ????????
    public?boolean?validate(PasswordValidationCallback.Request?request)?throws?PasswordValidationCallback.PasswordValidationException?{

    ????????????PasswordValidationCallback.PlainTextPasswordRequest?plainTextRequest?
    =?(PasswordValidationCallback.PlainTextPasswordRequest)?request;
    ????????????
    if?("hermit".equals(plainTextRequest.getUsername())?&&?"hermit".equals(plainTextRequest.getPassword()))?{
    ????????????????
    return?true;
    ????????????}
    ????????????
    return?false;
    ????????}
    ????}

    }





























    -------------------------------------client---------------------------------------------------


    import?java.util.ArrayList;
    import?java.util.List;

    import?javax.xml.ws.BindingProvider;
    import?javax.xml.ws.handler.Handler;

    import?org.hermit.study.jdk.shello.SecurityHandler;
    import?org.hermit.study.jdk.shello.SecurityHello;
    import?org.hermit.study.jdk.shello.SecurityHelloService;

    public?class?TestSericutyHello?{
    ????
    public?static?void?main(String[]?args)?{

    ????????
    try?{
    ????????????SecurityHelloService?service?
    =?new?SecurityHelloService();
    ????????????SecurityHello?port?
    =?service.getSecurityHelloPort();
    ????????????((BindingProvider)?port).getRequestContext().put(BindingProvider.USERNAME_PROPERTY,?
    "hermit");
    ????????????((BindingProvider)?port).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY,?
    "hermit");

    ????????????List
    <Handler>?chain?=?new?ArrayList<Handler>();

    ????????????chain.add(
    new?SecurityHandler());
    ????????????((BindingProvider)?port).getBinding().setHandlerChain(chain);
    ????????????String?result?
    =?port.sayHello("Hermit");
    ????????????System.out.println(
    "Result?=?"?+?result);
    ????????}?
    catch?(Exception?ex)?{
    ????????????ex.printStackTrace();
    ????????}

    ????}
    }


    /*
    ?*?SecurityEnvironmentHandler.java
    ?*
    ?*?Created?on?March?26,?2007,?1:17?PM
    ?*
    ?*?To?change?this?template,?choose?Tools?|?Template?Manager
    ?*?and?open?the?template?in?the?editor.
    ?
    */

    package?org.hermit.study.jdk.shello;

    import?java.io.IOException;
    import?javax.security.auth.callback.Callback;
    import?javax.security.auth.callback.CallbackHandler;
    import?javax.security.auth.callback.UnsupportedCallbackException;

    import?com.sun.xml.wss.impl.callback.PasswordCallback;
    import?com.sun.xml.wss.impl.callback.PasswordValidationCallback;
    import?com.sun.xml.wss.impl.callback.UsernameCallback;
    import?java.io.BufferedReader;
    import?java.io.InputStreamReader;
    import?javax.xml.ws.BindingProvider;


    /**
    ?*
    ?*?
    @author?sk112103
    ?
    */
    public?class?SecurityEnvironmentHandler?implements?CallbackHandler?{
    ???
    ????
    private?static?final?UnsupportedCallbackException?unsupported?=
    ????
    new?UnsupportedCallbackException(null,?"Unsupported?Callback?Type?Encountered");
    ????

    ????
    /**?Creates?a?new?instance?of?SecurityEnvironmentHandler?*/
    ????
    public?SecurityEnvironmentHandler(String?arg)?{
    ????}
    ????
    ????
    private?String?readLine()?throws?IOException?{
    ????????
    return?new?BufferedReader
    ????????????(
    new?InputStreamReader(System.in)).readLine();
    ????}


    ????
    public?void?handle(Callback[]?callbacks)?throws?IOException,?UnsupportedCallbackException?{
    ????????
    for?(int?i=0;?i?<?callbacks.length;?i++)?{
    ????????????
    if?(callbacks[i]?instanceof?PasswordValidationCallback)?{
    ????????????????PasswordValidationCallback?cb?
    =?(PasswordValidationCallback)?callbacks[i];
    ????????????????
    if?(cb.getRequest()?instanceof?PasswordValidationCallback.PlainTextPasswordRequest)?{
    ????????????????????cb.setValidator(
    new?PlainTextPasswordValidator());
    ????????????????????
    ????????????????}?
    else?if?(cb.getRequest()?instanceof?PasswordValidationCallback.DigestPasswordRequest)?{
    ????????????????????PasswordValidationCallback.DigestPasswordRequest?request?
    =
    ????????????????????????????(PasswordValidationCallback.DigestPasswordRequest)?cb.getRequest();
    ????????????????????String?username?
    =?request.getUsername();
    ????????????????????
    if?("Ron".equals(username))?{
    ????????????????????????request.setPassword(
    "noR");
    ????????????????????????cb.setValidator(
    new?PasswordValidationCallback.DigestPasswordValidator());
    ????????????????????}
    ????????????????}
    ????????????}?
    else?if?(callbacks[i]?instanceof?UsernameCallback)?{
    ????????????????UsernameCallback?cb?
    =?(UsernameCallback)callbacks[i];
    ????????????????String?username?
    =?(String)cb.getRuntimeProperties().get(BindingProvider.USERNAME_PROPERTY);
    ????????????????System.out.println(
    "Got?Username?:?"?+?username);
    ????????????????cb.setUsername(username);
    ????????????????
    ????????????}?
    else?if?(callbacks[i]?instanceof?PasswordCallback)?{
    ????????????????PasswordCallback?cb?
    =?(PasswordCallback)callbacks[i];
    ????????????????String?password?
    =?(String)cb.getRuntimeProperties().get(BindingProvider.PASSWORD_PROPERTY);
    ????????????????System.out.println(
    "Got?Password?:?"?+?password);
    ????????????????cb.setPassword(password);
    ????????????????
    ????????????}?
    else?{
    ????????????????
    throw?unsupported;
    ????????????}
    ????????}
    ????}
    ????
    ?????
    private?class?PlainTextPasswordValidator?implements?PasswordValidationCallback.PasswordValidator?{
    ????????
    ????????
    public?boolean?validate(PasswordValidationCallback.Request?request)
    ????????
    throws?PasswordValidationCallback.PasswordValidationException?{
    ????????????
    ????????????PasswordValidationCallback.PlainTextPasswordRequest?plainTextRequest?
    =
    ????????????(PasswordValidationCallback.PlainTextPasswordRequest)?request;
    ????????????
    if?("Ron".equals(plainTextRequest.getUsername())?&&
    ????????????
    "noR".equals(plainTextRequest.getPassword()))?{
    ????????????????
    return?true;
    ????????????}
    ????????????
    return?false;
    ????????}
    ????}
    ????

    }

    ?

    ?

    ?

    /*
    ?*?SecurityHandler.java
    ?*
    ?*?Created?on?March?26,?2007,?12:58?PM
    ?*
    ?*?To?change?this?template,?choose?Tools?|?Template?Manager
    ?*?and?open?the?template?in?the?editor.
    ?
    */

    package?org.hermit.study.jdk.shello;

    import?java.io.FileInputStream;
    import?java.util.Set;

    import?javax.xml.namespace.QName;
    import?javax.xml.soap.SOAPMessage;
    import?javax.xml.ws.WebServiceException;
    import?javax.xml.ws.handler.MessageContext;
    import?javax.xml.ws.handler.soap.SOAPHandler;
    import?javax.xml.ws.handler.soap.SOAPMessageContext;

    import?com.sun.xml.wss.ProcessingContext;
    import?com.sun.xml.wss.SubjectAccessor;
    import?com.sun.xml.wss.XWSSProcessor;
    import?com.sun.xml.wss.XWSSProcessorFactory;
    import?com.sun.xml.wss.XWSSecurityException;

    /**
    ?*?
    ?*?Kumar?Jayanti
    ?
    */

    public?class?SecurityHandler?implements?SOAPHandler<SOAPMessageContext>?{

    ????XWSSProcessor?sprocessor?
    =?null;


    ????XWSSProcessor?cprocessor?
    =?null;

    ????
    /**?Creates?a?new?instance?of?SecurityHandler?*/
    ????
    public?SecurityHandler()?{
    ????????FileInputStream?clientConfig?
    =?null;
    ????????
    try?{
    ????????????
    //?read?client?side?security?config
    ????????????clientConfig?=?new?java.io.FileInputStream(new?java.io.File("./src/user-pass-authenticate-client.xml"));
    ????????????
    //?Create?a?XWSSProcessFactory.
    ????????????XWSSProcessorFactory?factory?=?XWSSProcessorFactory.newInstance();
    ????????????cprocessor?
    =?factory.createProcessorForSecurityConfiguration(clientConfig,?new?SecurityEnvironmentHandler("client"));
    ????????????clientConfig.close();

    ????????}?
    catch?(Exception?e)?{
    ????????????e.printStackTrace();
    ????????????
    throw?new?RuntimeException(e);
    ????????}

    ????}

    ????
    public?Set<QName>?getHeaders()?{
    ????????
    return?null;
    ????}

    ????
    public?boolean?handleFault(SOAPMessageContext?messageContext)?{
    ????????
    return?true;
    ????}

    ????
    public?boolean?handleMessage(SOAPMessageContext?messageContext)?{
    ????????System.out.println(
    "This?is?client");
    ????????secureClient(messageContext);
    ????????
    return?true;
    ????}

    ????
    public?void?close(MessageContext?messageContext)?{
    ????}



    ????
    private?SOAPMessage?createFaultResponse(XWSSecurityException?ex)?{
    ????????
    return?null;
    ????}

    ????
    private?void?secureClient(SOAPMessageContext?messageContext)?{
    ????????Boolean?outMessageIndicator?
    =?(Boolean)?messageContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
    ????????SOAPMessage?message?
    =?messageContext.getMessage();
    ????????System.out.println(
    "Came?to?Secure?Client.");
    ????????
    if?(outMessageIndicator.booleanValue())?{
    ????????????System.out.println(
    "\nOutbound?SOAP:");
    ????????????ProcessingContext?context;
    ????????????
    try?{
    ????????????????context?
    =?cprocessor.createProcessingContext(message);
    ????????????????context.getExtraneousProperties().putAll(messageContext);
    ????????????????context.setSOAPMessage(message);
    ????????????????SOAPMessage?secureMsg?
    =?cprocessor.secureOutboundMessage(context);
    ????????????????secureMsg.writeTo(System.out);
    ????????????????messageContext.setMessage(secureMsg);
    ????????????}?
    catch?(XWSSecurityException?ex)?{
    ????????????????ex.printStackTrace();
    ????????????????
    throw?new?RuntimeException(ex);
    ????????????}?
    catch?(Exception?e)?{
    ????????????????e.printStackTrace();
    ????????????????
    throw?new?RuntimeException(e);
    ????????????}

    ????????????
    return;
    ????????}?
    else?{
    ????????????System.out.println(
    "\nInbound?SOAP:");
    ????????????System.out.println(
    "DO?Nothing?in?Secure?Client.");
    ????????????
    //?do?nothing
    ????????????return;
    ????????}

    ????}
    }




    package?org.hermit.study.jdk.shello;

    import?javax.jws.WebMethod;
    import?javax.jws.WebParam;
    import?javax.jws.WebResult;
    import?javax.jws.WebService;
    import?javax.jws.soap.SOAPBinding;


    /**
    ?*?This?class?was?generated?by?the?JAX-WS?RI.
    ?*?JAX-WS?RI?2.1.1?in?JDK?6
    ?*?Generated?source?version:?2.1
    ?*?
    ?
    */
    @WebService(name?
    =?"SecurityHello",?targetNamespace?=?"http://jdk.study.hermit.org/shello")
    @SOAPBinding(style?
    =?SOAPBinding.Style.RPC)
    public?interface?SecurityHello?{


    ????
    /**
    ?????*?
    ?????*?
    @param?arg0
    ?????*?
    @return
    ?????*?????returns?java.lang.String
    ?????
    */
    ????@WebMethod
    ????@WebResult(partName?
    =?"return")
    ????
    public?String?sayHello(
    ????????@WebParam(name?
    =?"arg0",?partName?=?"arg0")
    ????????String?arg0);

    }




    package?org.hermit.study.jdk.shello;

    import?java.net.MalformedURLException;
    import?java.net.URL;
    import?javax.xml.namespace.QName;
    import?javax.xml.ws.Service;
    import?javax.xml.ws.WebEndpoint;
    import?javax.xml.ws.WebServiceClient;
    import?javax.xml.ws.WebServiceFeature;


    /**
    ?*?This?class?was?generated?by?the?JAX-WS?RI.
    ?*?JAX-WS?RI?2.1.1?in?JDK?6
    ?*?Generated?source?version:?2.1
    ?*?
    ?
    */
    @WebServiceClient(name?
    =?"SecurityHelloService",?targetNamespace?=?"http://jdk.study.hermit.org/shello",?wsdlLocation?=?"http://127.0.0.1:8088/SecurityHello?wsdl")
    public?class?SecurityHelloService
    ????
    extends?Service
    {

    ????
    private?final?static?URL?SECURITYHELLOSERVICE_WSDL_LOCATION;

    ????
    static?{
    ????????URL?url?
    =?null;
    ????????
    try?{
    ????????????url?
    =?new?URL("http://127.0.0.1:8088/SecurityHello?wsdl");
    ????????}?
    catch?(MalformedURLException?e)?{
    ????????????e.printStackTrace();
    ????????}
    ????????SECURITYHELLOSERVICE_WSDL_LOCATION?
    =?url;
    ????}

    ????
    public?SecurityHelloService(URL?wsdlLocation,?QName?serviceName)?{
    ????????
    super(wsdlLocation,?serviceName);
    ????}

    ????
    public?SecurityHelloService()?{
    ????????
    super(SECURITYHELLOSERVICE_WSDL_LOCATION,?new?QName("http://jdk.study.hermit.org/shello",?"SecurityHelloService"));
    ????}

    ????
    /**
    ?????*?
    ?????*?
    @return
    ?????*?????returns?SecurityHello
    ?????
    */
    ????@WebEndpoint(name?
    =?"SecurityHelloPort")
    ????
    public?SecurityHello?getSecurityHelloPort()?{
    ????????
    return?(SecurityHello)super.getPort(new?QName("http://jdk.study.hermit.org/shello",?"SecurityHelloPort"),?SecurityHello.class);
    ????}

    ????
    /**
    ?????*?
    ?????*?
    @param?features
    ?????*?????A?list?of?{
    @link?javax.xml.ws.WebServiceFeature}?to?configure?on?the?proxy.??Supported?features?not?in?the?<code>features</code>?parameter?will?have?their?default?values.
    ?????*?
    @return
    ?????*?????returns?SecurityHello
    ?????
    */
    ????@WebEndpoint(name?
    =?"SecurityHelloPort")
    ????
    public?SecurityHello?getSecurityHelloPort(WebServiceFeature?features)?{
    ????????
    return?(SecurityHello)super.getPort(new?QName("http://jdk.study.hermit.org/shello",?"SecurityHelloPort"),?SecurityHello.class,?features);
    ????}

    }

    ?

    ?

    user-pass-authenticate-client.xml

    <!--

    Copyright?2004?Sun?Microsystems,?Inc.?All?rights?reserved.
    SUN?PROPRIETARY/CONFIDENTIAL.?Use?is?subject?to?license?terms.

    -->
    <xwss:SecurityConfiguration?xmlns:xwss="http://java.sun.com/xml/ns/xwss/config"?dumpMessages="true"?>
    ????
    <xwss:UsernameToken?digestPassword="true"/>
    </xwss:SecurityConfiguration>


    終于貼完了

    報異常

    <S:Envelope xmlns:S=">
    <wsse:Security xmlns:wsse="
    xmlns:ns2=" in thread "main" java.lang.ExceptionInInitializerError
    ?at com.sun.xml.internal.ws.message.AttachmentUnmarshallerImpl.<clinit>(AttachmentUnmarshallerImpl.java:77)
    ?at com.sun.xml.internal.ws.message.stream.StreamMessage.readPayloadAsJAXB(StreamMessage.java:201)
    ?at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.create(SOAPFaultBuilder.java:463)
    ?at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:239)
    ?at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:210)
    ?at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:103)
    ?at $Proxy22.sayHello(Unknown Source)
    ?at TestSericutyHello.main(TestSericutyHello.java:26)
    Caused by: java.lang.IllegalArgumentException: com.sun.xml.messaging.saaj.soap.LocalStrings != com.sun.xml.internal.messaging.saaj.soap.LocalStrings
    ?at java.util.logging.Logger.getLogger(Logger.java:328)
    ?at com.sun.xml.internal.messaging.saaj.soap.AttachmentPartImpl.<clinit>(AttachmentPartImpl.java:71)
    ?... 8 more


    google了一下貌似是jdk新版本的bug(Java(TM) SE Runtime Environment (build 1.6.0_06-b02))
    http://forums.java.net/jive/thread.jspa?threadID=41696&tstart=0
    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6481282

    希望下個版本能解決這個問題。
    posted on 2008-06-02 12:09 交口稱贊 閱讀(4901) 評論(2)  編輯  收藏 所屬分類: Java6

    FeedBack:
    # re: Java6(一) WebServices (8)Web Service Security 2008-07-04 00:40 
    建議不要用這種:http://127.0.0.1:8088/SecurityHello
    我前面用這種發布,訪問的時候也要用127.0.0.1 。如果機子不同用WS的實際IP也不行。。localhost同理。而用了實際IP就OK了。  回復  更多評論
      
    # re: Java6(一) WebServices (8)Web Service Security 2008-11-06 10:39 jeekchen
    主站蜘蛛池模板: 黄页网站在线观看免费高清| 亚洲国产精品专区在线观看| 亚洲AV无码国产一区二区三区| 亚洲狠狠ady亚洲精品大秀| 成年人免费视频观看| 在线观看亚洲网站| 久久精品国产亚洲AV麻豆不卡| 麻豆一区二区三区蜜桃免费| 午夜影视日本亚洲欧洲精品一区| 黄页网址大全免费观看12网站| 最新猫咪www免费人成| 久久免费香蕉视频| 亚洲最大天堂无码精品区| 亚洲中文字幕成人在线| 免费观看激色视频网站bd| 精选影视免费在线 | 亚洲最大天堂无码精品区| 亚洲高清在线播放| 日本中文一区二区三区亚洲| 黄网站色在线视频免费观看| 国产精品成人免费观看| 亚洲欧美日韩中文字幕在线一区| 国产成人啪精品视频免费网| 国产猛男猛女超爽免费视频| 美女视频黄.免费网址 | 99在线精品视频观看免费| 中美日韩在线网免费毛片视频| 四虎永久免费观看| 在线a级毛片免费视频| 久久久久久国产精品免费免费男同| 亚洲成色WWW久久网站| 免费大学生国产在线观看p| 成年在线观看网站免费| 久久大香香蕉国产免费网站| 精品国产亚洲AV麻豆| 亚洲av永久无码精品三区在线4 | 777亚洲精品乱码久久久久久 | 韩国18福利视频免费观看| 777成影片免费观看| 污污视频网站免费观看| 亚洲av无码专区青青草原|