내 문제가 해결되었습니다. 내 솔루션을 나와 공유하고 싶습니다. 누군가가 필요로 할 수 있기를 바랍니다.
위에서 말했듯이 Apache Axis2 XMLBeans (http://axis.apache.org/axis2/java/core/docs/quickstartguide.html#clientxmlbeans)를 사용하여 wsdl 파일에서 Java 클래스를 만들었습니다.
<wsse:Security soap:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username><YOUR USERNAME></wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"><YOUR PASSWORD></wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
내가이 programaticly 해결 :없이
스텁에서 SOAP-방법 (한이를 한
는 그 후 나는 그 같이한다 WS 보안 헤더를 추가하는 데 필요한 callbackHandler를 사용하여), 웹 서비스를 사용하기 위해 호출 할 수 있습니다. 이 방법에서는 _messageContext
이라는 변수가 있습니다. 여기서 머리글에 도달 할 수 있습니다. _messageContext.getEnvelope().getHeader()
은 SOAPHeader 인스턴스를 반환합니다.
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMAttribute;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
public class HeaderAdder {
public static void addSecurityToHeader(
org.apache.axiom.soap.SOAPHeader header) {
OMFactory factory = OMAbstractFactory.getOMFactory();
OMNamespace namespaceWSSE = factory
.createOMNamespace(
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
"wsse");
OMElement element = factory.createOMElement("Security", namespaceWSSE);
OMAttribute attribute = factory.createOMAttribute("mustUnderstand",
null, "1");
element.addAttribute(attribute);
header.addChild(element);
OMElement element2 = factory.createOMElement("UsernameToken",
namespaceWSSE);
OMNamespace namespaceWSU = factory
.createOMNamespace(
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd",
"wsu");
attribute = factory.createOMAttribute("Id", namespaceWSU,
"UsernameToken-1");
element2.addAttribute(attribute);
element.addChild(element2);
OMElement element3 = factory.createOMElement("Username", namespaceWSSE);
element3.setText("<YOUR USERNAME>");
OMElement element4 = factory.createOMElement("Password", namespaceWSSE);
attribute = factory
.createOMAttribute(
"Type",
null,
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText");
element4.setText("<YOUR PASSWORD>");
element2.addChild(element3);
element2.addChild(element4);
}
}
그리고 그와
을위한 인증이 근무하고 나는 더 이상 아무 거부-응답가있어이 인스턴스와 I 클래스
HeaderAddery
에서
addSecurityToHeader
메소드를 호출.
질문이 있으시면 알려 주시기 바랍니다.
친절에 감사드립니다!