Re: Camel on Karaf looking to resolve http://camel.apache.org/schema/spring/v${camel.schema.version}
Bug number for the discussed problem with camel-spring 2.18.x installed artefacts is https://issues.apache.org/jira/browse/CAMEL-11009 if anyone wants to follow it. On Mon, Mar 13, 2017 at 10:25 PM, Niels Bertram <niels...@gmail.com> wrote: > Makes sense what you are saying. I just installed camel 2.18.2 components > and by the looks of it, it is a packaging failure in camel-spring. > > 1. install camel feature on Karaf 4.0.8 (also tested 4.1.0): > > feature:repo-add camel 2.18.2 > feature:install camel > > 2. install some route that uses blueprint and camel blueprint schema > > Looking at http://search.maven.org/remotecontent?filepath=org/ > apache/camel/camel-spring/2.18.2/camel-spring-2.18.2.jar > > I can see that file /META-INF/spring.schemas shows following: > > # > # Licensed to the Apache Software Foundation (ASF) under one or more > # contributor license agreements. See the NOTICE file distributed with > ... > http\://camel.apache.org/schema/spring=camel-spring.xsd > http\://camel.apache.org/schema/spring/v${camel.schema. > version}=camel-spring-v${camel.schema.version}.xsd > <http://camel.apache.org/schema/spring/v$%7Bcamel.schema.version%7D=camel-spring-v$%7Bcamel.schema.version%7D.xsd> > > Its actually broken in all 2.18.x releases but ok in 2.17.x and 2.16.x > > I'll file a bug with Camel. Thanks for your thoughts. > > > On Mon, Mar 13, 2017 at 7:43 PM, Guillaume Nodet <gno...@apache.org> > wrote: > >> IIRC, camel blueprint translated the xml in the camel-spring namespace to >> be able to leverage jaxb, but clearly a property should have been replaced >> by the actual camel version. >> Can you explain exactly which bundles / features you installed (with >> versions) and the blueprint xml you use ? >> >> 2017-03-12 14:14 GMT+01:00 Niels Bertram <niels...@gmail.com>: >> >>> Hi there, >>> >>> I am trying to implement a very basic CXF / Camel REST service. And >>> despite best efforts I am getting below stacktrace when installing by >>> bundle. >>> >>> Disturbing part is, I did not ask for spring, I want a plain blueprint >>> instance. >>> >>> Anyone has seen this before? >>> >>> >>> 2017-03-12 23:00:39,527 | WARN | pool-32-thread-2 | >>> NamespaceHandlerRegistryImpl | 12 - org.apache.aries.blueprint.core >>> - 1.7.1 | Error registering NamespaceHandler >>> java.lang.IllegalArgumentException: Illegal character in path at index >>> 40: http://camel.apache.org/schema/spring/v${camel.schema.version} >>> at java.net.URI.create(URI.java:852) [?:?] >>> at org.apache.aries.blueprint.namespace.NamespaceHandlerRegistr >>> yImpl.getNamespaces(NamespaceHandlerRegistryImpl.java:203) >>> [12:org.apache.aries.blueprint.core:1.7.1] >>> at org.apache.aries.blueprint.namespace.NamespaceHandlerRegistr >>> yImpl.registerHandler(NamespaceHandlerRegistryImpl.java:157) >>> [12:org.apache.aries.blueprint.core:1.7.1] >>> at org.apache.aries.blueprint.namespace.NamespaceHandlerRegistr >>> yImpl.addingService(NamespaceHandlerRegistryImpl.java:121) >>> [12:org.apache.aries.blueprint.core:1.7.1] >>> at >>> org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:941) >>> [?:?] >>> at >>> org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:870) >>> [?:?] >>> at >>> org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) >>> [?:?] >>> at >>> org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) >>> [?:?] >>> at >>> org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:901) >>> [?:?] >>> at org.apache.felix.framework.EventDispatcher.invokeServiceList >>> enerCallback(EventDispatcher.java:990) [?:?] >>> at >>> org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:838) >>> [?:?] >>> at >>> org.apache.felix.framework.EventDispatcher.fireServiceEvent(EventDispatcher.java:545) >>> [?:?] >>> at >>> org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4557) >>> [?:?] >>> at org.apache.felix.framework.Felix.registerService(Felix.java:3549) >>> [?:?] >>> at >>> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:348) >>> [?:?] >>>
JacksonJsonProvider not working with CXF Blueprint
Hi there, I tried to configure a simple CXF JAXRS service and use Jackson as the JSON provider. I did follow the CXF user documentation to configure the Jackson provider but it is ignored and default jettison does the work. I use the exact configuration without any issues in a plain Spring context (slightly adapted for different xml names obviously). Adding the skip.default.json.provider.registration=true property to the does seem to do little difference. I created a quick start demo of the issue: https://github.com/bertramn/cxf-jackson-osgi-blueprint-issue I also noticed that when I create and configure a and try to reference this on the the blueprint will fail with a can't resolve id error. Did anyone came across those issues? Cheers, Niels
Re: Camel on Karaf looking to resolve http://camel.apache.org/schema/spring/v${camel.schema.version}
Makes sense what you are saying. I just installed camel 2.18.2 components and by the looks of it, it is a packaging failure in camel-spring. 1. install camel feature on Karaf 4.0.8 (also tested 4.1.0): feature:repo-add camel 2.18.2 feature:install camel 2. install some route that uses blueprint and camel blueprint schema Looking at http://search.maven.org/remotecontent?filepath=org/apache/camel/camel-spring/2.18.2/camel-spring-2.18.2.jar I can see that file /META-INF/spring.schemas shows following: # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with ... http\://camel.apache.org/schema/spring=camel-spring.xsd http\:// camel.apache.org/schema/spring/v${camel.schema.version}=camel-spring-v${camel.schema.version}.xsd Its actually broken in all 2.18.x releases but ok in 2.17.x and 2.16.x I'll file a bug with Camel. Thanks for your thoughts. On Mon, Mar 13, 2017 at 7:43 PM, Guillaume Nodet <gno...@apache.org> wrote: > IIRC, camel blueprint translated the xml in the camel-spring namespace to > be able to leverage jaxb, but clearly a property should have been replaced > by the actual camel version. > Can you explain exactly which bundles / features you installed (with > versions) and the blueprint xml you use ? > > 2017-03-12 14:14 GMT+01:00 Niels Bertram <niels...@gmail.com>: > >> Hi there, >> >> I am trying to implement a very basic CXF / Camel REST service. And >> despite best efforts I am getting below stacktrace when installing by >> bundle. >> >> Disturbing part is, I did not ask for spring, I want a plain blueprint >> instance. >> >> Anyone has seen this before? >> >> >> 2017-03-12 23:00:39,527 | WARN | pool-32-thread-2 | >> NamespaceHandlerRegistryImpl | 12 - org.apache.aries.blueprint.core >> - 1.7.1 | Error registering NamespaceHandler >> java.lang.IllegalArgumentException: Illegal character in path at index >> 40: http://camel.apache.org/schema/spring/v${camel.schema.version} >> at java.net.URI.create(URI.java:852) [?:?] >> at org.apache.aries.blueprint.namespace.NamespaceHandlerRegistr >> yImpl.getNamespaces(NamespaceHandlerRegistryImpl.java:203) >> [12:org.apache.aries.blueprint.core:1.7.1] >> at org.apache.aries.blueprint.namespace.NamespaceHandlerRegistr >> yImpl.registerHandler(NamespaceHandlerRegistryImpl.java:157) >> [12:org.apache.aries.blueprint.core:1.7.1] >> at org.apache.aries.blueprint.namespace.NamespaceHandlerRegistr >> yImpl.addingService(NamespaceHandlerRegistryImpl.java:121) >> [12:org.apache.aries.blueprint.core:1.7.1] >> at >> org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:941) >> [?:?] >> at >> org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:870) >> [?:?] >> at >> org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) >> [?:?] >> at >> org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) >> [?:?] >> at >> org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:901) >> [?:?] >> at org.apache.felix.framework.EventDispatcher.invokeServiceList >> enerCallback(EventDispatcher.java:990) [?:?] >> at >> org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:838) >> [?:?] >> at >> org.apache.felix.framework.EventDispatcher.fireServiceEvent(EventDispatcher.java:545) >> [?:?] >> at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4557) >> [?:?] >> at org.apache.felix.framework.Felix.registerService(Felix.java:3549) >> [?:?] >> at >> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:348) >> [?:?] >> at >> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:355) >> [?:?] >> at >> org.apache.aries.blueprint.spring.SpringExtension.start(SpringExtension.java:78) >> [202:org.apache.aries.blueprint.spring:0.2.0] >> at >> org.apache.felix.utils.extender.AbstractExtender$1.run(AbstractExtender.java:265) >> [202:org.apache.aries.blueprint.spring:0.2.0] >> at >> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) >> [?:?] >> at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?] >> at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFu >> tureTask.access$201(ScheduledThreadPoolExecu
Camel on Karaf looking to resolve http://camel.apache.org/schema/spring/v${camel.schema.version}
Hi there, I am trying to implement a very basic CXF / Camel REST service. And despite best efforts I am getting below stacktrace when installing by bundle. Disturbing part is, I did not ask for spring, I want a plain blueprint instance. Anyone has seen this before? 2017-03-12 23:00:39,527 | WARN | pool-32-thread-2 | NamespaceHandlerRegistryImpl | 12 - org.apache.aries.blueprint.core - 1.7.1 | Error registering NamespaceHandler java.lang.IllegalArgumentException: Illegal character in path at index 40: http://camel.apache.org/schema/spring/v${camel.schema.version} at java.net.URI.create(URI.java:852) [?:?] at org.apache.aries.blueprint.namespace.NamespaceHandlerRegistryImpl.getNamespaces(NamespaceHandlerRegistryImpl.java:203) [12:org.apache.aries.blueprint.core:1.7.1] at org.apache.aries.blueprint.namespace.NamespaceHandlerRegistryImpl.registerHandler(NamespaceHandlerRegistryImpl.java:157) [12:org.apache.aries.blueprint.core:1.7.1] at org.apache.aries.blueprint.namespace.NamespaceHandlerRegistryImpl.addingService(NamespaceHandlerRegistryImpl.java:121) [12:org.apache.aries.blueprint.core:1.7.1] at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:941) [?:?] at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:870) [?:?] at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) [?:?] at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) [?:?] at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:901) [?:?] at org.apache.felix.framework.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:990) [?:?] at org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:838) [?:?] at org.apache.felix.framework.EventDispatcher.fireServiceEvent(EventDispatcher.java:545) [?:?] at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4557) [?:?] at org.apache.felix.framework.Felix.registerService(Felix.java:3549) [?:?] at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:348) [?:?] at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:355) [?:?] at org.apache.aries.blueprint.spring.SpringExtension.start(SpringExtension.java:78) [202:org.apache.aries.blueprint.spring:0.2.0] at org.apache.felix.utils.extender.AbstractExtender$1.run(AbstractExtender.java:265) [202:org.apache.aries.blueprint.spring:0.2.0] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:?] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:?] at java.lang.Thread.run(Thread.java:745) [?:?] Caused by: java.net.URISyntaxException: Illegal character in path at index 40: http://camel.apache.org/schema/spring/v${camel.schema.version} at java.net.URI$Parser.fail(URI.java:2848) ~[?:?] at java.net.URI$Parser.checkChars(URI.java:3021) ~[?:?] at java.net.URI$Parser.parseHierarchical(URI.java:3105) ~[?:?] at java.net.URI$Parser.parse(URI.java:3053) ~[?:?] at java.net.URI.(URI.java:588) ~[?:?] at java.net.URI.create(URI.java:850) ~[?:?] ... 24 more
Re: Karaf and Docker
Maybe drawing a timeline of a typical application lifecycle and outlining the challenges at the various stages should paint a pretty good picture. This could then be overlaid with the technology features that support each of those concerns. We'd get to a view that would show the areas where docker provides benefits and where OSGi plays its strengths. End of the day OSGi covers the lifecycle of interdependent application components and docker is more or less a means to speed up deployment of a configured compute resource. Nothing wrong with docker but using it purposeful seems a bit of a challenge to a lot of folks out there. Cheers, Niels
Re: Karaf and Docker
Could not agree more Achim. Good fad indicators are high promises which are designed to target the ultimate need of decision makers to deliver software quicker and cheaper. Just rewind 10 years and we will find the exact same promises were made at the start of the SOA hype which are now touted by the microservices believers. At the end of the day nothing will prevent people from doing something really badly. I can see the value of docker but unless one really has all the lifecycle ducks in a row I would not go down the path and containerise the all and sundry. Cheers, Niels On 12 Apr 2015, at 08:28, Ryan Moquin fragility...@gmail.com wrote: I used to work somewhere with other developers who always became very spiritual about whatever the latest cool developer technology or methodology is. Microservices was one of them. It always made me laugh when I was told how super efficient and streamlined it was over any other solution because every fat jar deployed (Maven shade plugin abuse in order to be lazy) was between 500Mb and 1.7Gb. So much for being a micro-service. On Apr 8, 2015 2:55 PM, Achim Nierbeck bcanh...@googlemail.com wrote: I'm very ambivalent regarding this topic. On one hand I see a lot of move to Docker as heading for the holy grail on fixing all the issues we had in the past. #FAIL On the other hand I see some benefits of it, but still haven't found the concrete use-case where it did top a bar-metal or bare virtualized machine. It's absolutely true that it does have some benefits for easier deployment of Infrastructure but I also see a lot of failures in usage of Docker. Just to mention one, where did the init daemon go, it's been there for a reason in linux OS's and now we run applications on top of the system without it ... I don't feel comfortable with that, especially if you don't have a JVM as process running which starts spawning other processes (one might remember the zombie processes). In the end there are mostly more slopy/lazy people around[1] trying to get something going, that's why Docker will be sufficient enough, while the dynamic and re-configurable service oriented software architecture will be on the decrease. One just needs to follow that Microservice hype. Docker/SpringBoot are just part of this mantra :D In the end people will just split their Monolithic rubbish up to different small Monolithic piles of rubbish, but in case one of them is failing, they'll end up with one big failing pile of rubbish. Besides this rant, I think building a custom Karaf with your application on top, distributable as Docker image. Or as I did for a showcase building a base Karaf Docker Image for Continuous Integration/Delivery Pipeline is a good combination. As long as it's possible to configure the services inside this docker image from the outside. regards, Achim [1] - http://blog.osgi.org/2014/08/is-docker-eating-javas-lunch.html 2015-04-08 17:34 GMT+02:00 Frank Lyaruu fr...@dexels.com: I agree, I do feel that vibe from time to time, mostly due to the 'containers should be immutable' mantra. In my opinion, if you can get away with it, make it as dynamic as you want, but I guess we all know that building an application that can be reconfigured + updated on the fly is not easy at all. Anyway, while we're at it, I also wrote a few posts about OSGi + Docker, with quite a different approach: I explore monitoring the Docker API to discover services, and inject those services as OSGi configuration data: http://www.codemonkey.nl/discovery/ I think OSGi and Docker can complement each other very nicely. regards, Frank On Wed, Apr 8, 2015 at 4:54 PM, Ryan Moquin fragility...@gmail.com wrote: Don't get me wrong, I don't mean that Docker and Karaf are interchangeable. I mean that it feels like, from quite a few things I read, that the trend may be to have a docker image built as part of every CI build. The purpose being that deployments should be fully immutable and if changes need to be made, then a new Docker image should be generated and deployed. One particular conversation that I felt really expressed this type of development track is this one: https://groups.google.com/forum/m/#!topic/fabric8/iEmyW0_rnSk Fabric8 used to be fully built on Karaf but has changed the approach to support other runtimes. Nothing is wrong with that, but if that pattern becomes a trend, then it feels that many of the nice features of Karaf will become discouraged and I can't see them being furthered in Karaf at that point. I love Karaf and everything it offers. I'm just a little concerned about how Docker is being pushed and the mindset that seems to evolving around it. The point is, I'm hoping that because Docker is immutable, that it doesn't cause all software development to shoot to be immutable. Hopefully that makes sense. :) Lots of new technologies
Re: Retrieve reference of JMS ConnectionFactory
Hey Krzysztof, I forgot to mention versions: - Karaf 2.3.6 - ActiveMQ 5.9.0 - Camel 2.13.2 I also installed the JMS bundle and was able to list the connection factory: karaf@fluxjms:connectionfactories JMS Connection Factory localhost I'm also able to list the queues from AMQ without ClassNotFoundException you first received. karaf@fluxjms:queues localhost JMS Queues ID_550952684d6163871467_f934b9e9-fd31-470b-a924-1a7c306f6b22 tracing elasticsearch_log ID_550952684d6163871467_9701e4b3-37ef-4934-8882-deddb2d033fa invoicing The only thing I try to do in the second bundle is to capture a reference to the exported ConnectionFactory like I mentioned earlier: reference id=jmsConnectionFactory interface=javax.jms.ConnectionFactory/ The blueprint file are deployed by the dropping them in de deploy directory for hot deploys. -- View this message in context: http://karaf.922171.n3.nabble.com/Retrieve-reference-of-JMS-ConnectionFactory-tp4039259p4039286.html Sent from the Karaf - User mailing list archive at Nabble.com.
Retrieve reference of JMS ConnectionFactory
$AbstractTracked.track(BundleHookBundleTracker.java:725)[10:org.apache.aries.util:1.1.0] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)[10:org.apache.aries.util:1.1.0] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)[10:org.apache.aries.util:1.1.0] at org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1103)[org.apache.felix.framework-4.0.3.jar:] at org.apache.felix.framework.util.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:695)[org.apache.felix.framework-4.0.3.jar:] at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:483)[org.apache.felix.framework-4.0.3.jar:] at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4244)[org.apache.felix.framework-4.0.3.jar:] at org.apache.felix.framework.Felix.startBundle(Felix.java:1923)[org.apache.felix.framework-4.0.3.jar:] at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:944)[org.apache.felix.framework-4.0.3.jar:] at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1245)[6:org.apache.felix.fileinstall:3.4.0] at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1217)[6:org.apache.felix.fileinstall:3.4.0] at org.apache.felix.fileinstall.internal.DirectoryWatcher.startAllBundles(DirectoryWatcher.java:1207)[6:org.apache.felix.fileinstall:3.4.0] at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:504)[6:org.apache.felix.fileinstall:3.4.0] at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:358)[6:org.apache.felix.fileinstall:3.4.0] at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:310)[6:org.apache.felix.fileinstall:3.4.0] Caused by: java.lang.NullPointerException at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1432)[org.apache.felix.framework-4.0.3.jar:] at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)[org.apache.felix.framework-4.0.3.jar:] at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843) at java.lang.ClassLoader.loadClass(ClassLoader.java:410)[:1.7.0_11] at java.lang.ClassLoader.loadClass(ClassLoader.java:356)[:1.7.0_11] at java.lang.Class.forName0(Native Method)[:1.7.0_11] at java.lang.Class.forName(Class.java:264)[:1.7.0_11] at org.apache.aries.proxy.impl.interfaces.ProxyClassLoader.isInvalid(ProxyClassLoader.java:109)[12:org.apache.aries.proxy.impl:1.0.2] at org.apache.aries.proxy.impl.interfaces.InterfaceProxyGenerator.getProxyInstance(InterfaceProxyGenerator.java:84)[12:org.apache.aries.proxy.impl:1.0.2] at org.apache.aries.proxy.impl.AsmProxyManager.createNewProxy(AsmProxyManager.java:72)[12:org.apache.aries.proxy.impl:1.0.2] at org.apache.aries.proxy.impl.AbstractProxyManager.createDelegatingInterceptingProxy(AbstractProxyManager.java:75)[12:org.apache.aries.proxy.impl:1.0.2] at org.apache.aries.proxy.impl.AbstractProxyManager.createDelegatingProxy(AbstractProxyManager.java:40)[12:org.apache.aries.proxy.impl:1.0.2] at org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.createProxy(AbstractServiceReferenceRecipe.java:338)[7:org.apache.aries.blueprint.core:1.4.0] at org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:106)[7:org.apache.aries.blueprint.core:1.4.0]/ So apparently no service is found for the specific interface. I find this strange since I have several bundles running with Camel and also using the ActiveMQ queues in between. Those bundles don't complain of a ConnectionFactory missing. I'm assuming I'm missing something to export the service. Is there anybody who could point me in the right direction? All help is welcome. Cheers, Niels -- View this message in context: http://karaf.922171.n3.nabble.com/Retrieve-reference-of-JMS-ConnectionFactory-tp4039259.html Sent from the Karaf - User mailing list archive at Nabble.com.
Re: Security Subject from AccessControlContext is null when using JAAS and CXF JAASAuthenticationFilter
Hi Christian, it would probably be better to add the doAs option to the JAASAuthenticationFilter and fix whatever is causing the NPE rather than trying to make the JAASLoginInterceptor do things it may not be designed to do. I'll add some thoughts to the JIRA. Thanks for the efforts, Niels
Re: Security Subject from AccessControlContext is null when using JAAS and CXF JAASAuthenticationFilter
Hi Christian, Using authz actually does not make any difference to the response someone will get when not authenticated. The JAASAuthenticationFilter will continue to press for credentials with a HTTP 401 response code. Where the JAASAuthenticationFeature will just fail with an ugly error message and a 500 server error. For sanity I took your Karaf-Tutorial and added a few REST annotations to the JAXWS service and also wedged a jaxrs:server configuration into the blueprint. Authentication and authorization seems to work ok as long as there is a valid auth header in the HTTP request: $ curl -H Accept: application/json -X GET -u karaf:karaf http://localhost:8181/cxf/rest/person {person:[{id:1,name:Chris}]} But trying to access the resource unauthenticated and asking to get a application/json response explicitly the only thing I get back is a bunch of XML garbage: $ curl -H Accept: application/json -X GET http://localhost:8181/cxf/rest/personns1:XMLFault xmlns:ns1=http://cxf.apache.org/bindings/xformat;ns1:faultstring xmlns:ns1=http://cxf.apache.org/bindings/xformat;org.apache.cxf.interceptor.security.AuthenticationException: Authentication required but no user or password was supplied/ns1:faultstring/ns1:XMLFault Here I would expect a HTTP 401 response instead of XML and a HTTP 500 Server Error. As said before, for a proper REST experience one would need to use JAASAuthenticationFilter but this component should not be disabling the useDoAs on the JAASLoginInterceptor. Cheers, Niels On Mon, Jan 19, 2015 at 11:10 PM, Christian Schneider ch...@die-schneider.net wrote: Have you tried to use only the JAASAuthenticationFeature together with blueprint authz for Rest? Maybe it works better. Christian
Re: Security Subject from AccessControlContext is null when using JAAS and CXF JAASAuthenticationFilter
-transports-http:3.0.2] at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)[103:org.apache.cxf.cxf-rt-transports-http:3.0.2] at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)[103:org.apache.cxf.cxf-rt-transports-http:3.0.2] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:290)[103:org.apache.cxf.cxf-rt-transports-http:3.0.2] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:214)[103:org.apache.cxf.cxf-rt-transports-http:3.0.2] at javax.servlet.http.HttpServlet.service(HttpServlet.java:575)[84:org.apache.geronimo.specs.geronimo-servlet_3.0_spec:1.0] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:265)[103:org.apache.cxf.cxf-rt-transports-http:3.0.2] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)[89:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:503)[89:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:69)[98:org.ops4j.pax.web.pax-web-jetty:3.1.2] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)[89:org.eclipse.jetty.aggregate.jetty-all-server:8.1.15.v20140411] On Mon, Jan 19, 2015 at 8:16 PM, Niels Bertram niels...@gmail.com wrote: Hi Christian, oh yes I can see, adding the JAASAuthenticationFeature to the cxf bus is required *in addition *to adding the JAASLoginInterceptor. I was not getting desired result after Phase 1 so that makes sense. I added a very simple example to GitHub https://github.com/bertramn/jaas-auth-rest-example for anyone interested. Thanks a lot for help, much appreciated! Kind Regards, Niels
Re: Security Subject from AccessControlContext is null when using JAAS and CXF JAASAuthenticationFilter
Hi Christian, oh yes I can see, adding the JAASAuthenticationFeature to the cxf bus is required *in addition *to adding the JAASLoginInterceptor. I was not getting desired result after Phase 1 so that makes sense. I added a very simple example to GitHub https://github.com/bertramn/jaas-auth-rest-example for anyone interested. Thanks a lot for help, much appreciated! Kind Regards, Niels On Mon, Jan 19, 2015 at 6:18 PM, Christian Schneider ch...@die-schneider.net wrote: Hi Niels, this is what you need to configure in blueprint to make it work: https://github.com/cschneider/Karaf-Tutorial/blob/master/cxf/personservice/server/src/main/resources/OSGI-INF/blueprint/blueprint.xml I never tested with rest but in SOAP it worked fine and it should also work in SOAP. It works like this: Phase 1 is the authentication. It is mainly done in the CXF interceptor - The JAASAuthenticationFeature adds the JAASLoginInterceptor - Inside the interceptor the basic auth http headers are read and a JAAS login is done - During the JAAS login by default the karaf context is used. So you can login for example with karaf/karaf or whatever you set in you users.propeties - The following CXF chain is called in subject.doAs. This populates the AccessControlContext From this point on you can use standard JAAS API calls to work with the AccessControlContext. Phase 2 is authorization As a second step you can then use the blueprint authz module. Simply activate it with authz:enable/ It works with the @RolesAllowed annotations to secure access to blueprint beans. In my case I set it on https://github.com/cschneider/Karaf-Tutorial/blob/master/cxf/personservice/server/src/main/java/net/lr/tutorial/karaf/cxf/personservice/impl/PersonServiceImpl.java @RolesAllowed(admin) public Person[] getAll() { return personMap.values().toArray(new Person[]{}); } So this works with the roles set in users.properties. As the user karaf is in the group admin he can access the method. If you add another user without this role then it will be able to access unsecured methods but not this one. Does this work for you? Christian
Re: Security Subject from AccessControlContext is null when using JAAS and CXF JAASAuthenticationFilter
Hi Christian, yes I did give cxf 3.0.3 on Karaf 2.3.9 a try without the desired outcome. After some digging, it appears that the AccessControlContext does not have the combiner field populated after a sucessful authentication. There are a few AccessControlContext instances in the heap that have a valid combiner set. These contexts appear to be from the Karaf shell. The point at which subject retrieval fails is injavax.security.auth.Subject.getSubject(AccessControlContext acc) line 300 on JDK 1.7.0_71. Here it expects the AccessControlContext to return a SubjectDomainCombiner but the actual combiner on the AccessControlContext is null and hence it is not able to retieve the security context. // return the Subject from the DomainCombiner of the provided contextreturn AccessController.doPrivileged (new java.security.PrivilegedActionSubject() { public Subject run() { DomainCombiner dc = acc.getDomainCombiner(); if (!(dc instanceof SubjectDomainCombiner)) return null; SubjectDomainCombiner sdc = (SubjectDomainCombiner)dc; return sdc.getSubject(); } }); Now I am not sure but I would expect this context to be set by the JAAS framework and not the CXF interceptor. I had a quick look at the authorization blueprint extension but not sure I understand the workings of this test. All I am after is to get the Subject in a simple authenticated REST service call. Any thoughts or pointers on the above? Looks to me as if something is broken in either Karaf JAAS or the CXF interceptor. Many thanks, Niels On Sun, Jan 18, 2015 at 11:25 PM, Christian Schneider ch...@die-schneider.net wrote: Did you try with CXF 3.0.2 ? The older versions of CXF did not set the AccessControlContext. Btw. if you use Blueprint you can also try the jaas authorization blueprint extension. See https://github.com/apache/aries/blob/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/authz/AuthorizationTest.java Christian Am 18.01.2015 um 13:29 schrieb Niels Bertram: I am trying to get the contexts Principal from the AccessControlContext as documented on stackexchange http://stackoverflow.com/questions/20970380/get-current-user-in-an-osgi-context-fuse-karaf . Unfortunately whenever I retrieve the subject using the current AccessControlContext, the subject is null. I basically create a very simple jaxrs server and register the CXF JAASAuthenticationFilter with the server: bean id=authenticationFilter class=org.apache.cxf.jaxrs.security.JAASAuth enticationFilter property name=contextName value=karaf / /bean jaxrs:server id=echoResource address=/rest/echo jaxrs:serviceBeans bean class=org.apache.karaf.jaas.modules.mongo.test.EchoServiceImpl / /jaxrs:serviceBeans jaxrs:providers ref component-id=authenticationFilter / /jaxrs:providers /jaxrs:server When I execute the REST service, I try to get the Subject in the code as below but it is always null: AccessControlContext acc = AccessController.getContext();if (acc == null) { throw new RuntimeException(access control context is null); } Subject subject = Subject.getSubject(acc);if (subject == null) { throw new RuntimeException(subject is null); } Interestingly if I inject the javax.ws.rs.core.SecurityContext into the CXF REST service, I do get a security principal. public Response echo(@Context SecurityContext context) { Principal user = context.getUserPrincipal(); } Is there another configuration required in Karaf or is this a bug in either Karaf or CXF? Would love to hear if anyone else came across this. Cheers, Niels BTW: I tried the same in karaf 2.3.9, 2.4.1 and 3.0.2 with exact same result. -- Christian Schneiderhttp://www.liquid-reality.de Open Source Architect Talend Application Integration Division http://www.talend.com
Security Subject from AccessControlContext is null when using JAAS and CXF JAASAuthenticationFilter
I am trying to get the contexts Principal from the AccessControlContext as documented on stackexchange http://stackoverflow.com/questions/20970380/get-current-user-in-an-osgi-context-fuse-karaf . Unfortunately whenever I retrieve the subject using the current AccessControlContext, the subject is null. I basically create a very simple jaxrs server and register the CXF JAASAuthenticationFilter with the server: bean id=authenticationFilter class=org.apache.cxf.jaxrs.security.JAASAuthenticationFilter property name=contextName value=karaf / /bean jaxrs:server id=echoResource address=/rest/echo jaxrs:serviceBeans bean class=org.apache.karaf.jaas.modules.mongo.test.EchoServiceImpl / /jaxrs:serviceBeans jaxrs:providers ref component-id=authenticationFilter / /jaxrs:providers /jaxrs:server When I execute the REST service, I try to get the Subject in the code as below but it is always null: AccessControlContext acc = AccessController.getContext();if (acc == null) { throw new RuntimeException(access control context is null); } Subject subject = Subject.getSubject(acc);if (subject == null) { throw new RuntimeException(subject is null); } Interestingly if I inject the javax.ws.rs.core.SecurityContext into the CXF REST service, I do get a security principal. public Response echo(@Context SecurityContext context) { Principal user = context.getUserPrincipal(); } Is there another configuration required in Karaf or is this a bug in either Karaf or CXF? Would love to hear if anyone else came across this. Cheers, Niels BTW: I tried the same in karaf 2.3.9, 2.4.1 and 3.0.2 with exact same result.
Re: [Windows7+MingW32] Problem starting karaf with ./bin/karaf
Is your Win7 a 64bit build by any chance? I remember having the same issue some time ago. I recall that in my case the SIGHUP error was generated by the actual shell as it tried to attach a signal handler to the windows process. Niels On 19 Dec 2014, at 3:18, Arnaud Vandyck avand...@gmail.com wrote: With MINGW32, I have a *nix like console on windows (with GNU tools). Some scripts take care of that. By the way, using the traditional Windows command line tool, everything is ok. Thanks, 2014-12-18 16:42 GMT+01:00 Jean-Baptiste Onofré j...@nanthrax.net: Hi Arnaud, not sure to follow what you do. If you use Windows, you have to use the *.bat scripts, the bin/karaf, bin/shell, etc are for Unix system. It's described here: http://karaf.apache.org/manual/latest/users-guide/start-stop.html Regards JB On 12/18/2014 04:14 PM, Arnaud Vandyck wrote: Hi, When I use ./bin/shell, I have $ ./bin/shell shell: Ignoring predefined value for KARAF_HOME __ __ / //_/ __ _/ __/ / , / __ `/ ___/ __ `/ /_ / /| |/ /_/ / / / /_/ / __/ /_/ |_|\__,_/_/ \__,_/_/ Apache Karaf (4.0.0.M1) Hit 'tab' for a list of available commands and '[cmd] --help' for help on a specific command. Hit 'ctrl-d' or type 'system:shutdown' or 'logout' to shutdown Karaf. karaf@root() But if I try ./bin/karaf, I have $ ./bin/karaf karaf: Ignoring predefined value for KARAF_HOME javax.management.JMRuntimeException: Failed to load MBeanServerBuilder class org.apache.karaf.management.boot.KarafMBeanServerBuilder: java.lang.ClassNotFoundException: org.apache.karaf.management.boo t.KarafMBeanServerBuilder at javax.management.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java:503) at javax.management.MBeanServerFactory.getNewMBeanServerBuilder(MBeanServerFactory.java:539) at javax.management.MBeanServerFactory.newMBeanServer(MBeanServerFactory.java:316) at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:231) at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:192) at java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:468) at sun.management.jmxremote.ConnectorBootstrap.startLocalConnectorServer(ConnectorBootstrap.java:518) at sun.management.Agent.startLocalManagementAgent(Agent.java:138) at sun.management.Agent.startAgent(Agent.java:260) at sun.management.Agent.startAgent(Agent.java:447) Caused by: java.lang.ClassNotFoundException: org.apache.karaf.management.boot.KarafMBeanServerBuilder at java.net.URLClassLoader$1.run(URLClassLoader.java:372) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:360) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at javax.management.MBeanServerFactory.loadBuilderClass(MBeanServerFactory.java:446) at javax.management.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java:488) ... 9 more Exception envoyée par l'agent : javax.management.JMRuntimeException: Failed to load MBeanServerBuilder class org.apache.karaf.management.boot.KarafMBeanServerBuilder: java.lang.ClassNotFoundException: org.apache.karaf.management.boot.KarafMBeanServerBuilder When launching with the cmd and .\bin\karaf.bat, I have a error but it seems to be running: karaf.bat: Ignoring predefined value for KARAF_HOME Error starting karaf activator org.apache.karaf.diagnostic.core.internal.Activator: Unknown signal: HUP __ __ / //_/ __ _/ __/ / , / __ `/ ___/ __ `/ /_ / /| |/ /_/ / / / /_/ / __/ /_/ |_|\__,_/_/ \__,_/_/ Apache Karaf (4.0.0.M1) Hit 'tab' for a list of available commands and '[cmd] --help' for help on a specific command. Hit 'ctrl-d' or type 'system:shutdown' or 'logout' to shutdown Karaf. karaf@root() Cheers, -- Arnaud Vandyck http://about.me/avdyk -- Jean-Baptiste Onofré jbono...@apache.org http://blog.nanthrax.net Talend - http://www.talend.com -- Arnaud Vandyck http://about.me/avdyk
Re: Custom Karaf with Apache Camel
Hey JB, did you find out something? Regards, Niels -- View this message in context: http://karaf.922171.n3.nabble.com/Custom-Karaf-with-Apache-Camel-tp4030997p4031132.html Sent from the Karaf - User mailing list archive at Nabble.com.
Custom Karaf with Apache Camel
Hey, I'm trying to create a custom distribution of Karaf with Apache Camel. I tried building a distribution with several different version of Apache Camel without any luck. I first tried the version used by ServiceMix: Camel - 2.10.7 without any luck. Maven was complaining: [WARNING] could not resolve wrap:mvn:bsf/bsf/2.4.0 org.sonatype.aether.resolution.ArtifactResolutionException: Could not find artifact wrap:mvn:jar:bsf/bsf/2.4.0 in servicemix (http://svn.apache.org/repos/asf/servicemix/m2-repo) When I tried Camel - 2.11.3 I got the same result. Finally I tried to use the latest Camel version 2.12.2. This one didn't complain about BSF missing (could be it didn't got that far) but complained on facebook4j-core being missing. [WARNING] could not resolve wrap:mvn:org.facebook4j/facebook4j-core/1.1.12 org.sonatype.aether.resolution.ArtifactResolutionException: Could not find artifact wrap:mvn:jar:org.facebook4j/facebook4j-core/1.1.12 in servicemix (http://svn.apache.org/repos/asf/servicemix/m2-repo) I assume BSF is needed for scripting in Camel and facebook4j-core for the facebook component both which I don't need. So could it be I could better create a custom feature file only including camel-core bundle and the components that I need? If so could somebody give a small hint how I could accomplish it? Still I find it strange I couldn't build a version with Camel 2.10.7. btw: I'm using Java version 1.7.0_25 with Apache Maven 3.0.5 on Ubuntu 13.04 This is the pom I defined: ?xml version=1.0 encoding=UTF-8? project xmlns=http://maven.apache.org/POM/4.0.0; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xsi:schemaLocation=http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd; modelVersion4.0.0/modelVersion parent groupIdorg.apache.karaf.assemblies/groupId artifactIdassemblies/artifactId version3.0.0/version relativePath../pom.xml/relativePath /parent groupIdnl.kabisa.esb/groupId artifactIdflux/artifactId packagingpom/packaging nameKabisa Flux Distribution/name properties appendedResourcesDirectory${basedir}/../etc/appended-resources/appendedResourcesDirectory /properties dependencies dependency groupIdorg.apache.karaf.features/groupId artifactIdframework/artifactId typekar/type /dependency dependency groupIdorg.apache.karaf.features/groupId artifactIdstandard/artifactId classifierfeatures/classifier typexml/type scoperuntime/scope /dependency dependency groupIdorg.apache.karaf.features/groupId artifactIdspring/artifactId classifierfeatures/classifier typexml/type scoperuntime/scope /dependency dependency groupIdorg.apache.camel.karaf/groupId artifactIdapache-camel/artifactId version2.12.2/version classifierfeatures/classifier typexml/type /dependency /dependencies build resources resource directory${project.basedir}/../../directory filteringfalse/filtering includes includeREADME/include includeRELEASE*/include includeLICENSE/include includeNOTICE/include /includes /resource /resources plugins plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-resources-plugin/artifactId executions execution idprocess-resources/id goals goalresources/goal /goals /execution /executions /plugin plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-remote-resources-plugin/artifactId configuration skiptrue/skip /configuration /plugin plugin groupIdorg.apache.karaf.tooling/groupId artifactIdkaraf-maven-plugin/artifactId executions execution idprocess-resources/id phaseprocess-resources/phase goals goalinstall-kars/goal /goals /execution execution idpackage/id goals goalinstance-create-archive/goal /goals /execution /executions configuration installedFeatures