You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Declan Dunleavy <de...@yahoo.com> on 2006/08/23 22:37:01 UTC
Axis2 and Spring: Preserving Service Isolation
!-- DIV {margin:0px;}-->Hi,
I emailed Robert Lazarski to get more information about integrating Axis2 with Spring, to which he helpfully pointed me to the following solution:
> Spring support is in the nightlies:
>
> http://people.apache.org/dist/axis2/nightly/
>
> Its documented here:
>
> http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/xdocs/latest/spring.html
This solution outlined here requires the Spring applicationContext.xml to live outside the AAR service file in the Axis2 WEB-INF folder and is configured within the web.xml, which is not as modular as I would like.
I was wondering if there's any way to preserve service isolation by incorporating the ApplicationContext.xml / BeanFactory.xml inside the AAR. As I would prefer not to have to update the axis2 WEB-INF folder applicationContext.xml file with updates to the AARs bean classes every time I release new code. I wasn't sure if it was possible but thought I'd ask Robert anyway. He suggested I post the question here.
Thanks in advance for any replies,
Declan
Re: Axis2 and Spring: Preserving Service Isolation
Posted by robert lazarski <ro...@gmail.com>.
OK, by placing the axis2-spring-SNAPSHOT.jar along with the spring.jar
inside the aar seems to work, which is I think a good solution as each
Spring / AAR classloader should then be completely isolated, ie, the
ServiceObjectSupplier will then be taken from the AAR classloader.
More test are needed - especially multiple AAR's - but so far it looks
promising.
Robert
http://www.braziloutsource.com/
On 8/24/06, robert lazarski <ro...@gmail.com> wrote:
> What I'm going to show is experimental. If you have the spring jar in
> WEB-INF/lib and only one AAR, it seems to work. Multiple AAR's still
> need to be tested. Furthermore, I'm hoping axis2-1033 when resolved
> will avoid the need for a Spring init service.
>
> Have your AAR like so:
>
> ./springExample.aar
> ./META-INF
> ./META-INF/MANIFEST.MF
> ./META-INF/services.xml
> ./applicationContext.xml
> ./spring
> ./spring/MyBean.class
> ./spring/MyBeanImpl.class
> ./spring/SpringAwareService.class
> ./spring/SpringInit.class
>
> services.xml is:
>
> <serviceGroup>
> <service name="SpringInit">
> <description>
> Spring init
> </description>
> <parameter name="ServiceClass" locked="false">spring.SpringInit</parameter>
> <operation name="springInit">
> <messageReceiver
> class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
> </operation>
> </service>
> <service name="SpringAwareService">
> <description>
> simple spring example
> </description>
> <parameter name="ServiceObjectSupplier"
> locked="false">org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier</parameter>
> <parameter name="SpringBeanName"
> locked="false">springAwareService</parameter>
> <operation name="getValue">
> <messageReceiver
> class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
> </operation>
> </service>
> </serviceGroup>
>
> The Spring init service follows - the rest is based on the tutorial:
>
> package spring;
>
> import org.apache.axiom.om.OMAbstractFactory;
> import org.apache.axiom.om.OMElement;
> import org.apache.axiom.om.OMFactory;
> import org.apache.axiom.om.OMNamespace;
> import org.apache.axiom.om.OMText;
> import org.apache.axis2.engine.Service;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.description.AxisService;
> import org.springframework.context.support.ClassPathXmlApplicationContext;
>
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
>
> public class SpringInit implements Service {
>
> private static Log logger = LogFactory
> .getLog(SpringInit .class);
>
> // The web service
> public OMElement springInit(OMElement ignore) {
>
> OMFactory factory=
> OMAbstractFactory.getOMFactory();
> OMNamespace payloadNs= factory.createOMNamespace(
> "http://springExample.org/example1", "example1");
> OMElement payload =
> factory.createOMElement("string", payloadNs);
> OMText response = factory.createOMText("Spring did application
> context init");
> payload.addChild(response);
> return payload;
> }
>
> /*
> */
> public void init(ServiceContext serviceContext) {
>
> AxisService axisService = serviceContext.getAxisService();
> ClassLoader classLoader = axisService.getClassLoader();
>
> ClassPathXmlApplicationContext ctx = new
> ClassPathXmlApplicationContext(new String[]
> {"applicationContext.xml"}, false);
> ctx.setClassLoader(classLoader);
> ctx.refresh();
> if (logger.isDebugEnabled()) {
> logger.debug("\n\ninit() set spring classloader via
> axisService.getClassLoader() ... ");
> }
>
> }
>
> public void setOperationContext(OperationContext arg0) {
>
> }
>
> public void destroy(ServiceContext arg0) {
>
> }
> }
>
> You need to call the spring init client for now:
>
> package client;
>
> import java.io.StringWriter;
>
> import javax.xml.stream.XMLOutputFactory;
>
> import org.apache.axiom.om.OMAbstractFactory;
> import org.apache.axiom.om.OMElement;
> import org.apache.axiom.om.OMFactory;
> import org.apache.axiom.om.OMNamespace;
> import org.apache.axis2.addressing.EndpointReference;
> import org.apache.axis2.client.Options;
> import org.apache.axis2.client.ServiceClient;
>
> public class SpringInitClient {
> /** Access point inside the servlet container. **/
> private static EndpointReference targetEPR =
> new EndpointReference(
> // "http://localhost:8080/axis2/services/springExample");
> "http://localhost:9080/axis2/services/SpringInit");
>
> /**
> * Simple axis2 client.
> *
> * @param args Main
> */
> public static void main(String[] args) {
> try {
> OMFactory factory = OMAbstractFactory.getOMFactory();
> OMNamespace omNs = factory.createOMNamespace(
> "http://springExample.org/example1", "example1");
>
> OMElement method = factory.createOMElement("springInit", omNs);
> OMElement value = factory.createOMElement("Text", omNs);
> value.addChild(factory.createOMText(value, "Some String "));
> method.addChild(value);
>
> ServiceClient serviceClient = new ServiceClient();
>
> Options options = new Options();
> serviceClient.setOptions(options);
> options.setTo(targetEPR);
>
> //Blocking invocation
> OMElement result = serviceClient.sendReceive(method);
>
> StringWriter writer = new StringWriter();
> result.serialize(XMLOutputFactory.newInstance()
> .createXMLStreamWriter(writer));
> writer.flush();
>
> System.out.println("Response: " + writer.toString());
> } catch (Exception ex) {
> ex.printStackTrace();
> }
> }
> }
>
> I'll be working thru the rest of the classloader issues mentioned as
> time permits.
>
> HTH,
> Robert
> http://www.braziloutsource.com/
>
> On 8/24/06, Declan Dunleavy <de...@yahoo.com> wrote:
> >
> >
> > Hi Robert,
> >
> > I am happy to load spring.jar from the Axis2/WEB-INF/lib folder.
> >
> > cheers,
> >
> > Declan
> >
> >
> > ----- Original Message ----
> > From: robert lazarski <ro...@gmail.com>
> > To: axis-user@ws.apache.org
> > Sent: Wednesday, 23 August, 2006 11:53:05 PM
> > Subject: Re: Axis2 and Spring: Preserving Service Isolation
> >
> >
> > Yes, the spring docs are focused so far on the simpler cases.
> > Configuring spring via na AAR isn't documented yet as I need to do
> > more testing, but to asnswer your question I need to know where do you
> > want to load the spring.jar from , inside the AAR or WEB-INF/lib ?
> >
> > If the spring.jar is loaded from WEB-INF/lib , that's no problem and I
> > can show you how to load your applicationContext.xml / beanRef.xml
> > from the aar to configure Spring and you can use the
> > ServiceObjectSupplier method to wire your beans as explained in the
> > docs. One caveat: I need to test this with multiple AAR's, but my
> > initial tests shows that it can work for one AAR .
> >
> > If the spring.jar is loaded inside the AAR , you still can load your
> > applicationContext.xml from the aar. I'm still thinking thru, however,
> > if you wanted to how you could use the ServiceObjectSupplier in that
> > case . That's because the Spring ApplicationContext object, in the
> > spring jar inside the aar case , will not be visible at the
> > WEB-INF/lib level where the AbstractMessageReceiver will attempt to
> > wire the bean. There's probably a solution here but I still need to
> > think it thru.
> >
> > In the case of the latter, perhaps I can get
> > AxisService.getClassLoader() at the ServiceObjectSupplier /
> > AbstracMessageReceiver level to get the spring ApplicationContext
> > object (not the xml file) from the AAR/lib/spring.jar , though that
> > may not work in terms of classloader isolation. Someone such as Dims
> > or Deepal may be able to comment .
> >
> > In any case, the solution at the service level will involve the
> > service implementing the org.apache.axis2.engine.Service interface
> > and doing the spring config in init() . There is a blocker for the
> > next release, axis2-1033, that when resolved will permit init() to be
> > called on server startup much like a servlet load on startup. My
> > spring inside an aar tests have been calling a service first that
> > configures spring until axis2-1033 is resolved. Once you let me know
> > which scenario you have in mind I'll work with you to get it
> > implemented.
> >
> > Cheers,
> > Robert
> > http://www.braziloutsource.com/
> >
> > On 8/23/06, Declan Dunleavy <de...@yahoo.com> wrote:
> > >
> > >
> > >
> > > Hi,
> > >
> > >
> > > I emailed Robert Lazarski to get more information about integrating Axis2
> > > with Spring, to which he helpfully pointed me to the following solution:
> > >
> > > > Spring support is in the nightlies:
> > > >
> > > > http://people.apache.org/dist/axis2/nightly/
> > > >
> > > > Its documented here:
> > > >
> > > >
> > >
> > http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/xdocs/latest/spring.html
> > >
> > > This solution outlined here requires the Spring applicationContext.xml to
> > > live outside the AAR service file in the Axis2 WEB-INF folder and is
> > > configured within the web.xml, which is not as modular as I would like.
> > >
> > > I was wondering if there's any way to preserve service isolation by
> > > incorporating the ApplicationContext.xml / BeanFactory.xml inside the AAR.
> > > As I would prefer not to have to update the axis2 WEB-INF folder
> > > applicationContext.xml file with updates to the AARs bean classes every
> > time
> > > I release new code. I wasn't sure if it was possible but thought I'd ask
> > > Robert anyway. He suggested I post the question here.
> > >
> > > Thanks in advance for any replies,
> > >
> > > Declan
> > >
> > >
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> > For additional commands, e-mail: axis-user-help@ws.apache.org
> >
> >
> >
>
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org
Re: Axis2 and Spring: Preserving Service Isolation
Posted by robert lazarski <ro...@gmail.com>.
What I'm going to show is experimental. If you have the spring jar in
WEB-INF/lib and only one AAR, it seems to work. Multiple AAR's still
need to be tested. Furthermore, I'm hoping axis2-1033 when resolved
will avoid the need for a Spring init service.
Have your AAR like so:
./springExample.aar
./META-INF
./META-INF/MANIFEST.MF
./META-INF/services.xml
./applicationContext.xml
./spring
./spring/MyBean.class
./spring/MyBeanImpl.class
./spring/SpringAwareService.class
./spring/SpringInit.class
services.xml is:
<serviceGroup>
<service name="SpringInit">
<description>
Spring init
</description>
<parameter name="ServiceClass" locked="false">spring.SpringInit</parameter>
<operation name="springInit">
<messageReceiver
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</operation>
</service>
<service name="SpringAwareService">
<description>
simple spring example
</description>
<parameter name="ServiceObjectSupplier"
locked="false">org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier</parameter>
<parameter name="SpringBeanName"
locked="false">springAwareService</parameter>
<operation name="getValue">
<messageReceiver
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</operation>
</service>
</serviceGroup>
The Spring init service follows - the rest is based on the tutorial:
package spring;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.OMText;
import org.apache.axis2.engine.Service;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.OperationContext;
import org.apache.axis2.context.ServiceContext;
import org.apache.axis2.description.AxisService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class SpringInit implements Service {
private static Log logger = LogFactory
.getLog(SpringInit .class);
// The web service
public OMElement springInit(OMElement ignore) {
OMFactory factory=
OMAbstractFactory.getOMFactory();
OMNamespace payloadNs= factory.createOMNamespace(
"http://springExample.org/example1", "example1");
OMElement payload =
factory.createOMElement("string", payloadNs);
OMText response = factory.createOMText("Spring did application
context init");
payload.addChild(response);
return payload;
}
/*
*/
public void init(ServiceContext serviceContext) {
AxisService axisService = serviceContext.getAxisService();
ClassLoader classLoader = axisService.getClassLoader();
ClassPathXmlApplicationContext ctx = new
ClassPathXmlApplicationContext(new String[]
{"applicationContext.xml"}, false);
ctx.setClassLoader(classLoader);
ctx.refresh();
if (logger.isDebugEnabled()) {
logger.debug("\n\ninit() set spring classloader via
axisService.getClassLoader() ... ");
}
}
public void setOperationContext(OperationContext arg0) {
}
public void destroy(ServiceContext arg0) {
}
}
You need to call the spring init client for now:
package client;
import java.io.StringWriter;
import javax.xml.stream.XMLOutputFactory;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
public class SpringInitClient {
/** Access point inside the servlet container. **/
private static EndpointReference targetEPR =
new EndpointReference(
// "http://localhost:8080/axis2/services/springExample");
"http://localhost:9080/axis2/services/SpringInit");
/**
* Simple axis2 client.
*
* @param args Main
*/
public static void main(String[] args) {
try {
OMFactory factory = OMAbstractFactory.getOMFactory();
OMNamespace omNs = factory.createOMNamespace(
"http://springExample.org/example1", "example1");
OMElement method = factory.createOMElement("springInit", omNs);
OMElement value = factory.createOMElement("Text", omNs);
value.addChild(factory.createOMText(value, "Some String "));
method.addChild(value);
ServiceClient serviceClient = new ServiceClient();
Options options = new Options();
serviceClient.setOptions(options);
options.setTo(targetEPR);
//Blocking invocation
OMElement result = serviceClient.sendReceive(method);
StringWriter writer = new StringWriter();
result.serialize(XMLOutputFactory.newInstance()
.createXMLStreamWriter(writer));
writer.flush();
System.out.println("Response: " + writer.toString());
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
I'll be working thru the rest of the classloader issues mentioned as
time permits.
HTH,
Robert
http://www.braziloutsource.com/
On 8/24/06, Declan Dunleavy <de...@yahoo.com> wrote:
>
>
> Hi Robert,
>
> I am happy to load spring.jar from the Axis2/WEB-INF/lib folder.
>
> cheers,
>
> Declan
>
>
> ----- Original Message ----
> From: robert lazarski <ro...@gmail.com>
> To: axis-user@ws.apache.org
> Sent: Wednesday, 23 August, 2006 11:53:05 PM
> Subject: Re: Axis2 and Spring: Preserving Service Isolation
>
>
> Yes, the spring docs are focused so far on the simpler cases.
> Configuring spring via na AAR isn't documented yet as I need to do
> more testing, but to asnswer your question I need to know where do you
> want to load the spring.jar from , inside the AAR or WEB-INF/lib ?
>
> If the spring.jar is loaded from WEB-INF/lib , that's no problem and I
> can show you how to load your applicationContext.xml / beanRef.xml
> from the aar to configure Spring and you can use the
> ServiceObjectSupplier method to wire your beans as explained in the
> docs. One caveat: I need to test this with multiple AAR's, but my
> initial tests shows that it can work for one AAR .
>
> If the spring.jar is loaded inside the AAR , you still can load your
> applicationContext.xml from the aar. I'm still thinking thru, however,
> if you wanted to how you could use the ServiceObjectSupplier in that
> case . That's because the Spring ApplicationContext object, in the
> spring jar inside the aar case , will not be visible at the
> WEB-INF/lib level where the AbstractMessageReceiver will attempt to
> wire the bean. There's probably a solution here but I still need to
> think it thru.
>
> In the case of the latter, perhaps I can get
> AxisService.getClassLoader() at the ServiceObjectSupplier /
> AbstracMessageReceiver level to get the spring ApplicationContext
> object (not the xml file) from the AAR/lib/spring.jar , though that
> may not work in terms of classloader isolation. Someone such as Dims
> or Deepal may be able to comment .
>
> In any case, the solution at the service level will involve the
> service implementing the org.apache.axis2.engine.Service interface
> and doing the spring config in init() . There is a blocker for the
> next release, axis2-1033, that when resolved will permit init() to be
> called on server startup much like a servlet load on startup. My
> spring inside an aar tests have been calling a service first that
> configures spring until axis2-1033 is resolved. Once you let me know
> which scenario you have in mind I'll work with you to get it
> implemented.
>
> Cheers,
> Robert
> http://www.braziloutsource.com/
>
> On 8/23/06, Declan Dunleavy <de...@yahoo.com> wrote:
> >
> >
> >
> > Hi,
> >
> >
> > I emailed Robert Lazarski to get more information about integrating Axis2
> > with Spring, to which he helpfully pointed me to the following solution:
> >
> > > Spring support is in the nightlies:
> > >
> > > http://people.apache.org/dist/axis2/nightly/
> > >
> > > Its documented here:
> > >
> > >
> >
> http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/xdocs/latest/spring.html
> >
> > This solution outlined here requires the Spring applicationContext.xml to
> > live outside the AAR service file in the Axis2 WEB-INF folder and is
> > configured within the web.xml, which is not as modular as I would like.
> >
> > I was wondering if there's any way to preserve service isolation by
> > incorporating the ApplicationContext.xml / BeanFactory.xml inside the AAR.
> > As I would prefer not to have to update the axis2 WEB-INF folder
> > applicationContext.xml file with updates to the AARs bean classes every
> time
> > I release new code. I wasn't sure if it was possible but thought I'd ask
> > Robert anyway. He suggested I post the question here.
> >
> > Thanks in advance for any replies,
> >
> > Declan
> >
> >
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org
Re: Axis2 and Spring: Preserving Service Isolation
Posted by Declan Dunleavy <de...@yahoo.com>.
Hi Robert,
I am happy to load spring.jar from the Axis2/WEB-INF/lib folder.
cheers,
Declan
----- Original Message ----
From: robert lazarski <ro...@gmail.com>
To: axis-user@ws.apache.org
Sent: Wednesday, 23 August, 2006 11:53:05 PM
Subject: Re: Axis2 and Spring: Preserving Service Isolation
Yes, the spring docs are focused so far on the simpler cases.
Configuring spring via na AAR isn't documented yet as I need to do
more testing, but to asnswer your question I need to know where do you
want to load the spring.jar from , inside the AAR or WEB-INF/lib ?
If the spring.jar is loaded from WEB-INF/lib , that's no problem and I
can show you how to load your applicationContext.xml / beanRef.xml
from the aar to configure Spring and you can use the
ServiceObjectSupplier method to wire your beans as explained in the
docs. One caveat: I need to test this with multiple AAR's, but my
initial tests shows that it can work for one AAR .
If the spring.jar is loaded inside the AAR , you still can load your
applicationContext.xml from the aar. I'm still thinking thru, however,
if you wanted to how you could use the ServiceObjectSupplier in that
case . That's because the Spring ApplicationContext object, in the
spring jar inside the aar case , will not be visible at the
WEB-INF/lib level where the AbstractMessageReceiver will attempt to
wire the bean. There's probably a solution here but I still need to
think it thru.
In the case of the latter, perhaps I can get
AxisService.getClassLoader() at the ServiceObjectSupplier /
AbstracMessageReceiver level to get the spring ApplicationContext
object (not the xml file) from the AAR/lib/spring.jar , though that
may not work in terms of classloader isolation. Someone such as Dims
or Deepal may be able to comment .
In any case, the solution at the service level will involve the
service implementing the org.apache.axis2.engine.Service interface
and doing the spring config in init() . There is a blocker for the
next release, axis2-1033, that when resolved will permit init() to be
called on server startup much like a servlet load on startup. My
spring inside an aar tests have been calling a service first that
configures spring until axis2-1033 is resolved. Once you let me know
which scenario you have in mind I'll work with you to get it
implemented.
Cheers,
Robert
http://www.braziloutsource.com/
On 8/23/06, Declan Dunleavy <de...@yahoo.com> wrote:
>
>
>
> Hi,
>
>
> I emailed Robert Lazarski to get more information about integrating Axis2
> with Spring, to which he helpfully pointed me to the following solution:
>
> > Spring support is in the nightlies:
> >
> > http://people.apache.org/dist/axis2/nightly/
> >
> > Its documented here:
> >
> >
> http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/xdocs/latest/spring.html
>
> This solution outlined here requires the Spring applicationContext.xml to
> live outside the AAR service file in the Axis2 WEB-INF folder and is
> configured within the web.xml, which is not as modular as I would like.
>
> I was wondering if there's any way to preserve service isolation by
> incorporating the ApplicationContext.xml / BeanFactory.xml inside the AAR.
> As I would prefer not to have to update the axis2 WEB-INF folder
> applicationContext.xml file with updates to the AARs bean classes every time
> I release new code. I wasn't sure if it was possible but thought I'd ask
> Robert anyway. He suggested I post the question here.
>
> Thanks in advance for any replies,
>
> Declan
>
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org
Re: Axis2 and Spring: Preserving Service Isolation
Posted by robert lazarski <ro...@gmail.com>.
Yes, the spring docs are focused so far on the simpler cases.
Configuring spring via na AAR isn't documented yet as I need to do
more testing, but to asnswer your question I need to know where do you
want to load the spring.jar from , inside the AAR or WEB-INF/lib ?
If the spring.jar is loaded from WEB-INF/lib , that's no problem and I
can show you how to load your applicationContext.xml / beanRef.xml
from the aar to configure Spring and you can use the
ServiceObjectSupplier method to wire your beans as explained in the
docs. One caveat: I need to test this with multiple AAR's, but my
initial tests shows that it can work for one AAR .
If the spring.jar is loaded inside the AAR , you still can load your
applicationContext.xml from the aar. I'm still thinking thru, however,
if you wanted to how you could use the ServiceObjectSupplier in that
case . That's because the Spring ApplicationContext object, in the
spring jar inside the aar case , will not be visible at the
WEB-INF/lib level where the AbstractMessageReceiver will attempt to
wire the bean. There's probably a solution here but I still need to
think it thru.
In the case of the latter, perhaps I can get
AxisService.getClassLoader() at the ServiceObjectSupplier /
AbstracMessageReceiver level to get the spring ApplicationContext
object (not the xml file) from the AAR/lib/spring.jar , though that
may not work in terms of classloader isolation. Someone such as Dims
or Deepal may be able to comment .
In any case, the solution at the service level will involve the
service implementing the org.apache.axis2.engine.Service interface
and doing the spring config in init() . There is a blocker for the
next release, axis2-1033, that when resolved will permit init() to be
called on server startup much like a servlet load on startup. My
spring inside an aar tests have been calling a service first that
configures spring until axis2-1033 is resolved. Once you let me know
which scenario you have in mind I'll work with you to get it
implemented.
Cheers,
Robert
http://www.braziloutsource.com/
On 8/23/06, Declan Dunleavy <de...@yahoo.com> wrote:
>
>
>
> Hi,
>
>
> I emailed Robert Lazarski to get more information about integrating Axis2
> with Spring, to which he helpfully pointed me to the following solution:
>
> > Spring support is in the nightlies:
> >
> > http://people.apache.org/dist/axis2/nightly/
> >
> > Its documented here:
> >
> >
> http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/xdocs/latest/spring.html
>
> This solution outlined here requires the Spring applicationContext.xml to
> live outside the AAR service file in the Axis2 WEB-INF folder and is
> configured within the web.xml, which is not as modular as I would like.
>
> I was wondering if there's any way to preserve service isolation by
> incorporating the ApplicationContext.xml / BeanFactory.xml inside the AAR.
> As I would prefer not to have to update the axis2 WEB-INF folder
> applicationContext.xml file with updates to the AARs bean classes every time
> I release new code. I wasn't sure if it was possible but thought I'd ask
> Robert anyway. He suggested I post the question here.
>
> Thanks in advance for any replies,
>
> Declan
>
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org