# Axis2 und Spring



## navino (10. Juli 2007)

Hallo,

kennt sich hier jemand mit Axis2 in Verbindung mit Spring aus...?

Gruß
navino


----------



## Thomas Darimont (10. Juli 2007)

Hallo,

ich hab vor einiger Zeit mal ein Beispiel zu Spring und Axis 1.x gemacht:
http://www.tutorials.de/forum/java/236622-webservices-mit-spring-und-axis.html

Ansonsten solltest du dir mal Spring Webservices anschauen:
http://static.springframework.org/spring-ws/site/reference/html/common.html#d0e1222
die haben auch Support for das AXIOM - Objektmodel von Axis 2

Gruß Tom


----------



## navino (11. Juli 2007)

Hallo, und danke für die schnelle Antwort.

Grundsätzlich funktioniert es ja bei mir. Wenn man eine bean in der applicationcontext.xml
definiere, wird diese standardmäßig nur einmal erzeugt. 
Da ich aber den Service im transportsession-scope haben möchte um mir ein user-object zu speichern, habe ich singelton="false" gesetzt. Dann werden allerdings schon sofort beim Starten zwei Instanzen erzeugt.

meine service.xml
<service name="LogonService" scope="transportSession">
	<description>nur der Logon</description>

	<parameter name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier</parameter>
	<parameter name="SpringBeanName">logonService</parameter>

	<operation name="getLogon">
		<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
			class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
	</operation>
</service>

Auszug aus meiner applicationcontext.xml

<bean id="logonService"
		class="de.sbiruhr.rgpr.services.LogonService" singleton="false">
		<constructor-arg>
			<ref bean="userDao" />
		</constructor-arg>
	</bean>

Da ich ja je Session eine Instanz haben möchte um den User zu speichern, geht das irgendwie nicht...

gruß
navino


----------



## Thomas Darimont (11. Juli 2007)

Hallo,

warum willst du denn logon Service nicht als Singleton haben? Ich denke wenn du dir Session/User-Context halten musst solltest du das nicht in diesem Service tun, das verwirrt nur. Kannst du beim Logon nicht ein eindeutiges Session-Token für den User generieren (oder das von AXIS2 mitbenutzen) über das du dann User-spezifische Informationen in einer entsprechenden Map hälst. Die Map könnte beispielsweise an einem als Singleton markierten von Spring verwalteten ContextHolder aufgehängt werden.

Gruß Tom


----------



## navino (11. Juli 2007)

Ja an sowas habe ich auch schon gedacht,
allerdings wenn es doch da was fertiges gibt...

Hab mich vor kurzem mit jsf beschäftigt, da setzt man einfach eine Bean die ein User hat in des Session-Scope, - und fertig.... 
Klappte wunderbar!

Was ist den ein ContextHolder?
Ich würd dann einfach ein Map, in den LogonService packen... 
In der Map würd ich dann die sessionid als key, und den User als value speichern.
Wobei ich da wieder eine neue Frage habe, wie komme von einem POJO-Service an die sessionid?

Gruß
navino


----------

