package nl.whitehorses.ws;
import com.sun.xml.ws.api.SOAPVersion;
import com.sun.xml.ws.api.addressing.AddressingVersion;
import com.sun.xml.ws.api.addressing.WSEndpointReference;
import com.sun.xml.ws.api.message.HeaderList;
import com.sun.xml.ws.api.message.Headers;
import com.sun.xml.ws.developer.JAXWSProperties;
import com.sun.xml.ws.developer.WSBindingProvider;
import javax.annotation.Resource;
import javax.jws.Oneway;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.soap.Addressing;
import nl.whitehors.ws.client.HelloImplService;
import nl.whitehorses.ws.interfaces.Hello;
@WebService
@Addressing
public class HelloImpl implements Hello {
@Resource
WebServiceContext context;
@WebMethod()
@Oneway()
public void sayHello(String name) {
HeaderList hl =
(HeaderList)context.getMessageContext().get(
JAXWSProperties.INBOUND_HEADER_LIST_PROPERTY);
// gets the addressing informations in the SOAP header
WSEndpointReference reference = hl.getReplyTo(AddressingVersion.W3C,
SOAPVersion.SOAP_11);
String messageId = hl.getMessageID(AddressingVersion.W3C,
SOAPVersion.SOAP_11);
HelloImplService srv = new HelloImplService();
nl.whitehors.ws.client.HelloImpl portType = srv.getHelloImplPort();
WSBindingProvider bp = (WSBindingProvider)portType;
bp.setAddress( reference.getAddress());
bp.setOutboundHeaders(Headers.create(AddressingVersion.W3C.relatesToTag,
messageId));
portType.callbackMessage("hello you [" + reference.getAddress() + "]");
}
@WebMethod()
@Oneway()
public void callbackMessage(String msg) {
}
}