Olá a todos.
Pessoal estou com uma certa dificuldade em criar um envelope com header e body e colocar um anexo no body.
Eu estou montando ele da seguinte forma:
public boolean handleMessage(SOAPMessageContext context) {
String prefixUri = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-";
String uri = prefixUri + "wssecurity-secext-1.0.xsd";
String uta = prefixUri + "wssecurity-utility-1.0.xsd";
String ta = prefixUri + "username-token-profile-1.0#PasswordText";
Boolean outboundProperty = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if (outboundProperty.booleanValue()) {
try {
SOAPEnvelope envelope = context.getMessage().getSOAPPart().getEnvelope();
SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
SOAPFactory factory = SOAPFactory.newInstance();
String prefix = "wsse";
SOAPElement securityElem = factory.createElement("Security", prefix, uri);
SOAPElement tokenElem = factory.createElement("UsernameToken", prefix, uri);
tokenElem.addAttribute(QName.valueOf("wsu:Id"), "UsernameToken-2");
tokenElem.addAttribute(QName.valueOf("xmlns:wsu"), uta);
SOAPElement userElem = factory.createElement("Username", prefix, uri);
userElem.addTextNode(usuario);
SOAPElement pwdElem = factory.createElement("Password", prefix, uri);
pwdElem.addTextNode(senha);
pwdElem.addAttribute(QName.valueOf("Type"), ta);
tokenElem.addChildElement(userElem);
tokenElem.addChildElement(pwdElem);
securityElem.addChildElement(tokenElem);
SOAPHeader header = envelope.addHeader();
header.addChildElement(securityElem);
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPBody soapBody = envelope.getBody();
soapBody.setPrefix("soapenv");
O server é autenticado, e eu consigo autenticar numa boa com este cabeçalho, mas quando tento implementar o attachment no body
ele dá o seguinte erro:
Endpoint does not contain operation meta data for empty soap body
Alguém aí tem idéia do que eu poderia fazer? As tags xml estão corretas e eu estou tentando anexar um xml em Base64.