Uploaded image for project: 'Aries'
  1. Aries
  2. ARIES-1140

Injected java.lang.reflect.Proxy implements only single interface

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Not A Problem
    • proxy-impl-1.0.1
    • None
    • Proxy
    • None

    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:

      <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.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              ashakirin Andrei Shakirin
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: