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

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

          常用鏈接

          留言簿(68)

          隨筆分類(136)

          隨筆檔案(122)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 524912
          • 排名 - 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 交口稱贊 閱讀(4900) 評論(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
          主站蜘蛛池模板: 石渠县| 长春市| 通河县| 荆门市| 绿春县| 山阴县| 汕头市| 大田县| 缙云县| 乐都县| 右玉县| 庄河市| 全南县| 德令哈市| 丰县| 潼南县| 阿城市| 金堂县| 宁南县| 大足县| 临朐县| 南昌市| 保亭| 清水河县| 巴彦淖尔市| 缙云县| 平阴县| 安乡县| 漠河县| 青海省| 北票市| 长武县| 社旗县| 策勒县| 舞阳县| 大兴区| 读书| 长兴县| 天峻县| 斗六市| 蒙阴县|