Mit Axis2 ist das Erstellen von Webservices für Java Programmierer noch einfacher geworden. Mit folgendem kleinen Beispiel will ich zeigen, wie man einen Webservice programmieren kann, der von Spring ein Bean injiziert bekommt.

Als Erstes erstellen wir unseren Webservice als einfache Java Klasse:

package com.jgeppert.services;

import com.jgeppert.dao.MyDAO;

private MyDAO myDAO;

public class MyWebService
{
	/* Die Funktion add() ist unsere Webservice Operation die
	 * dann mit einem Client angesprochen werden kann.
	 */
	public String add(String text)
	{
		try
		{
			myDAO.save(text);
			return "insert successfully";
		}
		catch(RuntimeException e)
		{
			return e.getMessage();
		}
	}

	// Mit dieser Methode injiziert uns Spring unser DAO Objekt
	public String setMyDAO(MyDAO myDAO)
	{
		this.myDAO = myDAO;
	}
}

Als Zweites brauchen wir für Aris2 eine service.xml mit folgendem Inhalt:


	My First WebService
	
		com.jgeppert.services.MyWebService
	
    org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
    myWebService
	
		
	

 	

Für Spring sind die zwei Parameter ServiceObjectSupplier und SpringBeanName entscheidend, um uns das benötigte DAO zu übergeben.

Mit Hilfe eines Ant Scriptes oder manuell kann man sich den Webservice in das für Axis2 benötigte AAR Archiv packen. Das Archiv ist im Grunde eine normale JAR Datei mit der service.xml im META-INF Verzeichnis.

Die Struktur des AAR-Archives sollte so aus sehen:

- MyWebService
   - META-INF
     - services.xml
   - com
     - jgeppert
       - services
         - MyWebService.class

Damit Spring unser DAO in dem Service injizieren kann, brauchen wir noch folgenden Eintrag in unserer applicationContext.xml.



	
    	

  	

Nach dem deployen des AAR-Archives im services Folder der Axis2 Web Application steht der Service nun zur Verfügung.

Ein Webservice mit Axis2 und Spring
Tagged on:             

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.