Axis2 und Spring

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
 
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
 
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
 
Zurück