Hi
On 16/11/11 11:20, De Backer Frederik (DBB) wrote:
Hello,
I have installed the latest single bundle release of CXF DOSGI in Apache
Aries 0.3. I have played around a bit with it and it works ok to
remotely expose a service (see blueprint definition below). However,
when I add a transaction attribute on the bean definition (in comment
below), the service is not exposed anymore. The purpose is not to do
transaction propagation from client to service but just to start a
transaction when the service method is invoked.
<service interface="dexia.osgipoc.sedm3.service.BankService"
ref="bankServiceBean">
<service-properties>
<entry key="service.exported.interfaces" value="*" />
<entry key="service.exported.configs" value="org.apache.cxf.ws" />
<entry key="org.apache.cxf.ws.address"
value="http://localhost:9090/bankservice" />
</service-properties>
</service>
<bean id="bankServiceBean"
class="dexia.osgipoc.sedm3.service.BankServiceImpl"
activation="lazy">
<!-- tx:transaction method="*" value="Required" /-->
<property name="actorService" ref="actorServiceRef" />
<property name="accountService" ref="accountServiceRef" />
</bean>
In the console log I see (NULL for EndpointDescription):
16-nov-2011 10:41:09
org.apache.cxf.dosgi.topologymanager.TopologyManager$2 run
INFO: TopologyManager: export sucessful Endpoints:[Endpoint Desctiption
for Serv
iceReference
{dexia.osgipoc.sedm3.service.BankService}={osgi.service.blueprint.c
ompname=bankServiceBean,
org.apache.cxf.ws.address=http://localhost:9090/bankser
vice, service.exported.interfaces=*,
service.exported.configs=org.apache.cxf.ws,
service.id=107}
*** EndpointDescription: ****
---> NULL<----
*** Exception: null ****
*** isClosed : false ****
]
It is most likely a bug to do with DOSGi CXF not able to get to the
actual interface class given that Aries must be proxifying it..
CXF has utilities to deal with such cases but I'm wondering, how the
proxification is done in this case, if Spring AOP or CGLIB is used
then a fix may be applied, can you create a simple test case somehow ?
As a workaround, please try experimenting with forcing CGLIB be used
Cheers, Sergey
While in the case that it works correctly, I see:
INFO: TopologyManager: export sucessful Endpoints:[Endpoint Desctiption
for Serv
iceReference
{dexia.osgipoc.sedm3.service.BankService}={osgi.service.blueprint.c
ompname=bankServiceBean,
org.apache.cxf.ws.address=http://localhost:9090/bankser
vice, service.exported.interfaces=*,
service.exported.configs=org.apache.cxf.ws,
service.id=111}
*** EndpointDescription: ****
endpoint.framework.uuid => c39d5ef1-ca55-4141-9901-d976b0e59ed1
endpoint.id => http://localhost:9090/bankservice
endpoint.package.version.dexia.osgipoc.sedm3.service => 0.0.1.SNAPSHOT
endpoint.service.id => 111
objectClass => [Ljava.lang.String;@c67f69
org.apache.cxf.ws.address => http://localhost:9090/bankservice
osgi.service.blueprint.compname => bankServiceBean
service.imported => true
service.imported.configs => [Ljava.lang.String;@1d6e4a4
service.intents => [Ljava.lang.String;@13ceab3
*** Exception: null ****
*** isClosed : false ****
]
Thx a lot for the support,
Frederik.
-------------------------------------------------------------------------
Dexia disclaimer:
http://www.dexia.com/maildisclaimer.htm
-------------------------------------------------------------------------