/** * Copyright (C) 2010 Talend Inc. - www.talend.com */ package demo.interceptors.client; import java.util.Properties; import javax.xml.namespace.QName; import javax.xml.ws.Service; import javax.xml.ws.soap.SOAPBinding; import com.talend.examples.interceptors.Greeter; import demo.interceptors.interceptor.DemoInterceptor; import org.apache.cxf.frontend.ClientProxy; public final class Client { private static final QName SERVICE_NAME = new QName("http://talend.com/examples/interceptors", "GreeterService"); private static final QName PORT_NAME = new QName("http://talend.com/examples/interceptors", "GreeterPort"); private static final String PORT_PROPERTY = "http.port"; private static final int DEFAULT_PORT_VALUE = 8080; private static final String HTTP_PORT; static { Properties props = new Properties(); try { props.load(Client.class.getResourceAsStream("/interceptors/client.properties")); } catch (Exception ex) { throw new RuntimeException("client.properties resource is not available"); } HTTP_PORT = props.getProperty(PORT_PROPERTY); } public Client() throws Exception { this(new String[0]); } public Client(String args[]) throws Exception { final String address = "http://localhost:" + getPort() + "/services/InterceptorExample"; Service service = Service.create(SERVICE_NAME); service.addPort(PORT_NAME, SOAPBinding.SOAP11HTTP_BINDING, address); Greeter greeter = service.getPort(Greeter.class); // Use CXF API's to grab the underlying Client object and add // the DemoInterceptor's to it org.apache.cxf.endpoint.Client client = ClientProxy.getClient(greeter); DemoInterceptor.addInterceptors(client.getEndpoint().getBinding()); System.out.println("Invoking greetMe..."); System.out.println("server responded with: " + greeter.greetMe(System.getProperty("user.name"))); System.out.println(); } public static void main(String[] args) throws Exception { new Client(args); System.exit(0); } private static int getPort() { try { return Integer.valueOf(HTTP_PORT); } catch (NumberFormatException ex) { // ignore } return DEFAULT_PORT_VALUE; } }