You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Barry Hathaway <bh...@nycap.rr.com> on 2011/09/06 20:53:47 UTC

Re: Initializing beans and session factory types

Taking Dan's suggestion I got this to work in a CXF/Tomcat environment.
Now I'm trying to migrate this service to a ServiceMix environment.
After building all the bundles, installing them, and running a client to 
access the service
I get:

org.apache.cxf.interceptor.Fault: No Scope registered for scope 'session'
....
Caused by: java.lang.IllegalStateException: No Scope registered for 
scope 'session'
     at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
     at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
     at 
org.springframework.aop.target.SimpleBeanTargetSource.getTarget(SimpleBeanTargetSource.java:33)
     at 
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.getTarget(Cglib2AopProxy.java:653)[74:org.springframework.aop:3.0.5.RELEASE]
     at 
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:604)[74:org.springframework.aop:3.0.5.RELEASE]
     at 
com.ge.research.sadl.sadlserver.cxf.provider.SadlServiceProvider$$EnhancerByCGLIB$$cb9694d2.getClassName(<generated>)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native 
Method)[:1.6.0_25]
     at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)[:1.6.0_25]
     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[:1.6.0_25]
     at java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_25]
     at 
org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)[123:org.apache.cxf.bundle:2.4.1.fuse-00-43]
     at 
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)[123:org.apache.cxf.bundle:2.4.1.fuse-00-43]
     ... 42 more

Any ideas?
Thanks.

Barry Hathaway

On 8/15/2011 4:59 PM, Daniel Kulp wrote:
> The EASIEST way to do this is to no stick a @FactoryType thing on there at all
> and just do:
>
> <bean id="sadlServiceProvider"
> scope="session"
> class="com.ge.research.sadl.sadlserver.cxf.provider.SadlServiceProvider">
> <aop:scoped-proxy/>
> <property name="serviceNameMap">
> <map>
>                  .........
> </map>
> </property>
> </bean>
>
> <jaxws:endpoint id="SadlService" implementor="#sadlServiceProvider"
> address="/SadlService" />
>
>
>
> However, you could also do it without the AOP if you use the
> @FactoryType(value = FactoryType.Type.Spring, args="sadlServiceProvider")
>
>
> Dan
>
>
> On Friday, August 12, 2011 8:01:00 PM Barry Hathaway wrote:
>> I'm trying to create a web service that will maintain states with a session.
>> I've defined the service as:
>>
>> @WebService(serviceName="SadlService",name="SadlService",
>> targetNamespace="http://sadlserver.sadl.research.ge.com",
>> endpointInterface="com.ge.research.sadl.sadlserver.cxf.provider.ISadlService
>> Provider") @FactoryType(value = FactoryType.Type.Session)
>> public class SadlServiceProvider implements ISadlServiceProvider {
>>       private Logger logger = LoggerFactory.getLogger(getClass());
>>       ISadlServer server = null;
>>       private Map<String,String[]>  serviceNameMap = null;
>>
>>       @WebMethod(exclude=true)
>>       public Map<String,String[]>  getServiceNameMap() {
>>           return serviceNameMap;
>>       }
>>
>>       @WebMethod(exclude=true)
>>       public void setServiceNameMap(Map<String,String[]>  serviceNameMap) {
>>           this.serviceNameMap = serviceNameMap;
>>       }
>>
>>       public SadlServiceProvider() {
>>           logger.debug("constructor called");
>>           this.server = new SadlServerImpl();
>>           server.setServiceNameMap(serviceNameMap);
>>       }
>>
>> In my beans.xml file I have defined the bean with the serviceNameMap
>> property:
>>
>> <bean id="sadlServiceProvider"
>> class="com.ge.research.sadl.sadlserver.cxf.provider.SadlServiceProvider">
>> <property name="serviceNameMap">
>> <map>
>>                  .........
>> </map>
>> </property>
>> </bean>
>>
>> <jaxws:endpoint id="SadlService" implementor="#sadlServiceProvider"
>> address="/SadlService" />
>>
>> When the bean is first created (at the time the service is started) the
>> setServiceNameMap method does
>> get called and sets the map to the values defined in beans.xml. The
>> problem is when I invoke another method
>> on the service (via SoadUI) a new session gets created, the
>> SadlServiceProvider constructor gets called, but
>> the setServiceNameMap method does not get called.  So it appears that
>> the a new bean is created by the
>> factory; however, not in the same manner as initially done by Spring.
>>
>> Any ideas how to do this?
>> Thanks.
>>
>> Barry Hathaway


Re: Initializing beans and session factory types

Posted by Daniel Kulp <dk...@apache.org>.
On Wednesday, September 07, 2011 2:02:56 PM Barry Hathaway wrote:
> Thanks Dan, I'll post a similar question on the FUSE SMX list.

Probably better to just post to the users@servicemix.apache.org list.  

> I understand your comment about the need to have a
> RequestContextListener when using AOP.
> Now, if instead of using AOP, if I switch to using a @FactoryType(value
> = FactoryType.Type.Spring, args="sadlServiceProvider")
> does that change the situation?

Probalby not as that would still require the Spring listener thing.


You can TRY:


@FactoryType(value  = FactoryType.Type.Session)

on the service bean itself, but if you have anything that you expect Spring to 
inject in, it likely won't.

Dan



> Thanks.
> 
> Barry
> 
> On 9/6/2011 3:39 PM, Daniel Kulp wrote:
> > On Tuesday, September 06, 2011 2:53:47 PM Barry Hathaway wrote:
> >> Taking Dan's suggestion I got this to work in a CXF/Tomcat
> >> environment.
> >> Now I'm trying to migrate this service to a ServiceMix environment.
> >> After building all the bundles, installing them, and running a client
> >> to
> >> access the service
> > 
> > Hmm...   in order for the Spring scoped proxy to work, the Spring
> > RequestContextListener thing needs to be registered on the servlet
> > context. I have no idea (I hightly doubt) if servicemix does that.    
> > You may need to switch to the CXF specific factories if using SMX.   
> > That said, I'm not even sure if how SMX sets up Jetty if they have
> > sessions turned on at all. That may be more of a question for that
> > list.
> > 
> > Dan
> > 
> >> I get:
> >> 
> >> org.apache.cxf.interceptor.Fault: No Scope registered for scope
> >> 'session' ....
> >> Caused by: java.lang.IllegalStateException: No Scope registered for
> >> scope 'session'
> >> 
> >>       at
> >> 
> >> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBea
> >> n(Abst ractBeanFactory.java:322) at
> >> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(
> >> Abstra ctBeanFactory.java:190) at
> >> org.springframework.aop.target.SimpleBeanTargetSource.getTarget(Simple
> >> BeanTa rgetSource.java:33) at
> >> org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterce
> >> ptor.g
> >> etTarget(Cglib2AopProxy.java:653)[74:org.springframework.aop:3.0.5.RE
> >> LEASE] at
> >> org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterce
> >> ptor.i
> >> ntercept(Cglib2AopProxy.java:604)[74:org.springframework.aop:3.0.5.RE
> >> LEASE] at
> >> com.ge.research.sadl.sadlserver.cxf.provider.SadlServiceProvider$$Enha
> >> ncerBy CGLIB$$cb9694d2.getClassName(<generated>) at
> >> sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> >> Method)[:1.6.0_25]
> >> 
> >>       at
> >> 
> >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
> >> ava:39 )[:1.6.0_25] at
> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
> >> orImpl .java:25)[:1.6.0_25] at
> >> java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_25] at
> >> org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(Abstr
> >> actInv oker.java:173)[123:org.apache.cxf.bundle:2.4.1.fuse-00-43] at
> >> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.
> >> java:8 9)[123:org.apache.cxf.bundle:2.4.1.fuse-00-43] ... 42 more
> >> 
> >> Any ideas?
> >> Thanks.
> >> 
> >> Barry Hathaway
> >> 
> >> On 8/15/2011 4:59 PM, Daniel Kulp wrote:
> >>> The EASIEST way to do this is to no stick a @FactoryType thing on
> >>> there
> >>> at all and just do:
> >>> 
> >>> <bean id="sadlServiceProvider"
> >>> scope="session"
> >>> class="com.ge.research.sadl.sadlserver.cxf.provider.SadlServiceProvi
> >>> der" <aop:scoped-proxy/>
> >>> <property name="serviceNameMap">
> >>> <map>
> >>> 
> >>>                   .........
> >>> 
> >>> </map>
> >>> </property>
> >>> </bean>
> >>> 
> >>> <jaxws:endpoint id="SadlService" implementor="#sadlServiceProvider"
> >>> address="/SadlService" />
> >>> 
> >>> 
> >>> 
> >>> However, you could also do it without the AOP if you use the
> >>> @FactoryType(value = FactoryType.Type.Spring,
> >>> args="sadlServiceProvider")
> >>> 
> >>> 
> >>> Dan
> >>> 
> >>> On Friday, August 12, 2011 8:01:00 PM Barry Hathaway wrote:
> >>>> I'm trying to create a web service that will maintain states with
> >>>> a
> >>>> session. I've defined the service as:
> >>>> 
> >>>> @WebService(serviceName="SadlService",name="SadlService",
> >>>> targetNamespace="http://sadlserver.sadl.research.ge.com",
> >>>> endpointInterface="com.ge.research.sadl.sadlserver.cxf.provider.IS
> >>>> adlS
> >>>> ervice Provider") @FactoryType(value = FactoryType.Type.Session)
> >>>> public class SadlServiceProvider implements ISadlServiceProvider {
> >>>> 
> >>>>        private Logger logger =
> >>>>        LoggerFactory.getLogger(getClass());
> >>>>        ISadlServer server = null;
> >>>>        private Map<String,String[]>   serviceNameMap =
> >>>>        null;
> >>>>        
> >>>>        @WebMethod(exclude=true)
> >>>>        public Map<String,String[]>   getServiceNameMap() {
> >>>>        
> >>>>            return serviceNameMap;
> >>>>        
> >>>>        }
> >>>>        
> >>>>        @WebMethod(exclude=true)
> >>>>        public void setServiceNameMap(Map<String,String[]>
> >>>>        serviceNameMap) {>>
> >>>>        
> >>>>            this.serviceNameMap = serviceNameMap;
> >>>>        
> >>>>        }
> >>>>        
> >>>>        public SadlServiceProvider() {
> >>>>        
> >>>>            logger.debug("constructor called");
> >>>>            this.server = new SadlServerImpl();
> >>>>            server.setServiceNameMap(serviceNameMap);
> >>>>        
> >>>>        }
> >>>> 
> >>>> In my beans.xml file I have defined the bean with the
> >>>> serviceNameMap
> >>>> property:
> >>>> 
> >>>> <bean id="sadlServiceProvider"
> >>>> class="com.ge.research.sadl.sadlserver.cxf.provider.SadlServicePro
> >>>> vide
> >>>> r">  <property name="serviceNameMap">
> >>>> <map>
> >>>> 
> >>>>                   .........
> >>>> 
> >>>> </map>
> >>>> </property>
> >>>> </bean>
> >>>> 
> >>>> <jaxws:endpoint id="SadlService"
> >>>> implementor="#sadlServiceProvider"
> >>>> address="/SadlService" />
> >>>> 
> >>>> When the bean is first created (at the time the service is
> >>>> started)
> >>>> the
> >>>> setServiceNameMap method does
> >>>> get called and sets the map to the values defined in beans.xml.
> >>>> The
> >>>> problem is when I invoke another method
> >>>> on the service (via SoadUI) a new session gets created, the
> >>>> SadlServiceProvider constructor gets called, but
> >>>> the setServiceNameMap method does not get called.  So it appears
> >>>> that
> >>>> the a new bean is created by the
> >>>> factory; however, not in the same manner as initially done by
> >>>> Spring.
> >>>> 
> >>>> Any ideas how to do this?
> >>>> Thanks.
> >>>> 
> >>>> Barry Hathaway
-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog
Talend - http://www.talend.com

Re: Initializing beans and session factory types

Posted by Barry Hathaway <bh...@nycap.rr.com>.
Thanks Dan, I'll post a similar question on the FUSE SMX list.
I understand your comment about the need to have a 
RequestContextListener when using AOP.
Now, if instead of using AOP, if I switch to using a @FactoryType(value 
= FactoryType.Type.Spring, args="sadlServiceProvider")
does that change the situation?
Thanks.

Barry

On 9/6/2011 3:39 PM, Daniel Kulp wrote:
> On Tuesday, September 06, 2011 2:53:47 PM Barry Hathaway wrote:
>> Taking Dan's suggestion I got this to work in a CXF/Tomcat environment.
>> Now I'm trying to migrate this service to a ServiceMix environment.
>> After building all the bundles, installing them, and running a client to
>> access the service
>
> Hmm...   in order for the Spring scoped proxy to work, the Spring
> RequestContextListener thing needs to be registered on the servlet context.
> I have no idea (I hightly doubt) if servicemix does that.     You may need to
> switch to the CXF specific factories if using SMX.    That said, I'm not even
> sure if how SMX sets up Jetty if they have sessions turned on at all.
> That may be more of a question for that list.
>
> Dan
>
>
>> I get:
>>
>> org.apache.cxf.interceptor.Fault: No Scope registered for scope 'session'
>> ....
>> Caused by: java.lang.IllegalStateException: No Scope registered for
>> scope 'session'
>>       at
>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(Abst
>> ractBeanFactory.java:322) at
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Abstra
>> ctBeanFactory.java:190) at
>> org.springframework.aop.target.SimpleBeanTargetSource.getTarget(SimpleBeanTa
>> rgetSource.java:33) at
>> org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.g
>> etTarget(Cglib2AopProxy.java:653)[74:org.springframework.aop:3.0.5.RELEASE]
>> at
>> org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.i
>> ntercept(Cglib2AopProxy.java:604)[74:org.springframework.aop:3.0.5.RELEASE]
>> at
>> com.ge.research.sadl.sadlserver.cxf.provider.SadlServiceProvider$$EnhancerBy
>> CGLIB$$cb9694d2.getClassName(<generated>) at
>> sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>> Method)[:1.6.0_25]
>>       at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
>> )[:1.6.0_25] at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
>> .java:25)[:1.6.0_25] at
>> java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_25] at
>> org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInv
>> oker.java:173)[123:org.apache.cxf.bundle:2.4.1.fuse-00-43] at
>> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:8
>> 9)[123:org.apache.cxf.bundle:2.4.1.fuse-00-43] ... 42 more
>>
>> Any ideas?
>> Thanks.
>>
>> Barry Hathaway
>>
>> On 8/15/2011 4:59 PM, Daniel Kulp wrote:
>>> The EASIEST way to do this is to no stick a @FactoryType thing on there
>>> at all and just do:
>>>
>>> <bean id="sadlServiceProvider"
>>> scope="session"
>>> class="com.ge.research.sadl.sadlserver.cxf.provider.SadlServiceProvider"
>>> <aop:scoped-proxy/>
>>> <property name="serviceNameMap">
>>> <map>
>>>
>>>                   .........
>>>
>>> </map>
>>> </property>
>>> </bean>
>>>
>>> <jaxws:endpoint id="SadlService" implementor="#sadlServiceProvider"
>>> address="/SadlService" />
>>>
>>>
>>>
>>> However, you could also do it without the AOP if you use the
>>> @FactoryType(value = FactoryType.Type.Spring,
>>> args="sadlServiceProvider")
>>>
>>>
>>> Dan
>>>
>>> On Friday, August 12, 2011 8:01:00 PM Barry Hathaway wrote:
>>>> I'm trying to create a web service that will maintain states with a
>>>> session. I've defined the service as:
>>>>
>>>> @WebService(serviceName="SadlService",name="SadlService",
>>>> targetNamespace="http://sadlserver.sadl.research.ge.com",
>>>> endpointInterface="com.ge.research.sadl.sadlserver.cxf.provider.ISadlS
>>>> ervice Provider") @FactoryType(value = FactoryType.Type.Session)
>>>> public class SadlServiceProvider implements ISadlServiceProvider {
>>>>
>>>>        private Logger logger =
>>>>        LoggerFactory.getLogger(getClass());
>>>>        ISadlServer server = null;
>>>>        private Map<String,String[]>   serviceNameMap = null;
>>>>
>>>>        @WebMethod(exclude=true)
>>>>        public Map<String,String[]>   getServiceNameMap() {
>>>>
>>>>            return serviceNameMap;
>>>>
>>>>        }
>>>>
>>>>        @WebMethod(exclude=true)
>>>>        public void setServiceNameMap(Map<String,String[]>
>>>>        serviceNameMap) {>>
>>>>            this.serviceNameMap = serviceNameMap;
>>>>
>>>>        }
>>>>
>>>>        public SadlServiceProvider() {
>>>>
>>>>            logger.debug("constructor called");
>>>>            this.server = new SadlServerImpl();
>>>>            server.setServiceNameMap(serviceNameMap);
>>>>
>>>>        }
>>>>
>>>> In my beans.xml file I have defined the bean with the serviceNameMap
>>>> property:
>>>>
>>>> <bean id="sadlServiceProvider"
>>>> class="com.ge.research.sadl.sadlserver.cxf.provider.SadlServiceProvide
>>>> r">  <property name="serviceNameMap">
>>>> <map>
>>>>
>>>>                   .........
>>>>
>>>> </map>
>>>> </property>
>>>> </bean>
>>>>
>>>> <jaxws:endpoint id="SadlService" implementor="#sadlServiceProvider"
>>>> address="/SadlService" />
>>>>
>>>> When the bean is first created (at the time the service is started)
>>>> the
>>>> setServiceNameMap method does
>>>> get called and sets the map to the values defined in beans.xml. The
>>>> problem is when I invoke another method
>>>> on the service (via SoadUI) a new session gets created, the
>>>> SadlServiceProvider constructor gets called, but
>>>> the setServiceNameMap method does not get called.  So it appears that
>>>> the a new bean is created by the
>>>> factory; however, not in the same manner as initially done by Spring.
>>>>
>>>> Any ideas how to do this?
>>>> Thanks.
>>>>
>>>> Barry Hathaway


Re: Initializing beans and session factory types

Posted by Daniel Kulp <dk...@apache.org>.
On Tuesday, September 06, 2011 2:53:47 PM Barry Hathaway wrote:
> Taking Dan's suggestion I got this to work in a CXF/Tomcat environment.
> Now I'm trying to migrate this service to a ServiceMix environment.
> After building all the bundles, installing them, and running a client to
> access the service


Hmm...   in order for the Spring scoped proxy to work, the Spring 
RequestContextListener thing needs to be registered on the servlet context.   
I have no idea (I hightly doubt) if servicemix does that.     You may need to 
switch to the CXF specific factories if using SMX.    That said, I'm not even 
sure if how SMX sets up Jetty if they have sessions turned on at all.      
That may be more of a question for that list.  

Dan


> I get:
> 
> org.apache.cxf.interceptor.Fault: No Scope registered for scope 'session'
> ....
> Caused by: java.lang.IllegalStateException: No Scope registered for
> scope 'session'
>      at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(Abst
> ractBeanFactory.java:322) at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Abstra
> ctBeanFactory.java:190) at
> org.springframework.aop.target.SimpleBeanTargetSource.getTarget(SimpleBeanTa
> rgetSource.java:33) at
> org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.g
> etTarget(Cglib2AopProxy.java:653)[74:org.springframework.aop:3.0.5.RELEASE]
> at
> org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.i
> ntercept(Cglib2AopProxy.java:604)[74:org.springframework.aop:3.0.5.RELEASE]
> at
> com.ge.research.sadl.sadlserver.cxf.provider.SadlServiceProvider$$EnhancerBy
> CGLIB$$cb9694d2.getClassName(<generated>) at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)[:1.6.0_25]
>      at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
> )[:1.6.0_25] at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
> .java:25)[:1.6.0_25] at
> java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_25] at
> org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInv
> oker.java:173)[123:org.apache.cxf.bundle:2.4.1.fuse-00-43] at
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:8
> 9)[123:org.apache.cxf.bundle:2.4.1.fuse-00-43] ... 42 more
> 
> Any ideas?
> Thanks.
> 
> Barry Hathaway
> 
> On 8/15/2011 4:59 PM, Daniel Kulp wrote:
> > The EASIEST way to do this is to no stick a @FactoryType thing on there
> > at all and just do:
> > 
> > <bean id="sadlServiceProvider"
> > scope="session"
> > class="com.ge.research.sadl.sadlserver.cxf.provider.SadlServiceProvider"
> > >
> > <aop:scoped-proxy/>
> > <property name="serviceNameMap">
> > <map>
> > 
> >                  .........
> > 
> > </map>
> > </property>
> > </bean>
> > 
> > <jaxws:endpoint id="SadlService" implementor="#sadlServiceProvider"
> > address="/SadlService" />
> > 
> > 
> > 
> > However, you could also do it without the AOP if you use the
> > @FactoryType(value = FactoryType.Type.Spring,
> > args="sadlServiceProvider")
> > 
> > 
> > Dan
> > 
> > On Friday, August 12, 2011 8:01:00 PM Barry Hathaway wrote:
> >> I'm trying to create a web service that will maintain states with a
> >> session. I've defined the service as:
> >> 
> >> @WebService(serviceName="SadlService",name="SadlService",
> >> targetNamespace="http://sadlserver.sadl.research.ge.com",
> >> endpointInterface="com.ge.research.sadl.sadlserver.cxf.provider.ISadlS
> >> ervice Provider") @FactoryType(value = FactoryType.Type.Session)
> >> public class SadlServiceProvider implements ISadlServiceProvider {
> >> 
> >>       private Logger logger =
> >>       LoggerFactory.getLogger(getClass());
> >>       ISadlServer server = null;
> >>       private Map<String,String[]>  serviceNameMap = null;
> >>       
> >>       @WebMethod(exclude=true)
> >>       public Map<String,String[]>  getServiceNameMap() {
> >>       
> >>           return serviceNameMap;
> >>       
> >>       }
> >>       
> >>       @WebMethod(exclude=true)
> >>       public void setServiceNameMap(Map<String,String[]> 
> >>       serviceNameMap) {>>       
> >>           this.serviceNameMap = serviceNameMap;
> >>       
> >>       }
> >>       
> >>       public SadlServiceProvider() {
> >>       
> >>           logger.debug("constructor called");
> >>           this.server = new SadlServerImpl();
> >>           server.setServiceNameMap(serviceNameMap);
> >>       
> >>       }
> >> 
> >> In my beans.xml file I have defined the bean with the serviceNameMap
> >> property:
> >> 
> >> <bean id="sadlServiceProvider"
> >> class="com.ge.research.sadl.sadlserver.cxf.provider.SadlServiceProvide
> >> r"> <property name="serviceNameMap">
> >> <map>
> >> 
> >>                  .........
> >> 
> >> </map>
> >> </property>
> >> </bean>
> >> 
> >> <jaxws:endpoint id="SadlService" implementor="#sadlServiceProvider"
> >> address="/SadlService" />
> >> 
> >> When the bean is first created (at the time the service is started)
> >> the
> >> setServiceNameMap method does
> >> get called and sets the map to the values defined in beans.xml. The
> >> problem is when I invoke another method
> >> on the service (via SoadUI) a new session gets created, the
> >> SadlServiceProvider constructor gets called, but
> >> the setServiceNameMap method does not get called.  So it appears that
> >> the a new bean is created by the
> >> factory; however, not in the same manner as initially done by Spring.
> >> 
> >> Any ideas how to do this?
> >> Thanks.
> >> 
> >> Barry Hathaway
-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog
Talend - http://www.talend.com