Jean-Baptiste Onofré wrote:
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.SimpleRemoteStatelessSessionProxyFact
oryBean">
[...]
</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 ?
Cxf will generate the wsdl on the fly
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 :)).
Looking forward to the document
Regards
On Mon 22/09/08 09:17, "Freeman Fang" freema
[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