RE: Remote deployment of service assemblies

2007-05-17 Thread Rossmanith, Philipp

Thanks!

Ciao,
Philipp

> -Mensaje original-
> De: Guillaume Nodet [mailto:[EMAIL PROTECTED]
> Enviado el: jueves, 17 de mayo de 2007 15:21
> Para: [EMAIL PROTECTED]
> Asunto: Re: Remote deployment of service assemblies
>
> See http://issues.apache.org/activemq/browse/SM-858
> which has been fixed a few weeks ago in trunk.
>
> On 5/17/07, Rossmanith, Philipp <[EMAIL PROTECTED]>
wrote:
> >
> >
> > Hi,
> >
> > After quite a break, I am back with the issue relating to this
thread.
> > What I did was creating a jsr-181 WSDL first service, for which I
set a
> > ComponentContext *). The setup is different from what had been
outlined
> > earlier, as I am creating a service assembly ZIP based on parameters
I
> > receive.
> >
> > My idea was to obtain a DeliveryChannelImpl from the
ComponentContext
> > and to then follow the steps Guillaume has pointed out below.
> >
> > However, the ComponentContext that is being set by SM is an
> > EndpointComponentContext which doesn't give me access to this
> > information.
> >
> > Any hints of how I can get hold of the JBIContainer or its
> > AdminCommandsServiceMBean?
> >
> > Thanks in advance,
> > Ciao,
> > Philipp
> >
> > *) http://incubator.apache.org/servicemix/servicemix-jsr181.html
> > **) For the moment, I am creating a service assembly zip file for
WSN
> > subscriptions once the service gets invoked. Parameters are the
> > wsa:address, the topic and an identifier.
> >
> > > -Mensaje original-
> > > De: Guillaume Nodet [mailto:[EMAIL PROTECTED]
> > > Enviado el: martes, 20 de marzo de 2007 11:21
> > > Para: [EMAIL PROTECTED]
> > > Asunto: Re: Remote deployment of service assemblies
> > >
> > > On 3/20/07, Rossmanith, Philipp <[EMAIL PROTECTED]>
> > wrote:
> > > >
> > > >
> > > > Hi,
> > > >
> > > > > Once you have the JBIContainer, just retrieve the needed
> > interface:
> > > > >   JBIContainer container = dci.getContainer();
> > > > >   AdminCommandsServiceMBean admin =
> > > > container.getAdminCommandsService();
> > > > >
> > > > > Then, you can use it to deploy / undeploy, manage life cycle,
etc
> > ..
> > > > >admin.installComponent()
> > > > >admin.startComponent()
> > > > >admin.listServiceAssemblies() ...
> > > > Ok, that is quite a bit cleaner...
> > > >
> > > > > all the administrative tasks are available from this
interface, so
> > I
> > > > guess
> > > > > the WSDL
> > > > > should be quite easy to write.  On the implementation side,
one
> > way is
> > > > to
> > > > > use
> > > > > jaxb2 (not the full jsr181 though) as done in the
WS-Notification
> > > > > component.
> > > > > See org.apache.servicemix.wsn.component.WSNEndpoint class.
> > > > What I was thinking about was a WSDL wrapper around the
> > > > AdminCommandsServiceMBean methods.
> > > >
> > > > I'm currently investigating the WSN component to use it for
> > > > notifications based on message content (see
> > > >
> >
http://www.nabble.com/how-to-implement-runtime-notifications-based-on-Me
> > > > ssageExchange--content-tf3409844s12049.html), but I must say I'm
> > afraid
> > > > I don't really understand your idea (which may be due to my
limited
> > > > experience with jaxb2).
> > > >
> > > > It seems to me that the wsn component WSNEndpoint uses the
> > annotations
> > > > done in the org.apache.servicemix.wsn.AbstractEndpoint hierarchy
(an
> > > > object of this class is passed in as "pojo" in the constructor)
to
> > > > obtain a class object "endpointInterface" which is then used to
get
> > hold
> > > > of the methods published in that interface. Jaxb2 seems to be
used
> > to
> > > > unmarshal incoming normalized message content and to marshal it
to
> > > > outgoing exchanges (method: process).
> > > >
> > > > However, if I'm ""only"" writing a provider service and not a
> > > > full-fledged component, what would be the advantages of the
approach
> > > > taken in WSNEndpoint?
> > > >
> > > > Or am I misinterpreting, and you're using jaxb2 for creating a
> > 

Re: Remote deployment of service assemblies

2007-05-17 Thread Guillaume Nodet

See http://issues.apache.org/activemq/browse/SM-858
which has been fixed a few weeks ago in trunk.

On 5/17/07, Rossmanith, Philipp <[EMAIL PROTECTED]> wrote:



Hi,

After quite a break, I am back with the issue relating to this thread.
What I did was creating a jsr-181 WSDL first service, for which I set a
ComponentContext *). The setup is different from what had been outlined
earlier, as I am creating a service assembly ZIP based on parameters I
receive.

My idea was to obtain a DeliveryChannelImpl from the ComponentContext
and to then follow the steps Guillaume has pointed out below.

However, the ComponentContext that is being set by SM is an
EndpointComponentContext which doesn't give me access to this
information.

Any hints of how I can get hold of the JBIContainer or its
AdminCommandsServiceMBean?

Thanks in advance,
Ciao,
Philipp

*) http://incubator.apache.org/servicemix/servicemix-jsr181.html
**) For the moment, I am creating a service assembly zip file for WSN
subscriptions once the service gets invoked. Parameters are the
wsa:address, the topic and an identifier.

> -Mensaje original-
> De: Guillaume Nodet [mailto:[EMAIL PROTECTED]
> Enviado el: martes, 20 de marzo de 2007 11:21
> Para: [EMAIL PROTECTED]
> Asunto: Re: Remote deployment of service assemblies
>
> On 3/20/07, Rossmanith, Philipp <[EMAIL PROTECTED]>
wrote:
> >
> >
> > Hi,
> >
> > > Once you have the JBIContainer, just retrieve the needed
interface:
> > >   JBIContainer container = dci.getContainer();
> > >   AdminCommandsServiceMBean admin =
> > container.getAdminCommandsService();
> > >
> > > Then, you can use it to deploy / undeploy, manage life cycle, etc
..
> > >admin.installComponent()
> > >admin.startComponent()
> > >admin.listServiceAssemblies() ...
> > Ok, that is quite a bit cleaner...
> >
> > > all the administrative tasks are available from this interface, so
I
> > guess
> > > the WSDL
> > > should be quite easy to write.  On the implementation side, one
way is
> > to
> > > use
> > > jaxb2 (not the full jsr181 though) as done in the WS-Notification
> > > component.
> > > See org.apache.servicemix.wsn.component.WSNEndpoint class.
> > What I was thinking about was a WSDL wrapper around the
> > AdminCommandsServiceMBean methods.
> >
> > I'm currently investigating the WSN component to use it for
> > notifications based on message content (see
> >
http://www.nabble.com/how-to-implement-runtime-notifications-based-on-Me
> > ssageExchange--content-tf3409844s12049.html), but I must say I'm
afraid
> > I don't really understand your idea (which may be due to my limited
> > experience with jaxb2).
> >
> > It seems to me that the wsn component WSNEndpoint uses the
annotations
> > done in the org.apache.servicemix.wsn.AbstractEndpoint hierarchy (an
> > object of this class is passed in as "pojo" in the constructor) to
> > obtain a class object "endpointInterface" which is then used to get
hold
> > of the methods published in that interface. Jaxb2 seems to be used
to
> > unmarshal incoming normalized message content and to marshal it to
> > outgoing exchanges (method: process).
> >
> > However, if I'm ""only"" writing a provider service and not a
> > full-fledged component, what would be the advantages of the approach
> > taken in WSNEndpoint?
> >
> > Or am I misinterpreting, and you're using jaxb2 for creating a
jsr181
> > code skeleton based on a previously generated WSDL?
>
>
> Yeah,  that's the point.
> The WSNEndpoint is used to invoke an annotated POJO generated
> from the WSDL like AbstractNotificationBroker.
> The AbstractNotificationBroker#init method calls register, which
> ultimately
> creates a WSNEndpoint with the AbstractNotificationBroker class as the
> pojo.
>
> So, once the WSDL is written, you can use wsgen to generate the
interfaces
> and messages, create your own POJO implementation and wrap it with
> the WSNEndpoint.  (It makes me think that this class may be put in
> servicemix-common).
>
> But this is only one way to do that. Feel free to use your own if you
> prefer.
>
> The last question is how do we package that.  I'm thinking about
> a SE, but without any support for deployments of SU,
> I guess another way could be to leverage the JSR181 component and
> just write a SU for it (and another for the http BC i guess).
> The last way would be to configure it directly on the JBI container
> without any JBI packaging ...
> Need to think about pros / cons ...
>
> >

Re: Remote deployment of service assemblies

2007-03-20 Thread Guillaume Nodet

On 3/20/07, Rossmanith, Philipp <[EMAIL PROTECTED]> wrote:



Hi,

> Once you have the JBIContainer, just retrieve the needed interface:
>   JBIContainer container = dci.getContainer();
>   AdminCommandsServiceMBean admin =
container.getAdminCommandsService();
>
> Then, you can use it to deploy / undeploy, manage life cycle, etc ..
>admin.installComponent()
>admin.startComponent()
>admin.listServiceAssemblies() ...
Ok, that is quite a bit cleaner...

> all the administrative tasks are available from this interface, so I
guess
> the WSDL
> should be quite easy to write.  On the implementation side, one way is
to
> use
> jaxb2 (not the full jsr181 though) as done in the WS-Notification
> component.
> See org.apache.servicemix.wsn.component.WSNEndpoint class.
What I was thinking about was a WSDL wrapper around the
AdminCommandsServiceMBean methods.

I'm currently investigating the WSN component to use it for
notifications based on message content (see
http://www.nabble.com/how-to-implement-runtime-notifications-based-on-Me
ssageExchange--content-tf3409844s12049.html), but I must say I'm afraid
I don't really understand your idea (which may be due to my limited
experience with jaxb2).

It seems to me that the wsn component WSNEndpoint uses the annotations
done in the org.apache.servicemix.wsn.AbstractEndpoint hierarchy (an
object of this class is passed in as "pojo" in the constructor) to
obtain a class object "endpointInterface" which is then used to get hold
of the methods published in that interface. Jaxb2 seems to be used to
unmarshal incoming normalized message content and to marshal it to
outgoing exchanges (method: process).

However, if I'm ""only"" writing a provider service and not a
full-fledged component, what would be the advantages of the approach
taken in WSNEndpoint?

Or am I misinterpreting, and you're using jaxb2 for creating a jsr181
code skeleton based on a previously generated WSDL?



Yeah,  that's the point.
The WSNEndpoint is used to invoke an annotated POJO generated
from the WSDL like AbstractNotificationBroker.
The AbstractNotificationBroker#init method calls register, which ultimately
creates a WSNEndpoint with the AbstractNotificationBroker class as the pojo.

So, once the WSDL is written, you can use wsgen to generate the interfaces
and messages, create your own POJO implementation and wrap it with
the WSNEndpoint.  (It makes me think that this class may be put in
servicemix-common).

But this is only one way to do that. Feel free to use your own if you
prefer.

The last question is how do we package that.  I'm thinking about
a SE, but without any support for deployments of SU,
I guess another way could be to leverage the JSR181 component and
just write a SU for it (and another for the http BC i guess).
The last way would be to configure it directly on the JBI container
without any JBI packaging ...
Need to think about pros / cons ...


.. and discussions about servicemix developement should take place on
the
> dev
> list ... ;-)
Done :-)



Thanks in advance,

Ciao,
Philipp

> -Mensaje original-
> De: Guillaume Nodet [mailto:[EMAIL PROTECTED]
> Enviado el: lunes, 19 de marzo de 2007 16:56
> Para: servicemix-users@geronimo.apache.org
> Asunto: Re: Remote deployment of service assemblies
> Importancia: Baja
>
> On 3/19/07, Rossmanith, Philipp <[EMAIL PROTECTED]>
wrote:
> >
> >
> > > Currently, remote deployment is not supported by the ant tasks.
> > > The only way to do currently that is to start a servicemix console
> > > on the same server, because the console accepts uploads and will
> > > be able to point the container to a local file.
> > >
> > > The only way using JMX would be to add a method accepting a byte[]
> > > parameter which would be the content of the JBI artifact to
deploy, or
> > > creating an management endpoint on the JBI bus (using an
attachment
> > > for the JBI archetype).  Not sure what's the best way.
> > I was thinking about this alternative, as well. There could be a
> > provider service that accepts calls having an SA attachment. It
could
> > then obtain this attachment and physically place it in the
deployment
> > dir.
>
>
> Using the hot deployer is imo not the best solution.
> We should use the AdminCommandsService instead (see below)
>
> In that way, one could use the same access control mechanism as for
the
> > rest of the service invocations. Another advantage would be that
through
> > the different binding components, the functionality would be
available
> > in more than just Java.
>
>
> Yeah, agreed. We just need to define a  clean WSDL for it.
>
> However, I'd need to access some J

RE: Remote deployment of service assemblies

2007-03-20 Thread Rossmanith, Philipp

Hi,

> Once you have the JBIContainer, just retrieve the needed interface:
>   JBIContainer container = dci.getContainer();
>   AdminCommandsServiceMBean admin =
container.getAdminCommandsService();
>
> Then, you can use it to deploy / undeploy, manage life cycle, etc ..
>admin.installComponent()
>admin.startComponent()
>admin.listServiceAssemblies() ...
Ok, that is quite a bit cleaner...

> all the administrative tasks are available from this interface, so I
guess
> the WSDL
> should be quite easy to write.  On the implementation side, one way is
to
> use
> jaxb2 (not the full jsr181 though) as done in the WS-Notification
> component.
> See org.apache.servicemix.wsn.component.WSNEndpoint class.
What I was thinking about was a WSDL wrapper around the
AdminCommandsServiceMBean methods.

I'm currently investigating the WSN component to use it for
notifications based on message content (see
http://www.nabble.com/how-to-implement-runtime-notifications-based-on-Me
ssageExchange--content-tf3409844s12049.html), but I must say I'm afraid
I don't really understand your idea (which may be due to my limited
experience with jaxb2).

It seems to me that the wsn component WSNEndpoint uses the annotations
done in the org.apache.servicemix.wsn.AbstractEndpoint hierarchy (an
object of this class is passed in as "pojo" in the constructor) to
obtain a class object "endpointInterface" which is then used to get hold
of the methods published in that interface. Jaxb2 seems to be used to
unmarshal incoming normalized message content and to marshal it to
outgoing exchanges (method: process).

However, if I'm ""only"" writing a provider service and not a
full-fledged component, what would be the advantages of the approach
taken in WSNEndpoint?

Or am I misinterpreting, and you're using jaxb2 for creating a jsr181
code skeleton based on a previously generated WSDL?

> .. and discussions about servicemix developement should take place on
the
> dev
> list ... ;-)
Done :-)

Thanks in advance,
Ciao,
Philipp

> -Mensaje original-
> De: Guillaume Nodet [mailto:[EMAIL PROTECTED]
> Enviado el: lunes, 19 de marzo de 2007 16:56
> Para: servicemix-users@geronimo.apache.org
> Asunto: Re: Remote deployment of service assemblies
> Importancia: Baja
>
> On 3/19/07, Rossmanith, Philipp <[EMAIL PROTECTED]>
wrote:
> >
> >
> > > Currently, remote deployment is not supported by the ant tasks.
> > > The only way to do currently that is to start a servicemix console
> > > on the same server, because the console accepts uploads and will
> > > be able to point the container to a local file.
> > >
> > > The only way using JMX would be to add a method accepting a byte[]
> > > parameter which would be the content of the JBI artifact to
deploy, or
> > > creating an management endpoint on the JBI bus (using an
attachment
> > > for the JBI archetype).  Not sure what's the best way.
> > I was thinking about this alternative, as well. There could be a
> > provider service that accepts calls having an SA attachment. It
could
> > then obtain this attachment and physically place it in the
deployment
> > dir.
>
>
> Using the hot deployer is imo not the best solution.
> We should use the AdminCommandsService instead (see below)
>
> In that way, one could use the same access control mechanism as for
the
> > rest of the service invocations. Another advantage would be that
through
> > the different binding components, the functionality would be
available
> > in more than just Java.
>
>
> Yeah, agreed. We just need to define a  clean WSDL for it.
>
> However, I'd need to access some JBIContainer properties, such as the
> > deployment directory. I assume that the best way to obtain internals
> > about the JBI container would be to use the client API
> > (http://incubator.apache.org/servicemix/client-api.html).
> >
> > I could then use the following code:
> > >>
> > ...
> > DeliveryChannelImpl dci = (DeliveryChannelImpl)
> > defaultSMClientInstance.getDeliveryChannel();
> > JBIContainer container = dci.getContainer();
> > ...
> > String deploymentDirPath = container.getDeploymentDirPath();
> > ...
> > <<
> >
> > However, this hack seems quite (if not: too) dirty. Is there a more
> > elegant solution?
>
>
>
> Once you have the JBIContainer, just retrieve the needed interface:
>   JBIContainer container = dci.getContainer();
>   AdminCommandsServiceMBean admin =
container.getAdminCommandsService();
>
> Then, you can use it to deploy / undeploy, manage life cycle, etc ..
>admin.installComponen