!!! Beispiel-Listings zu Java-Webservices-Framework
!!! Listing 1: EchoWS.java/Apache Axis2
package de.heise.ix.frameworks;
public class EchoWS {
public String echo(String text) {
System.out.println(text);
return text;
}
}
!!! Listing 2: services.xml/Apache Axis2
de.heise.ix.frameworks.EchoWS
!!! Listing 3: LoggingHandler.java/Apache Axis2
package de.heise.ix.frameworks;
import org.apache.axis2.AxisFault;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.handlers.AbstractHandler;
public class LoggingHandler extends AbstractHandler {
@Override
public InvocationResponse invoke(MessageContext context) throws AxisFault {
System.out.println(context.getEnvelope());
return InvocationResponse.CONTINUE;
}
}
!!! Listing 4: EchoWS.java/Apache CXF
package de.heise.ix.frameworks;
public interface EchoWS {
public String echo(String text);
}
!!! Listing 5: EchoWSImpl.java/Apache CXF
package de.heise.ix.frameworks;
public class EchoWSImpl implements EchoWS {
@Override
public String echo(String text) {
System.out.println(text);
return text;
}
}
!!! Listing 6: web.xml/Apache CXF
CXFServlet
org.apache.cxf.transport.servlet.CXFServlet
config-location
/WEB-INF/spring-beans.xml
1
CXFServlet
/services/*
!!! Listing 7: spring-beans.xml/Apache CXF
!!! Listing 8: Client/Apache CXF
ClientProxyFactoryBean factory = new ClientProxyFactoryBean();
factory.setServiceClass(EchoWS.class);
factory.setAddress("http://localhost:8080/services/echo");
EchoWS echoWS = (EchoWS) factory.create();
System.out.println(echoWS.echo("Hello World!")); // -> Hello World!
!!! Listing 9: EchoResource.java/Jersey
package de.heise.ix.frameworks;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
@Path("/echo")
public class EchoResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String echo(@QueryParam("text") String text) {
System.out.println(text);
return text;
}
}
!!! Listing 10: web.xml/Jersey
RESTServlet
com.sun.jersey.spi.container.servlet.ServletContainer
com.sun.jersey.config.property.packages
de.heise.ix.frameworks
1
RESTServlet
/resources/*
!!! Listing 11: Server/Jersey
Map initParams = new HashMap();
initParams.put("com.sun.jersey.config.property.packages", "de.heise.ix.frameworks");
SelectorThread selectorThread = GrizzlyWebContainerFactory.create("http://localhost:8080/resources/", initParams);
// ...
selectorThread.stopEndpoint();
!!! Listing 12: Client/Jersey
Client client = Client.create();
WebResource resource = client.resource("http://localhost:8080/resources/echo")
.queryParam("text", "Hello World!");
ClientResponse response = resource.get(ClientResponse.class);
System.out.println(response.getStatus()); // -> 200
System.out.println(response.getType()); // -> text/plain
System.out.println(response.getEntity(String.class)); // -> Hello World!
!!! Listing 13: EchoWS.java/Metro
package de.heise.ix.frameworks;
import javax.jws.WebService;
@WebService
public interface EchoWS {
public String echo(String text);
}
!!! Listing 14: EchoWSImpl/Metro
package de.heise.ix.frameworks;
import javax.jws.WebService;
@WebService(endpointInterface="de.heise.ix.frameworks.EchoWS",
serviceName="EchoWSService",
portName="EchoWSPort")
public class EchoWSImpl implements EchoWS {
@Override
public String echo(String text) {
System.out.println(text);
return text;
}
}
!!! Listing 15: sun-jaxws.xml/Metro
!!! Listing 16: Client/Metro
URL wsdl = new URL("http://localhost:8080/services/echo?wsdl");
QName serviceName = new QName("http://frameworks.ix.heise.de/", "EchoWSService");
Service service = Service.create(wsdl, serviceName);
EchoWS echoWS = service.getPort(EchoWS.class);
System.out.println(echoWS.echo("Hello World!")); // -> Hello World!
!!! Listing 17: EchoResource.java/RESTEasy
package de.heise.ix.frameworks;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
@Path("/echo")
public interface EchoResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String echo(@QueryParam("text") String text);
}
!!! Listing 18: EchoResourceImpl.java/RESTEasy
package de.heise.ix.frameworks;
public class EchoResourceImpl implements EchoResource {
@Override
public String echo(String text) {
System.out.println(text);
return text;
}
}
!!! Listing 19: LoggingInterceptor.java/RESTEasy
package de.heise.ix.frameworks;
import javax.ws.rs.WebApplicationException;
import org.jboss.resteasy.annotations.interception.ServerInterceptor;
import org.jboss.resteasy.core.*;
import org.jboss.resteasy.spi.*;
import org.jboss.resteasy.spi.interception.PreProcessInterceptor;
@ServerInterceptor
public class LoggingInterceptor implements PreProcessInterceptor {
@Override
public ServerResponse preProcess(HttpRequest request, ResourceMethod method) throws Failure, WebApplicationException {
System.out.println(request.getUri().getRequestUri());
System.out.println(method.getMethod().getName());
return null;
}
}
!!! Listing 20: Server/RESTEasy
TJWSEmbeddedJaxrsServer server = new TJWSEmbeddedJaxrsServer();
server.setRootResourcePath("/resources");
server.setPort(8080);
server.getDeployment().getActualResourceClasses().add(EchoResourceImpl.class);
server.getDeployment().getActualProviderClasses().add(LoggingInterceptor.class);
server.start();
// ...
server.stop();
!!! Listing 21: Client/RESTEasy
RegisterBuiltin.register(ResteasyProviderFactory.getInstance());
EchoResource echoResource = ProxyFactory.create(EchoResource.class, "http://localhost:8080/resources/");
System.out.println(echoResource.echo("Hello World!")); // -> Hello World!
!!! Listing 22: echo.xsd/Spring-WS
!!! Listing 23: EchoWS.java/Spring-WS
package de.heise.ix.frameworks;
import javax.xml.parsers.*;
import org.springframework.ws.server.endpoint.annotation.*;
import org.w3c.dom.*;
@Endpoint
public class EchoWS {
private final static String NAMESPACE_URI = "http://frameworks.ix.heise.de/";
private final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "EchoRequest")
@ResponsePayload
public Element echo(@RequestPayload Element elementEchoRequest) throws ParserConfigurationException {
String text = elementEchoRequest.getAttribute("text");
System.out.println(text);
Document document = factory.newDocumentBuilder().newDocument();
Element elementEchoResponse = document.createElementNS(NAMESPACE_URI, "EchoResponse");
elementEchoResponse.setAttribute("text", text);
return elementEchoResponse;
}
}
!!! Listing 24: LoggingInterceptor.java/Spring-WS
package de.heise.ix.frameworks;
import org.springframework.ws.context.MessageContext;
import org.springframework.ws.server.endpoint.interceptor.EndpointInterceptorAdapter;
public class LoggingInterceptor extends EndpointInterceptorAdapter {
@Override
public boolean handleRequest(MessageContext context, Object endpoint) throws Exception {
context.getRequest().writeTo(System.out);
return true;
}
@Override
public boolean handleResponse(MessageContext context, Object endpoint) throws Exception {
context.getResponse().writeTo(System.out);
return true;
}
}
!!! Listing 25: spring-ws-servlet.xml/Spring-WS
!!! Listing 26: Client/Spring-WS
Source source = new StringSource("");
DOMResult result = new DOMResult();
WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
webServiceTemplate.sendSourceAndReceiveToResult("http://localhost:8080/services/echo", source, result);
Element elementEchoResponse = (Element) result.getNode().getFirstChild();
System.out.println(elementEchoResponse.getAttribute("text")); // -> Hello World!
!!! Ende