Webservices mit JBoss Web Services
Wie bereits beim Release des JBoss 4.0.4 GA erwähnt, können jetzt Webservices mit Hilfe von Annotations erstellt werden. Dies möchte ich hier am Beispiel eines POJO-Webservices zeigen.
Dazu erstellen wir uns einfach eine Klasse, welche die Logik des Webservices enthält.
package com.it_blogger.webservices; import javax.jws.WebMethod; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; @WebService @SOAPBinding(style = SOAPBinding.Style.RPC) public class TestWebservice { @WebMethod public String hello(String name) { return “Hello “+name+“!”; } }
Dieser Klasse geben wir einfach die Annotation @WebService mit und zudem jeder öffentlich zugänglichen Methode noch @WebMethod. Damit sind wir mit dem Webservice schon fertig. Jetzt muss das Ganze noch gepackt werden. Dazu wird die Klasse einfach wie ein Servlet in einer WAR-Datei deployed. Die web.xml kann z.B. so aussehen:
<?xml version=”1.0″?> <web-app xmlns=“http://java.sun.com/xml/ns/j2ee“ xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance“ xsi:schemaLocation=“http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd“ version=“2.4“> <servlet> <servlet-name>TestWebservice</servlet-name> <servlet-class> com.it_blogger.webservices.TestWebservice </servlet-class> </servlet> <servlet-mapping> <servlet-name>TestWebservice</servlet-name> <url-pattern>/TestWebservice</url-pattern> </servlet-mapping> </web-app>
Jetzt kann unter http://localhost:8080/jbossws/ der Link für den entsprechenden Webservice abgerufen werden.
Die WAR-Datei kann zudem um eine JBoss-Web.Xml erweitert werden, um den Webservice auf einem bestimmten VirtualHost zu deployen. Leider wird in der WSDL-Datei der Endpunkt derzeit noch nicht dynamisch angepasst. Die jboss-web.xml, welche ebenfalls in das WEB-INF-Verzeichnis der WAR-Datei muss, sieht dann entsprechend so aus:
<?xml version=”1.0″ encoding=“UTF-8″?> <jboss-web> <context-root>/</context-root> <virtual-host>webservices.it-blogger.com</virtual-host> </jboss-web>