| time |
nick |
message |
04:38 |
<ffang> |
gnodet:ping |
06:19 |
<cvdstap> |
Hello once again |
06:19 |
<lhein> |
hi |
06:21 |
<cvdstap> |
It looks like that the servicemix-camel-service-unit will produce a regular su instead of a camel one. Thus not connecting with the tutorial |
06:21 |
<lhein> |
of course...it IS a smx su |
06:21 |
<cvdstap> |
well it is supposed to generate and example xml, and at the moment it is not ;) |
06:22 |
<cvdstap> |
also i was expecting the camel dependency in the pom file |
06:22 |
<cvdstap> |
unless this is intended behavior |
06:23 |
<lhein> |
how did u created the su |
06:24 |
<lhein> |
just had a look at the archetype and the dependency to servicemix-camel is there....of course you need to put the real camel dependencies in for yourself |
06:24 |
<cvdstap> |
with the maven archetype, just a sec i will get it from the buffer |
06:24 |
<cvdstap> |
C:\workspace\servicemix_camel_tutorial\tutorial-camel-su>mvn archetype:create -DarchtypeArtifactId=servicemix-camel-service-unit -DarchtypeGroupId=eu.u |
06:24 |
<cvdstap> |
ds.servicemix.tutorial.camel -DartifactId=tutorial-camel-su |
06:25 |
<lhein> |
remember the huge amount of camel components....we can't put them all in there because you need only one or two of them |
06:25 |
<lhein> |
at least I would think so |
06:26 |
<cvdstap> |
That is good, but then the tutorial 3 needs to be updated i think |
06:27 |
<lhein> |
which deps are missing? |
06:27 |
<gertv> |
cvdstap: your archetype command is wrong |
06:27 |
<lhein> |
gertv: maybe u can have a look here. Seems there are some deps missing in your tutorial |
06:28 |
<gertv> |
the archetypeGroupId should be org.apache.servicemix.tooling |
06:28 |
<gertv> |
and the parameter should be archetypeSomething, not archtypeSomething |
06:29 |
<cvdstap> |
fully correct, i think i will go for that coffee ~_~ |
06:30 |
<gertv> |
coffee helps solve every it problem |
06:30 |
<cvdstap> |
and good to know that typos there will not produce an error |
06:31 |
<lhein> |
lhein already drinks coffee |
06:32 |
<gertv> |
cvdstap: if you had specified the parameter names correct, you would have gotten an error |
06:32 |
<gertv> |
because it can't find the archetype in that group id |
06:33 |
<gertv> |
but now that the parameter names themselves were off too, the archetype plugin doesn't find the parameter and just uses its own defaults |
06:33 |
<gertv> |
gertv just got himself a coffee too |
06:33 |
<gertv> |
I'm working at a coffee roasting company today -- so I'm right at the source of it |
06:33 |
<lhein> |
wow...thats something, gert |
06:34 |
<cvdstap> |
hehe |
06:36 |
<cvdstap> |
hmm do the tooling archetypes pick the group id from the parent pom ? |
06:36 |
<lhein> |
yep, I think so |
06:36 |
<cvdstap> |
ah that is why i got confused i think *tests* |
06:37 |
<cvdstap> |
i do have to use the -DarchetypeVersion=3.2.2 trick again tho, i should realy figure out where that comes from |
06:45 |
<gertv> |
lhein: you had a problem building 3.3 yesterday with my changes? |
06:46 |
<lhein> |
that is now fixed gert...needed to adapt some version numbers |
06:46 |
<gertv> |
ok |
06:52 |
<rong> |
ping ffang |
06:53 |
<cvdstap> |
Even though i did run in some issues... my brain keeps telling me, this can not be this simple |
06:55 |
<ffang> |
rong:pang |
06:56 |
<rong> |
ffang: I just opened SM-1526 which is a major problem for us. Any ideas off the top of your head re: what might be the problem? |
06:57 |
<gertv> |
cvdstap: what's too simple for you? |
06:58 |
<ffang> |
rong: looks like the JdbcAuditor want to serialize some class from cxf codebase |
06:58 |
<cvdstap> |
gertv, it is realy little effort to get the SU's SA's set up and deployed, considering what they do |
07:00 |
<gertv> |
cvdstap: yeah, it is, and we are working on making it even easier with smx 4 |
07:00 |
<rong> |
ffang: Am I correct that the cxf code is not prepared for such an operation? |
07:04 |
<ffang> |
rong: require JBIDestination is serialable doesn't make sense to me, I will figure out can we add some modifier to the variable JBIDestination inside smx such as "transient" to avoid this happen |
07:07 |
<rong> |
ffang: if that doesn't work, would implementing a custom JBIDestinationOutputStream.writeObject() be another alternative? |
07:10 |
<ffang> |
rong: mark JBIDestiantion as seriable and add dummy writeObject() would be a work around but doesn't make sense |
07:11 |
<rong> |
ffang: also I suspect SM-1436 is the same problem. It probably looks a bit different due to different smx/cxf versions. |
07:11 |
<ffang> |
rong: IIRC, there would be some normal way to exclude object variable which not implment Seriable in a seriable object |
07:11 |
<ffang> |
rong: yes, it should be |
07:12 |
<ffang> |
rong: should be get addressed in same way |
07:14 |
<gertv> |
ffang: we should probably keep in mind that we also use serialization for the JMS flow |
07:14 |
<gertv> |
ffang: so if you need the JBIDestination at the other end there, we probably need to implement Externalizable to read/write it to bytes somewhere |
07:14 |
<gertv> |
ffang: otherwise, we just make it transient |
07:15 |
<ffang> |
gertv: how about make it transient? |
07:16 |
<gertv> |
ffang: if you make it transient, the JBIDestination of whatever you made transient will be null if you deserialize it |
07:16 |
<gertv> |
ffang: so if you need it again, you need to be able to recreate it |
07:16 |
<gertv> |
ffang: for the JdbcAuditor, that probably doesn't matter though |
07:16 |
<ffang> |
gertv: so far I don't think we need serialize the JBIDestination and deserialize at the other end, so mark it transient is fine |
07:17 |
<gertv> |
ffang: yep |
07:18 |
<gnodet> |
ffang: pong |
07:18 |
<ffang> |
gnodet: does osgi support two different bundles export same package name? |
07:18 |
<gnodet> |
not very well |
07:19 |
<gnodet> |
well, it does in a few cases: |
07:19 |
<ffang> |
gnodet: so I guess https://issues.apache.org/activemq/browse/SMX4-88 comes from this package name conflict |
07:20 |
<gnodet> |
ffang: yes, i think this is the reason |
07:22 |
<ffang> |
gnodet: so we need repackage the code in features/camel/servicemix-camel, how about org.apache.servicemix.camel.component? |
07:23 |
<ffang> |
gnodet: in which case osgi support same package name from different bundles? |
07:24 |
<gnodet> |
ffang: two cases: if the two bundles really export the *same* pacakge (two copies of the same classes) |
07:24 |
<gnodet> |
in such a case, one copy will be chosen |
07:24 |
<gnodet> |
(you can also export the same package in two different versions) |
07:25 |
<ffang> |
gnodet: thanks, and what do you think we need do for features versioning? |
07:25 |
<gnodet> |
but if you want the two packages to be merged, this is possible but it requires the use of some OSGi meta-data which is not supported by felix |
07:25 |
<gnodet> |
and one bundle is attached to the other one, becoming a part of this bundle |
07:26 |
<gnodet> |
but it's better to avoid that |
07:26 |
<ffang> |
gnodet: ok, I will repackage the one in features project |
07:27 |
<gnodet> |
this component is very close to the jbi one, so i'm not sure we want to keep a dupicate copy of nearly the same code |
07:28 |
<gnodet> |
the only difference with the jbi component is that it uses directly the nmr instead |
07:29 |
<gnodet> |
and now that the jbi components are packaged as osgi bundles, this is becoming less interesting, as you can now use a plain configuration file to define your camel routes and jbi endpoints |
07:32 |
<ffang> |
gnodet: but since we still have serveral tests and samples based on this components, I think keep it is ok |
07:33 |
<gnodet> |
the problem is that it's much more limited than the jbi camel component |
07:34 |
<gnodet> |
for example the mep can not be really configured when going from camel -> nmr |
07:34 |
<gnodet> |
it takes the mep from the camel exchange, which is always InOnly iirc |
07:35 |
<gnodet> |
and i don't think it propagates the properties / attachments |
07:36 |
<gnodet> |
so we need to either: work on it to duplicate all that was done on the camel jbi component, or update the examples to use the jbi component |
07:36 |
<gnodet> |
gertv: any opinion on that ? |
07:36 |
<cvdstap> |
Another question from a beginner: is the "urn:" part of the namespace used for the services mandatory or even better what does is mean ? |
07:37 |
<ffang> |
gnodet: the MEP is not always InOnly, and it can support attachment, we have a test org/apache/servicemix/camel/AttachmentTest.java |
07:37 |
<ffang> |
gnodet: about the MEP, the camel exchange should set MEP correctly before pass to nmr |
07:39 |
<gnodet> |
ok, so forget what i said |
07:39 |
<gnodet> |
let's rename its package |
07:39 |
<gnodet> |
what about org.apache.servicemix.camel.nmr ? |
07:40 |
<gnodet> |
it may be more explicit than "component" |
07:40 |
<ffang> |
gnodet: it's fine, :-) |
07:41 |
<gnodet> |
ffang: btw, when you're at it, i've just seen a dependency on the cxf component |
07:41 |
<gnodet> |
the ServiceMixProducer imports org.apache.camel.component.cxf.CxfConstants |
07:41 |
<gnodet> |
so it creates a requirement on the osgi side, which is not necessary imho |
07:42 |
<gertv> |
gnodet, ffang: why would we want to keep the both of them around? |
07:43 |
<gertv> |
to avoid having to go through the JBI layer for a camel route on smx4? |
07:43 |
<rong> |
ffang: so jbiDestination would get marked transient in org.apache.cxf.transport.jbi.JBIDestination.BackChannelConduit? |
07:44 |
<gertv> |
cvdstap: the urn: is just convention -- a replacement for the http://... commonly found in URIs |
07:44 |
<ffang> |
gnodet: I will fix the reference for CxfConstants |
07:44 |
<cvdstap> |
gertv, i see |
07:44 |
<gnodet_> |
ffant: well, it does not end up in the manifest it seems as it's jut a constant, but it would be cleaner |
07:44 |
<cvdstap> |
thanks |
07:44 |
<gertv> |
cvdstap: we use the urn: in our tutorials to avoid confusing people with http:// uri |
07:45 |
<cvdstap> |
gertv, also it makes it more distinct from other namespaces, which is a good thing |
07:49 |
<ffang> |
rong: not sure where the jbiDestinataion get passed into smx NormalizedMessage, need find it out |
07:50 |
<ffang> |
gnodet: about features versioning, do you think we should support to install different versions of feature? |
07:51 |
<gnodet> |
ffang: yes, we should work on that i think or at least think about it |
07:52 |
<ffang> |
gnodet: what else do you think we should support for features versioning? |
07:53 |
<ffang> |
gnodet: for backword compability, I think we should give each feature a default version if it doesn't specify one in the features.xml |
07:53 |
<gnodet> |
ffang: yes, osgi does that too, so using 0.0.0 sounds like a good default |
07:54 |
<ffang> |
gnodet: sounds good to me as well :-) |
08:01 |
<cvdstap> |
gertv, i think http://servicemix.apache.org/34-exchanging-messages-with-other-jbi-services.html section Receive a message from the JBI ESB bullet 1 could use a picture... it is realy hard to understand what happens with the text alone |
08:04 |
<rong> |
ffang: i think org.apache.cxf.transport.jbi.JBIDestination.BackChannelConduit.prepare() updates message with JBIDestinationOutputStream |
08:06 |
<ffang> |
rong: yes, that's how response message send out |
08:08 |
<rong> |
ffang: so do you think it is likely that the jbiDestination member variable in JBIDestination.BackChannelConduit is the serialization/externalizable offender? |
08:09 |
<gertv> |
cvdstap: do you feel up to creating one? |
08:09 |
<gertv> |
cvdstap: I'm not much of a graphics artist myself -- but I'll happily add it to the site for you |
08:10 |
<cvdstap> |
i could make an atempt, but i dont have any of the other graphics that are already used (and i do not understand what it says exactly ;)) |
08:10 |
<ffang> |
rong: shouldn't be, since BackChannelConduit itself is not marked as Seriable, |
08:12 |
<gertv> |
cvdstap: what part of it is hard to grasp? |
08:12 |
<rong> |
ffang: MessageExchangeImpl is not serializable but externalizable which I believe is a less strict requirement |
08:12 |
<cvdstap> |
the part where it says "Because this matches the the external JMS consumer endpoint we created on the previous page, this route will receive the messages from this external endpoint." |
08:13 |
<cvdstap> |
I get that the from("jbi:endpoint:...") publishes a service to the nmr |
08:13 |
<cvdstap> |
but why that provider gets connected to the jms one i dont get. |
08:14 |
<ffang> |
both SM-1526 and SM-1436 the exception comes from serialize the org.apache.servicemix.jbi.messaging.NormalizedMessageImpl, so looks like somehow JBIDestination get passed into org.apache.servicemix.jbi.messaging.NormalizedMessageImpl |
08:15 |
<ffang> |
rong: maybe passed in as a property, but not sure now |
08:16 |
<gertv> |
cvdstap: the from("jbi:endpoint:...") publishes an endpoint on the nmr |
08:16 |
<gertv> |
that's an internal endpoint (available on the esb itself) |
08:17 |
<gertv> |
the jms:consumer is an external endpoint -- it's available from the outside world |
08:18 |
<gertv> |
the only thing it says there is that because the names of the services are the same, the message arriving at the queue will be sent to the internal endpoint by the jms:consumer |
08:19 |
<rong> |
ffang: I noticed that getDestination() is method on cxf Message interface and I suspect smx messageExchange contains reference to cxf message. |
08:19 |
<gertv> |
so the Camel endpoint exposed on the nmr matches the name of the target service configured on the jms:consumer |
08:21 |
<rong> |
ffang: got to run...thx for the help. |
08:29 |
<cvdstap> |
i think i am mixing up some things at the moment. In jbi the consumer is the initiator... of an excahnge. So now i guess that when the queue recieves an item on the provider, the consumer will create an exchange to the nmr and since the camel endpoint is the same name the nmr routes it from the jms consumer to the camel endpoint |
08:31 |
<gertv> |
yeah, that's about right |
08:31 |
<gertv> |
when the jms:provider receives a JBI MessageExchange, it sends a JMS message to the queue |
08:32 |
<gertv> |
and when the jms:consumer notices the JMS message on the queue, it will create the MessageExchange and the NMR does the routing just as you described |
08:34 |
<cvdstap> |
so in short "when a consumer endpoint matches an producer enpoint the exchange will get routed between them" ? |
08:38 |
<cvdstap> |
also what happaned to tutorial 4-5-6 ? |
09:09 |
<gertv> |
tutorial 4 is currently in progress (it's about cxf) |
09:09 |
<gertv> |
the 7 is just called 7 because we wanted to move it up the road |
09:10 |
<gertv> |
perhaps we had better called it 'intermediate 1' or something |
09:18 |
<cvdstap> |
fair enough |
09:20 |
<cvdstap> |
i think its best to let the information sink in a little, thanks for the help and explanation! |
09:21 |
<gertv> |
np |
09:45 |
<gertv> |
gaginn: just replied to your mail |
09:45 |
<gertv> |
could you quickly check if that makes sense to you before I'm off to dinner? |
09:46 |
<gertv> |
i.e. to lunch ;) |
09:57 |
<gaginn> |
gertv: i think yes. I'm going to do it according to your suggestions ;) |
10:12 |
<cvdstap> |
just a random thought.. It seems to me (not tested) that within one su i could use for instance both a jms and a file component. Any reason why not to? since all te examples are having multiple service definitions within a single su of each component type. |
11:41 |
<gertv> |
cvdstap: no, you can not do that at the moment |
11:42 |
<gertv> |
cvdstap: one SU contains the configuration for a single JBI component |
11:42 |
<cvdstap> |
As by jbi spec ? |
11:42 |
<gertv> |
cvdstap: that's one of the thing we will have in SMX4, where you can deploy an OSGi bundle with config for mulitple components |
11:42 |
<gertv> |
yes, that's JBI packaging |
11:43 |
<gertv> |
for smx4, you can still use that if you want, but you'll also be able to deploy a plain XML file or an OSGi bundle containing multiple component's config |
11:43 |
<cvdstap> |
I read about OSGi, it seems like a very interesting technologie for this purpose |
11:43 |
<gertv> |
yep, definitely |
11:44 |
<cvdstap> |
that is nice, since i think it will make things easier to find, since one "route" can be in one file. At the moment it is spread all over |