[
https://issues.apache.org/activemq/browse/SMXCOMP-688?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=61396#action_61396
]
Andrzej Kulakowski commented on SMXCOMP-688:
--------------------------------------------
Hello Freeman,
thanks for Your swift reply and here are the details I am testing with:
1) apache-servicemix-4.2.0-fuse-01-00
2) servicemix-cxf-bc (2010.01.0.fuse-01-00)
3) spring config:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
xmlns:test="http://vf.balticamadeus.lt/employee/1.0/"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://servicemix.apache.org/cxfbc/1.0
http://servicemix.apache.org/schema/servicemix-cxf-bc-2009.01.xsd">
<cxfbc:provider wsdl="classpath:META-INF/EmployeeData.wsdl"
locationURI="http://localhost:8084/root"
service="test:EmployeeDataServiceImplService"
endpoint="EmployeeDataServiceImplPort"
interfaceName="test:EmpProvider"
busCfg="classpath:META-INF/spring/auth.xml">
</cxfbc:provider>
<cxfbc:consumer wsdl="classpath:META-INF/EmployeeData.wsdl"
endpoint="test:EmployeeDataServiceImplPort2"
service="test:EmployeeDataServiceImplService"
targetService="test:EmployeeDataServiceImplService"
targetEndpoint="EmployeeDataServiceImplPort"
targetInterface="test:EmpProvider"
mtomEnabled="true" />
<bean class="org.apache.servicemix.common.osgi.EndpointExporter" />
</beans>
4) my auth.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sec="http://cxf.apache.org/configuration/security"
xmlns:http="http://cxf.apache.org/transports/http/configuration"
xsi:schemaLocation="
http://cxf.apache.org/configuration/security
http://cxf.apache.org/schemas/configuration/security.xsd
http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<http:conduit
name="{http://my_namespace_here/employee/1.0/}EmployeeDataServiceImplPort.http-conduit">
<http:authorization>
<sec:UserName>my_username_here</sec:UserName>
<sec:Password>my_password_here</sec:Password>
</http:authorization>
</http:conduit>
</beans>
5) exception:
javax.jbi.management.DeploymentException: java.lang.RuntimeException:
org.springframework.context.ApplicationContextException: Failed to load
configuration classpath:META-INF/sprin
g/auth.xml
at
org.apache.servicemix.cxfbc.CxfBcProvider.validate(CxfBcProvider.java:521)
at
org.apache.servicemix.common.osgi.EndpointTracker$OsgiServiceUnit.<init>(EndpointTracker.java:77)
at
org.apache.servicemix.common.osgi.EndpointTracker.register(EndpointTracker.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.springframework.osgi.util.internal.ReflectionUtils.invokeMethod(ReflectionUtils.java:108)
at
org.springframework.osgi.config.internal.adapter.CustomListenerAdapterUtils.invokeCustomMethods(CustomListenerAdapterUtils.java:155)
at
org.springframework.osgi.config.internal.adapter.OsgiServiceLifecycleListenerAdapter.bind(OsgiServiceLifecycleListenerAdapter.java:201)
at
org.springframework.osgi.service.importer.support.internal.util.OsgiServiceBindingUtils.callListenersBind(OsgiServiceBindingUtils.java:50)
at
org.springframework.osgi.service.importer.support.internal.collection.OsgiServiceCollection$Listener.serviceChanged(OsgiServiceCollection.java:107)
at
org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933)
at
org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
at
org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:755)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:710)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:129)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:206)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:507)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:525)
at
org.apache.servicemix.common.osgi.EndpointExporter.deploy(EndpointExporter.java:121)
at
org.apache.servicemix.common.osgi.EndpointExporter.afterPropertiesSet(EndpointExporter.java:174)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationContext.java:69)
at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:355)
at
org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:320)
at
org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExec
utor.java:136)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.RuntimeException:
org.springframework.context.ApplicationContextException: Failed to load
configuration classpath:META-INF/spring/auth.xml
at
org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:96)
at
org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:88)
at
org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:64)
at
org.apache.servicemix.cxfbc.CxfBcProvider.getBus(CxfBcProvider.java:612)
at
org.apache.servicemix.cxfbc.CxfBcProvider.validate(CxfBcProvider.java:413)
... 42 more
Caused by: org.springframework.context.ApplicationContextException: Failed to
load configuration classpath:META-INF/spring/auth.xml
at
org.apache.cxf.bus.spring.BusApplicationContext.getConfigResources(BusApplicationContext.java:152)
at
org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:107)
at
org.apache.cxf.bus.spring.BusApplicationContext.loadBeanDefinitions(BusApplicationContext.java:262)
at
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:123)
at
org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:422)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at
org.apache.cxf.bus.spring.BusApplicationContext.<init>(BusApplicationContext.java:91)
at
org.apache.cxf.bus.spring.SpringBusFactory.createApplicationContext(SpringBusFactory.java:110)
at
org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:93)
... 46 more
While I am awaiting at Your reply I am going to take a deeper look at this
piece code changes in Your latest commit:
-
busCfg="org/apache/servicemix/cxfbc/ws/security/provider/CherryServer.xml"
>
+ <cxfbc:providedBus>
+ <ref bean="cxf"/>
+ </cxfbc:providedBus>
I hope that I am missing something here and the answer is all here nearby.
> servicemix-cxf-bc endpoint cannot load busCfg file when packaged as an OSGi
> bundle
> ----------------------------------------------------------------------------------
>
> Key: SMXCOMP-688
> URL: https://issues.apache.org/activemq/browse/SMXCOMP-688
> Project: ServiceMix Components
> Issue Type: Bug
> Components: servicemix-cxf-bc
> Affects Versions: servicemix-cxf-bc-2009.02
> Environment: apache-servicemix-4.1.0-SNAPSHOT build 164
> OSX
> java version "1.6.0_17"
> Java(TM) SE Runtime Environment (build 1.6.0_17-b04-248-10M3025)
> Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01-101, mixed mode)
> Reporter: Paul Mietz Egli
> Assignee: Freeman Fang
> Fix For: servicemix-cxf-bc-2010.01
>
> Attachments: smx4-bus-config.tar.gz, smx4-provided-bus.diff
>
>
> I've been attempting to set up CXF to use digest authentication by specifying
> a value for the busCfg attribute of a cxfbc:provider endpoint. When I use a
> relative file path like the example code, I get a "Failed to load
> configuration com/example/cxf/bus.xml", which I more or less would expect.
> Using a "classpath:" prefix for the attribute value, I this
> IllegalArgumentException:
> Caused by: java.lang.IllegalArgumentException: name
> at sun.misc.URLClassPath$Loader.findResource(URLClassPath.java:458)
> at sun.misc.URLClassPath.findResource(URLClassPath.java:145)
> at java.net.URLClassLoader$2.run(URLClassLoader.java:362)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findResource(URLClassLoader.java:359)
> at java.lang.ClassLoader.getResource(ClassLoader.java:1040)
> at
> org.springframework.osgi.context.internal.classloader.ChainedClassLoader.doGetResource(ChainedClassLoader.java:128)
> at
> org.springframework.osgi.context.internal.classloader.ChainedClassLoader.getResource(ChainedClassLoader.java:110)
> at
> org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:160)
> at
> org.springframework.core.io.ClassPathResource.getFile(ClassPathResource.java:175)
> at
> org.springframework.core.io.AbstractResource.exists(AbstractResource.java:51)
> at
> org.apache.cxf.bus.spring.BusApplicationContext.findResource(BusApplicationContext.java:196)
> at
> org.apache.cxf.bus.spring.BusApplicationContext.getConfigResources(BusApplicationContext.java:144)
> at
> org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:107)
> at
> org.apache.cxf.bus.spring.BusApplicationContext.loadBeanDefinitions(BusApplicationContext.java:262)
> at
> org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:123)
> at
> org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:422)
> at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
> at
> org.apache.cxf.bus.spring.BusApplicationContext.<init>(BusApplicationContext.java:91)
> at
> org.apache.cxf.bus.spring.SpringBusFactory.createApplicationContext(SpringBusFactory.java:102)
> at
> org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:93)
> at
> org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:88)
> at
> org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:64)
> at
> org.apache.servicemix.cxfbc.CxfBcProvider.getBus(CxfBcProvider.java:601)
> at
> org.apache.servicemix.cxfbc.CxfBcProvider.validate(CxfBcProvider.java:422)
> ... 41 more
> Using a debugger, I can see that the ChainedClassLoader contains the
> following objects:
> [BundleDelegatingClassLoader for [ServiceMix :: CXF Binding Component
> (servicemix-cxf-bc)], 37.0, 40.0, 42.0, 69.0]
> where 37 is spring-aop, 40 is cglib, 42 is spring-osgi-core, and 69 is
> servicemix-common. There is no bundle classloader for my bundle, so even
> though I've exported com/example/cxf, I wouldn't expect the
> ChainedClassLoader to find it.
> It seems to me that we have a chicken-and-egg problem: we need the bus to
> validate the component, yet we can't load the bus configuration from our
> bundle when the component is being validated. I thought about attaching a
> fragment bundle to the CXF binding component, but I'm not sure if that would
> work and it seems like a lot of trouble.
> One way around the issue would be to create a means of setting the bus object
> using Spring, like Camel's CXF component. I'm attaching a patch for
> consideration which adds a setBus() method to CxfBcProvider and modifies
> getBus() to return the object from setBus() if any. With these changes, I'm
> able to configure my CXF bus for Digest auth and provide it to the endpoint.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.