[ 
https://issues.apache.org/jira/browse/ARIES-1140?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Daniel Kulp updated ARIES-1140:
-------------------------------

    Description: 
Hi,

I have a problem in using Blueprint together with CXF and Karaf projects. The 
use case is quite trivial: I inject OSGi service into java class source. This 
OSGi service is exposed by declared jax-ws client.

1. Blueprint configuration exporting service:
{code:xml}
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:cxf="http://cxf.apache.org/blueprint/core";
    xmlns:jaxws="http://cxf.apache.org/blueprint/jaxws";
    xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
                        http://cxf.apache.org/blueprint/jaxws 
http://cxf.apache.org/schemas/blueprint/jaxws.xsd
                        http://cxf.apache.org/blueprint/core 
http://cxf.apache.org/schemas/blueprint/core.xsd
    ">
    <jaxws:client id="crmClient"
        xmlns:serviceNamespace="http://services.talend.org/CRMService";
        serviceClass="org.talend.services.crmservice.CRMService"
        serviceName="serviceNamespace:CRMServiceProvider"
        endpointName="serviceNamespace:CRMServicePort"
        address="http://localhost:8080/service/CRMService"/>

     <service ref="crmClient" 
interface="org.talend.services.crmservice.CRMService" />
</blueprint>
{code}
Where org.talend.services.crmservice.CRMService is generated jax-ws interface

2. Blueprint configuration importing service:
{code:xml}
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";   
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>
        <reference id="CRMServiceClient" 
interface="org.talend.services.crmservice.CRMService" />

        <bean id="TestClass"
                class="org.talend..demo.TestClass">
                <property name="crms" ref="CRMServiceClient" />
        </bean>
</blueprint>
{code}
3. Code in TestClass:

{code:java}
...
    private CRMService crms;

    public void setCrms(CRMService crms) {
        this.crms = crms;
        System.out.println(crms.getClass());
        System.out.println(crms.toString());
        System.out.println(crms instanceof BindingProvider);
    }
...
{code}
Problem:
The problem is that crms proxy, injected into TestClass, implements only 
org.talend.services.crmservice.CRMService.
The proxy calls methods of org.apache.cxf.jaxws.JaxWsClientProxy which 
implements javax.xml.ws.BindingProvider interface. I expect that crms proxy 
also implements javax.xml.ws.BindingProvider, but it is not the case. I have 
the following output from setCrms:

class com.sun.proxy.$Proxy151
org.apache.cxf.jaxws.JaxWsClientProxy@c3f8b42
false

The proxy calls toString() method of JaxWsClientProxy, but it is not instance 
of BindingProvider interface. The problem is that this proxy is not jax-ws 
compatible, because spec requires that all proxies implementing BindingProvider 
interface.

Interesting that Spring DM proxy hasn't such problem: it implements 
BindingProvider interface in this scenario.

Is it Blueprint problem? (seems to be true for me)
Is there way to fix this in Blueprint?

Regards,
Andrei.

  was:
Hi,

I have a problem in using Blueprint together with CXF and Karaf projects. The 
use case is quite trivial: I inject OSGi service into java class source. This 
OSGi service is exposed by declared jax-ws client.

1. Blueprint configuration exporting service:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:cxf="http://cxf.apache.org/blueprint/core";
    xmlns:jaxws="http://cxf.apache.org/blueprint/jaxws";
    xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
                        http://cxf.apache.org/blueprint/jaxws 
http://cxf.apache.org/schemas/blueprint/jaxws.xsd
                        http://cxf.apache.org/blueprint/core 
http://cxf.apache.org/schemas/blueprint/core.xsd
    ">
    <jaxws:client id="crmClient"
        xmlns:serviceNamespace="http://services.talend.org/CRMService";
        serviceClass="org.talend.services.crmservice.CRMService"
        serviceName="serviceNamespace:CRMServiceProvider"
        endpointName="serviceNamespace:CRMServicePort"
        address="http://localhost:8080/service/CRMService"/>

     <service ref="crmClient" 
interface="org.talend.services.crmservice.CRMService" />
</blueprint>

Where org.talend.services.crmservice.CRMService is generated jax-ws interface

2. Blueprint configuration importing service:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";   
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>
        <reference id="CRMServiceClient" 
interface="org.talend.services.crmservice.CRMService" />

        <bean id="TestClass"
                class="org.talend..demo.TestClass">
                <property name="crms" ref="CRMServiceClient" />
        </bean>
</blueprint>

3. Code in TestClass:
...
    private CRMService crms;

    public void setCrms(CRMService crms) {
        this.crms = crms;
        System.out.println(crms.getClass());
        System.out.println(crms.toString());
        System.out.println(crms instanceof BindingProvider);
    }
...
Problem:
The problem is that crms proxy, injected into TestClass, implements only 
org.talend.services.crmservice.CRMService.
The proxy calls methods of org.apache.cxf.jaxws.JaxWsClientProxy which 
implements javax.xml.ws.BindingProvider interface. I expect that crms proxy 
also implements javax.xml.ws.BindingProvider, but it is not the case. I have 
the following output from setCrms:

class com.sun.proxy.$Proxy151
org.apache.cxf.jaxws.JaxWsClientProxy@c3f8b42
false

The proxy calls toString() method of JaxWsClientProxy, but it is not instance 
of BindingProvider interface. The problem is that this proxy is not jax-ws 
compatible, because spec requires that all proxies implementing BindingProvider 
interface.

Interesting that Spring DM proxy hasn't such problem: it implements 
BindingProvider interface in this scenario.

Is it Blueprint problem? (seems to be true for me)
Is there way to fix this in Blueprint?

Regards,
Andrei.


> Injected java.lang.reflect.Proxy implements only single interface
> -----------------------------------------------------------------
>
>                 Key: ARIES-1140
>                 URL: https://issues.apache.org/jira/browse/ARIES-1140
>             Project: Aries
>          Issue Type: Improvement
>          Components: Proxy
>    Affects Versions: proxy-impl-1.0.1
>            Reporter: Andrei Shakirin
>
> Hi,
> I have a problem in using Blueprint together with CXF and Karaf projects. The 
> use case is quite trivial: I inject OSGi service into java class source. This 
> OSGi service is exposed by declared jax-ws client.
> 1. Blueprint configuration exporting service:
> {code:xml}
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
>     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
> xmlns:cxf="http://cxf.apache.org/blueprint/core";
>     xmlns:jaxws="http://cxf.apache.org/blueprint/jaxws";
>     xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 
> http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
>                         http://cxf.apache.org/blueprint/jaxws 
> http://cxf.apache.org/schemas/blueprint/jaxws.xsd
>                         http://cxf.apache.org/blueprint/core 
> http://cxf.apache.org/schemas/blueprint/core.xsd
>     ">
>     <jaxws:client id="crmClient"
>         xmlns:serviceNamespace="http://services.talend.org/CRMService";
>         serviceClass="org.talend.services.crmservice.CRMService"
>         serviceName="serviceNamespace:CRMServiceProvider"
>         endpointName="serviceNamespace:CRMServicePort"
>         address="http://localhost:8080/service/CRMService"/>
>      <service ref="crmClient" 
> interface="org.talend.services.crmservice.CRMService" />
> </blueprint>
> {code}
> Where org.talend.services.crmservice.CRMService is generated jax-ws interface
> 2. Blueprint configuration importing service:
> {code:xml}
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";   
> xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 
> http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>
>       <reference id="CRMServiceClient" 
> interface="org.talend.services.crmservice.CRMService" />
>       <bean id="TestClass"
>               class="org.talend..demo.TestClass">
>               <property name="crms" ref="CRMServiceClient" />
>       </bean>
> </blueprint>
> {code}
> 3. Code in TestClass:
> {code:java}
> ...
>     private CRMService crms;
>     public void setCrms(CRMService crms) {
>         this.crms = crms;
>         System.out.println(crms.getClass());
>         System.out.println(crms.toString());
>         System.out.println(crms instanceof BindingProvider);
>     }
> ...
> {code}
> Problem:
> The problem is that crms proxy, injected into TestClass, implements only 
> org.talend.services.crmservice.CRMService.
> The proxy calls methods of org.apache.cxf.jaxws.JaxWsClientProxy which 
> implements javax.xml.ws.BindingProvider interface. I expect that crms proxy 
> also implements javax.xml.ws.BindingProvider, but it is not the case. I have 
> the following output from setCrms:
> class com.sun.proxy.$Proxy151
> org.apache.cxf.jaxws.JaxWsClientProxy@c3f8b42
> false
> The proxy calls toString() method of JaxWsClientProxy, but it is not instance 
> of BindingProvider interface. The problem is that this proxy is not jax-ws 
> compatible, because spec requires that all proxies implementing 
> BindingProvider interface.
> Interesting that Spring DM proxy hasn't such problem: it implements 
> BindingProvider interface in this scenario.
> Is it Blueprint problem? (seems to be true for me)
> Is there way to fix this in Blueprint?
> Regards,
> Andrei.



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)

Reply via email to