Skip to content

Instantly share code, notes, and snippets.

@chamerling
Created September 1, 2011 13:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chamerling/1186183 to your computer and use it in GitHub Desktop.
Save chamerling/1186183 to your computer and use it in GitHub Desktop.
/**
*
*/
package org.petalslink.dsb.kernel.io.client;
import java.util.Map;
import javax.xml.namespace.QName;
import javax.xml.transform.TransformerException;
import org.objectweb.fractal.fraclet.annotation.annotations.FractalComponent;
import org.objectweb.fractal.fraclet.annotation.annotations.Interface;
import org.objectweb.fractal.fraclet.annotation.annotations.LifeCycle;
import org.objectweb.fractal.fraclet.annotation.annotations.Monolog;
import org.objectweb.fractal.fraclet.annotation.annotations.Provides;
import org.objectweb.fractal.fraclet.annotation.annotations.type.LifeCycleType;
import org.objectweb.util.monolog.api.Logger;
import org.ow2.petals.registry.api.util.XMLUtil;
import org.ow2.petals.util.LoggingUtil;
import org.petalslink.dsb.api.ServiceEndpoint;
import org.petalslink.dsb.service.client.Client;
import org.petalslink.dsb.service.client.ClientException;
import org.petalslink.dsb.service.client.Message;
import org.w3c.dom.Document;
/**
* @author chamerling
*
*/
@FractalComponent
@Provides(interfaces = { @Interface(name = "service", signature = ClientTestService.class) })
public class ClientTestServiceImpl implements ClientTestService {
@Monolog(name = "logger")
private Logger logger;
private LoggingUtil log;
@LifeCycle(on = LifeCycleType.START)
protected void start() {
this.log = new LoggingUtil(logger);
}
@LifeCycle(on = LifeCycleType.STOP)
protected void stop() {
}
public boolean invoke(int times) {
if (times <= 0) {
return false;
}
ServiceEndpoint service = new ServiceEndpoint();
service.setEndpointName("HelloServicePort");
service.setServiceName(new QName("http://api.ws.dsb.petalslink.org/", "HelloServiceService"));
QName itf = new QName("http://api.ws.dsb.petalslink.org/", "HelloService");
service.setInterfaces(new QName[] { itf });
Client client = null;
try {
client = ClientFactoryRegistry.getFactory().getClient(service);
for (int i = 0; i < times; i++) {
final int j = i;
Message message = new Message() {
public Document getPayload() {
return XMLUtil
.createDocumentFromString("<api:sayHello xmlns:api=\"http://api.ws.dsb.petalslink.org/\"><arg0>Call "
+ j + "</arg0></api:sayHello>");
}
public QName getOperation() {
return new QName("http://api.ws.dsb.petalslink.org/", "sayHello");
}
public Map<String, String> getProperties() {
return null;
}
public Map<String, Document> getHeaders() {
return null;
}
public QName getService() {
return null;
}
public QName getInterface() {
return null;
}
public String getEndpoint() {
return null;
}
public String getProperty(String name) {
return null;
}
public void setProperty(String name, String value) {
// TODO Auto-generated method stub
}
};
System.out.println("Sending message to client");
Message response = client.sendReceive(message);
try {
System.out.println("Got response on DSB service client for call " + i + " : "
+ XMLUtil.createStringFromDOMDocument(response.getPayload()));
} catch (TransformerException e) {
e.printStackTrace();
}
}
} catch (ClientException e) {
e.printStackTrace();
} finally {
try {
ClientFactoryRegistry.getFactory().release(client);
} catch (ClientException e) {
e.printStackTrace();
}
}
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment