Java, Webprogrammierung, Linux und mehr

Java, Webprogrammierung, Linux und mehr

Virtual Home of Johannes Geppert

  • Home
  • Über mich
  • Meine Linktipps
  • Kontakt
  • Impressum

Ein Webservice mit Axis2 und Spring

Posted in Allgemein, axis2, java, spring, webservices by jogep
Feb 06 2009
TrackBack Address.

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:

<service>
	<description>My First WebService</description>
	<parameter name="ServiceClass" locked="false">
		com.jgeppert.services.MyWebService
	</parameter>
    <parameter name="ServiceObjectSupplier" locked="false">org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier</parameter>
    <parameter name="SpringBeanName" locked="false">myWebService</parameter>
	<operation name="add">
		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
	</operation>
 
</service>

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.

<bean id="applicationContext" class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" />
 
	<bean id="myWebService" class="com.jgeppert.services.MyWebService">
    	<property name="myDAO" ref="MyDAO"/>
 
  	</bean>

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

Bookmark It

Add to Buzz Add to Del.icio.us Add to digg Add to DZone Add to Facebook Add to Google Bookmarks Add to Mister Wong Add to reddit Add to Stumble Upon Add to Spurl Add to Technorati Add to Tip'd Add to Twitter Add to Yahoo My Web
Hide Sites
No Comments yet »
Tagged as: axis2, java, spring, webservice

In Hibernate mit OneToMany Beziehungen arbeiten

Posted in hibernate, java, spring by jogep
Jul 28 2008
TrackBack Address.

Bei einer Java Anwendung die mit Hibernate oder JPA als Persistence Framework arbeitet, kann es vorkommen das man alle Objekte mit HQL ermitteln will deren OneToMany Beziehungen eine bestimmte Größe haben oder mehr als null Elemente beinhalten.

Eine Beispiel Definition unserer Klassen könnte in etwa so aussehen.
MyObject:

@Entity
@Table(name = "my_object", schema = "public")
public class MyObject implements java.io.Serializable
{
  private Set<mysubobject>  subObjects = new HashSet</mysubobject><mysubobject>(0);
 
  @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "myobject")
  public Set</mysubobject><mysubobject> getSubObjects()
  {
    return this.subObjects;
  }
}
</mysubobject>

MySubObject:

@Entity
@Table(name = "my_sub_object", schema = "public")
public class MySubObject implements java.io.Serializable
{
  private MyObject myObject;
 
  @ManyToOne(cascade = {}, fetch = FetchType.LAZY)
  @JoinColumn(name = "myobject", unique = false)
  public MyObject getMyObject()
  {
    return this.myObject;
  }
}

Nach dem wir unsere Klassen mit Annotations oder auch XML definiert haben können wir jetzt in unserem DAO Objekt mit folgenden HQL Befehl alle Objekte von der Datenbank anfordern die mindestens ein Element im Set subObjects haben.

public List<myobject> findAllWithElements()
{
  try
  {
    String queryString = "select model from MyObject model where size(subObjects ) > 0";
    return getHibernateTemplate().find(queryString);
  }
  catch (RuntimeException re)
  {
    log.error("find all with elements failed", re);
    throw re;
  }
}
</myobject>
Bookmark It

Add to Buzz Add to Del.icio.us Add to digg Add to DZone Add to Facebook Add to Google Bookmarks Add to Mister Wong Add to reddit Add to Stumble Upon Add to Spurl Add to Technorati Add to Tip'd Add to Twitter Add to Yahoo My Web
Hide Sites
No Comments yet »
Tagged as: annotions, count, hibernate, hql, jpa, persistence, set, size, spring

Mit dem Spring Framework einen Scheduler ausführen

Posted in java, spring by jogep
Jul 22 2008
TrackBack Address.

Spring bietet uns die Möglichkeit, wiederkehrende Aufgaben auszuführen. Die einfachste Variante einen Scheduler zu implementieren, die ich hier zeigen werde, ist das Ausführen eines TimerTask.

Dazu implementiert man als erstes eine Klasse die von TimerTask ableitet. In der Methode run() können wir jetzt unseren Code ausführen. In diesem Beispiel lassen wir uns von Spring gleich noch ein DAO Objekt übergeben mit dem wir eine Datenbank Operation ausführen können.

public class MyTimerTask extends TimerTask
{
	private static final Log log = LogFactory.getLog(MyTimerTask.class);
	private MeinDAO meinDAO;
 
	public void run()
	{
		log.info("Starte MyTimerTask "+ new Date());
 
		// Etwas sinnvolles machen!
		meinDAO.deleteAll();
 
		log.info("Beende MyTimerTask "+ new Date());
	}
 
	public void setMeinDAO(MeinDAO meinDAO)
	{
		this.meinDAO = meinDAO;
	}
}

Jetzt müssen wir nur noch unsere applicationContext.xml um folgende Einträge erweitern.

	<bean id="myTimerTask" class="com.jgeppert.timer.MyTimerTask">
		<property name="meinDAO" ref="MeinDAO"/>
	</bean>
 
	<bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask" lazy-init="false">
		<!-- Die Startzeit nach der der TimerTask initial starten soll in Millisekunden -->
		<!-- In diesem Beispiel also nach einer Minute -->
		<property name="delay" value="60000" />
 
		<!-- Alle wieviel Millisekunden solle der Task wieder laufen -->
		<!-- In diesem Beispiel läuft der Task alle 10 Minuten -->
		<property name="period" value="600000" />
 
		<property name="timerTask" ref="myTimerTask" />
	</bean>
 
	<bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
    		<property name="scheduledTimerTasks">
	       		<list>
				<ref bean="scheduledTask" />
        		</list>
    		</property>
	</bean>

So lässt sich also auf einfache Art und Weise ein Timer mit Spring ausführen. Mehr Informationen und komplexere Beispiele mit dem Quartz Scheduler findet ihr in der Dokumentation.

Bookmark It

Add to Buzz Add to Del.icio.us Add to digg Add to DZone Add to Facebook Add to Google Bookmarks Add to Mister Wong Add to reddit Add to Stumble Upon Add to Spurl Add to Technorati Add to Tip'd Add to Twitter Add to Yahoo My Web
Hide Sites
1 Kommentar »
Tagged as: java, quartz, scheduler, spring, springframework, timertask

Social Links

TwitterTwitter XingXing TechnoratiTechnorati GithubGithub Google ProfileGoogle Profile

Kategorien

  • Allgemein
  • datenbanken
  • hdr
  • java
    • sap
    • spring
    • struts2
    • hibernate
    • axis2
    • webservices
    • Struts jQuery Plugin
    • json
  • linux
  • projekte
  • sonstiges
  • witze
  • jQuery
  • php
  • piratenpartei

Schlagwörter

ajax bilder checksum client dojo e-mail email gallerie hdr hdr bild hdr bilder hibernate integration java jax-rc jersey jpeg jqgrid jQuery leipzig linux mail openSUSE options Photo php plugin properties qtpfsgui resize rest richtext smtp spring struts2 versenden video web gallerie webservice web service wein weinfreund weingut widgets witze

Archiv

  • Juli 2010 (2)
  • Juni 2010 (2)
  • Mai 2010 (1)
  • März 2010 (2)
  • Januar 2010 (4)
  • Dezember 2009 (1)
  • November 2009 (1)
  • Oktober 2009 (1)
  • September 2009 (1)
  • August 2009 (1)
  • Juli 2009 (2)
  • Juni 2009 (4)
  • Mai 2009 (5)
  • April 2009 (1)
  • März 2009 (2)
  • Februar 2009 (2)
  • Januar 2009 (1)
  • September 2008 (1)
  • Juli 2008 (22)

Meta

  • Anmelden
  • Artikel-Feed (RSS)
  • Kommentare als RSS
  • WordPress.org



Add to Technorati Favorites
Technorati Profile
Programming Blog Directory
Programming Blogs - Blog Catalog Blog Directory

blogoscoop
Blogverzeichnis - Blog Verzeichnis bloggerei.de
BlogPingR.de - Blog Ping-Dienst, Blogmonitor
Blog Verzeichnis Social Bookmarking, RSS-Verzeichnis
Blog Top Liste - by TopBlogs.de
http://www.wikio.de
Technology Blogs - Blog Rankings

RSS Neues aus der Weinwelt

  • Weingut Zickl jetzt NEU bei weinfreund.de
  • Affentaler Winzergenossenschaft Bühl eG jetzt NEU bei weinfreund.de
  • Weingut Christian & Thomas Weiss jetzt NEU bei weinfreund.de
  • Weingut Hager Matthias jetzt NEU bei weinfreund.de
  • 22 Oktober: Tag des österreichischen Sekts
  • Weingut Fels jetzt NEU bei weinfreund.de
  • 11.-12.09.2010 Wein- und Schlemmerfest Hachenburg
  • Weingut Schreiber-Kiebler jetzt NEU bei weinfreund.de
  • Neue Homepage
  • Karl Inführ KG Wein- und Sektkellerei jetzt NEU bei weinfreund.de
Powered by WordPress | “Blend” from Spectacu.la WP Themes Club