<< 28-August-2008 : hausbot on #servicemix at codehaus [download] [back] >>
 
 
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

Drone v1.4 © 2002-2005 Uwyn RIFE powered