My purpose is to create a EJB proxy (as we can do using JSR181 component) using 
CXF-SE.

As I need to define the @WebService annotation in the POJO bean used by cxf-se 
component, I can't do it directly
using the SimpleRemoteStatelessSessionProxyFactoryBean provided by Spring (I 
can't change the implementation of this bean).

So I need to create a FrontendBean and define the call like this in the 
xbean.xml :

  <bean id="ejbProxy" 
class="org.springframework.ejb.access.SimpleRemoteStatelessSessionProxyFactoryBean">
    [...]
 </bean>

  <cxfse:pojo>
    <bean class="my.package.FrontendBean">
       <property name="proxy" ref="ejbProxy"/>
    </bean>
  </cxfse:pojo>

The FrontendBean will define the same methods as the EJB, and the 
implementation of each methods will call the EJB side using the Spring proxy.

Is CXF will be able to generate the WDSL dynamically using the POJO (and the 
POJO methods) or should I create my own one manually ?
Is this solution correct ?

Maybe it can be interesting to create a documentation how to define a EJB proxy 
using CXF-SE (I can write one if you want when my test case will be completed 
:)).

Regards

 On Mon 22/09/08 09:17, "Freeman Fang" [EMAIL PROTECTED] wrote:
> Jean-Baptiste Onofré wrote:
> > Hi all,
> >
> > I have setup an SU like this (in the xbean.xml)
> :
>
> > <beans xmlns:cxfse="http://servicemix.apache.org/cxfse/1.0";
>>        xmlns:fsb="http://www.fimasys.com/fsb";>
>>
> >    <bean
> class="org.springframework.beans.factory.config.PropertyPlaceholderConfigur
> er">
>       <property name="locations">
> >         
> <value>classpath:/automatic-validation-service-config.properties</
> value>
>       </property>
> >    </bean>
> >
> >    <bean id="jndiTemplate"
> class="org.springframework.jndi.JndiTemplate">
>       <property
> name="environment">
>          <props>
> >             <prop
> key="java.naming.factory.initial">
>                ${bos.jndiContextFactory}
> >             </prop>
> >             <prop
> key="java.naming.provider.url">
>                ${bos.jndiUrlProvider}
> >             </prop>
> >          </props>
> >       </property>
> >    </bean>
> >
> >    <cxfse:endpoint
> service="automatic-validation-service-proxy">
>       <cxfse:pojo>
> >          <bean
> class="org.springframework.ejb.access.SimpleRemoteStatelessSessionProxyFact
> oryBean">
>             <property name="jndiName"
> value="ejb/profinance/back-office/AutomaticSimulationSession"/>
>             <property name="businessInterface"
> value="com.fimasys.finance.profinance.components.simulation.common.ejb.Auto
> maticSimulationSession"/>
>             <property name="homeInterface"
> value="com.fimasys.finance.profinance.components.simulation.common.ejb.Auto
> maticSimulationSessionHome"/>
>             <property
> name="refreshHomeOnConnectFailure" value="true"/>
>             <property name="cacheHome"
> value="true"/>
>             <property name="lookupHomeOnStartup"
> value="true"/>
>             <property name="resourceRef"
> value="false"/>
>             <property name="jndiTemplate"
> ref="jndiTemplate"/>
>          </bean>
> >       </cxfse:pojo>
> >    </cxfse:endpoint>
> >
> > </beans>
> >
> > In the SU POM dependencies, I have added all
> required jar (the jbossall-client providing the JNDI context, the Spring
> context to have the SimpleRemoteStatelessSessionProxyFactoryBean and my
> application client to have the stub, home and remote
> interface).
>
> > When I deploy the SA which embed this SU, I have
> this stack trace :
>
> >                                        
> <stack-trace><![CDATA[java.lang.NullPointerException
>         at
> org.apache.cxf.jaxws.support.JaxWsImplementorInfo.getWSInterfaceName(JaxWsI
> mplementorInfo.java:235)
>         at
> org.apache.cxf.jaxws.support.JaxWsImplementorInfo.initialise(JaxWsImplement
> orInfo.java:274)
>         at
> org.apache.cxf.jaxws.support.JaxWsImplementorInfo.<init>(JaxWsImpleme
> ntorInfo.java:57)
>         at
> org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:269)
>         at
> org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:261)
>         at
> org.apache.servicemix.cxfse.CxfSeEndpoint.start(CxfSeEndpoint.java:243)
>         at
> org.apache.servicemix.common.endpoints.SimpleEndpoint.activate(SimpleEndpoi
> nt.java:55)
>         at
> org.apache.servicemix.common.ServiceUnit.start(ServiceUnit.java:53)
> >         at
> org.apache.servicemix.common.BaseServiceUnitManager.start(BaseServiceUnitMa
> nager.java:151)
>         at
> org.apache.servicemix.jbi.framework.ServiceUnitLifeCycle.start(ServiceUnitL
> ifeCycle.java:103)
>         at
> org.apache.servicemix.jbi.framework.ServiceAssemblyLifeCycle.start(ServiceA
> ssemblyLifeCycle.java:132)
>         at
> org.apache.servicemix.jbi.framework.DeploymentService.start(DeploymentServi
> ce.java:378)
>         at
> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateServiceAsse
> mbly(AutoDeploymentService.java:355)
>         at
> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(Aut
> oDeploymentService.java:256)
>         at
> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateExternalArc
> hive(AutoDeploymentService.java:204)
>         at
> org.apache.servicemix.jbi.container.JBIContainer.updateExternalArchive(JBIC
> ontainer.java:476)
>         at
> org.apache.servicemix.jbi.container.JBIContainer.updateExternalArchive(JBIC
> ontainer.java:486)
>         at
> org.apache.servicemix.jbi.framework.AdminCommandsService.deployServiceAssem
> bly(AdminCommandsService.java:209)
>        [...]
> >
> > Asking on the IRC, the WSDL descriptor is not
> required.
>
> > Should I provide a kind of ServiceImpl defining
> @WebService annotation ?
>
> >   
> Yes, you need define @WebService annotation for your Impl class
> > Thanks
> > Regards
> >   
> 
> 
> 
> 

Reply via email to