2016-02-29 3 views
0

Я код веб-службы ws-policy в Eclipse. Я хочу сделать, как эта ссылка http://kingsfleet.blogspot.com/2008/12/simple-custom-policy-example-using-jax.html но
ошибка WSSecurityContext, потому что weblogic 12c не имеет библиотеки или нет?Как Ws-Policy в weblogic 12c

rc.put(WSSecurityContext.CREDENTIAL_PROVIDER_LIST, credProviders); 

Мне нужен совет.

спасибо.

ответ

0

Я пробовал это раньше, я думаю, что решение для генерации клиентского кода для вызова защищенного веб-сервиса ws вручную создает wsse-заголовки. Пример, как реализовать SOAPHandler класс:

package com.javadb.ws.example; 

import java.util.Set; 
import javax.xml.namespace.QName; 
import javax.xml.soap.SOAPElement; 
import javax.xml.soap.SOAPEnvelope; 
import javax.xml.soap.SOAPHeader; 
import javax.xml.soap.SOAPMessage; 
import javax.xml.ws.handler.MessageContext; 
import javax.xml.ws.handler.soap.SOAPHandler; 
import javax.xml.ws.handler.soap.SOAPMessageContext; 

/** 
* 
* @author www.javadb.com 
*/ 
public class HeaderHandler implements SOAPHandler<SOAPMessageContext> { 

    public boolean handleMessage(SOAPMessageContext smc) { 

     Boolean outboundProperty = (Boolean) smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY); 

     if (outboundProperty.booleanValue()) { 

      SOAPMessage message = smc.getMessage(); 

      try { 

       SOAPEnvelope envelope = smc.getMessage().getSOAPPart().getEnvelope(); 
       SOAPHeader header = envelope.addHeader(); 

       SOAPElement security = 
         header.addChildElement("Security", "wsse", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"); 

       SOAPElement usernameToken = 
         security.addChildElement("UsernameToken", "wsse"); 
       usernameToken.addAttribute(new QName("xmlns:wsu"), "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"); 

       SOAPElement username = 
         usernameToken.addChildElement("Username", "wsse"); 
       username.addTextNode("TestUser"); 

       SOAPElement password = 
         usernameToken.addChildElement("Password", "wsse"); 
       password.setAttribute("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"); 
       password.addTextNode("TestPassword"); 

       //Print out the outbound SOAP message to System.out 
       message.writeTo(System.out); 
       System.out.println(""); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

     } else { 
      try { 

       //This handler does nothing with the response from the Web Service so 
       //we just print out the SOAP message. 
       SOAPMessage message = smc.getMessage(); 
       message.writeTo(System.out); 
       System.out.println(""); 

      } catch (Exception ex) { 
       ex.printStackTrace(); 
      } 
     } 


     return outboundProperty; 

    } 

    public Set getHeaders() { 
     //throw new UnsupportedOperationException("Not supported yet."); 
     return null; 
    } 

    public boolean handleFault(SOAPMessageContext context) { 
     //throw new UnsupportedOperationException("Not supported yet."); 
     return true; 
    } 

    public void close(MessageContext context) { 
    //throw new UnsupportedOperationException("Not supported yet."); 
    } 
} 

следуйте ниже ссылке для получения дополнительной информации: http://www.javadb.com/using-a-message-handler-to-alter-the-soap-header-in-a-web-service-client/

+1

Хотя эта ссылка может ответить на этот вопрос, то лучше включить основные части ответа здесь и обеспечить ссылка для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/12356864) –

+1

Благодарим вас за полезное предупреждение. Теперь он отредактирован. – AliReza19330

Смежные вопросы