The client API that you are using only works inside the JBI bus.
And it does not much than what you would do using a JAXWS client
generated from the WSDL using CXF.  The api is just a tad simpler and
minimize the amount of parameters needed to perform the calls, but
still you need to create the pull point, register it, etc...
If you don't need dynamic registrations and pull points, you can just
create and deploy them in a SU on servicemix and just use soap to
retrieve the messages from the pullpoint.

On 9/21/07, Ryan Moquin <[EMAIL PROTECTED]> wrote:
> I realize that, but the classes were already generated and included by
> servicemix.  Is there a reason why I'd want to regenerate them rather than
> use what servicemix has already included?  Since servicemix supports
> pullpoints, I would assume that it also contains a client.  I would rather
> just use what's there, if something is already there.  I could go the way of
> generating the objects and then calling the methods to get the notifications
> from the pullpoint, but from what I'm understanding, a pullpoint is just
> that, something that needs pulled from (initiated from the client side, such
> as polling).  This means a lot more maintenance on the client side and
> opportunity for bugs or problems (need to manage a thread, subscriptions and
> whatever else comes up .  I'd rather have an already tested client to handle
> this for me since it's less maintenance on my end.
>
> On 9/20/07, Guillaume Nodet <[EMAIL PROTECTED]> wrote:
> >
> > You forgot that WS-Notification just specifies a web service, which
> > means it defines a WSDL.  The jaxb pojos are generated from the WSDL,
> > so you should be able to use whichever wsdl2java tool.
> > Then you should be able to call the WS-NotificationBroker using your CXF
> > client.
> >
> > On 9/21/07, Ryan Moquin <[EMAIL PROTECTED]> wrote:
> > > Right, I have the soap endpoint, but what I'm wondering, is in the
> > > servicemix-wsn2005 jar there are all the already generated jaxb classes,
> > is
> > > there a client in there I can use to handle the subscription and pulling
> > > notifications for me?  Or are my options, manually sending soap or
> > finding a
> > > 3rd party WSN client library.  It doesn't appear CXF has support for it.
> > >
> > > On 9/20/07, Guillaume Nodet <[EMAIL PROTECTED]> wrote:
> > > >
> > > > From outside the JBI bus, you would deploy an http/soap binding and
> > > > have your external client subscribe / publish through soap.
> > > > See http://incubator.apache.org/servicemix/example-scenario.html
> > > >
> > > > On 9/21/07, Ryan Moquin <[EMAIL PROTECTED]> wrote:
> > > > > Yeah, I was wondering how this ever worked as well because it really
> > > > does
> > > > > make it look like it shouldn't ever work, but I figured there must
> > be
> > > > > something going on here as a result of something I'm doing.
> > > > >
> > > > > I think that would be a good idea since jaxb objects seem to be the
> > > > default
> > > > > anyhow.  It can't get any worse than a marshaller that didn't work
> > > > anyhow.
> > > > > :)
> > > > >
> > > > > I did raise a jira, and I'll update it with your explanation (to
> > make it
> > > > > more clear what's really happening) and then I'll get a patch taken
> > care
> > > > of
> > > > > tonight since I really really need to get past this whole sending
> > > > > notifications thing and on to something else and attach it to the
> > jira.
> > > > :)
> > > > >
> > > > > While I'm at it, if I want to programmatically subscribe from an
> > > > appserver,
> > > > > do I go and create an instance of NotificationBroker?  Or is there
> > > > another
> > > > > class that I should be creating from my appserver to create the
> > > > > subscription?
> > > > >
> > > > > On 9/20/07, Guillaume Nodet <[EMAIL PROTECTED]> wrote:
> > > > > >
> > > > > > I was a bit puzzled when I first read your mail because this would
> > > > > > have implied that the NotificationBroker has never worked :-(  But
> > now
> > > > > > I've understood the problem.
> > > > > > If you give a JBIContainer or ComponentContext when constructing
> > the
> > > > > > NotifiationBroker object, it creates a client with a JAXBMarshaler
> > > > > > which overrides the very method that fails.  Unfortunately, when
> > > > > > giving a ServiceMixClient, the marshaler is not changed and the
> > > > > > DefaultMarshaler is used.
> > > > > > I guess it should be possible to set a jaxb marshaler on the
> > client
> > > > > > before constructing the NotificationBroker to workaround your
> > > > > > problem...  but I guess it would be better if the the marshaler is
> > > > > > automatically set to a JAXB one instead.
> > > > > >
> > > > > > I suppose the same thing may happen with the other class in the
> > wsn
> > > > > > client api...
> > > > > > Wanna raise a jira and provide a patch ?
> > > > > >
> > > > > > On 9/21/07, Ryan Moquin <[EMAIL PROTECTED]> wrote:
> > > > > > > Ok, I think this is a bug in some form (that the very least and
> > > > > > exception or
> > > > > > > message should be logged).  It appears that servicemix doesn't
> > like
> > > > my
> > > > > > > object is silently tosses it into the trash:
> > > > > > >
> > > > > > > This method (in NotificationBroker) gets executed with my object
> > and
> > > > a
> > > > > > > org.oasis_open.docs.wsn.b_2.Notify is constructed:
> > > > > > >
> > > > > > > public void notify(String topic, Object msg) throws JBIException
> > {
> > > > > > >         Notify notify = new Notify();
> > > > > > >         NotificationMessageHolderType holder = new
> > > > > > > NotificationMessageHolderType();
> > > > > > >         if (topic != null) {
> > > > > > >             TopicExpressionType topicExp = new
> > > > TopicExpressionType();
> > > > > > >             topicExp.getContent().add(topic);
> > > > > > >             holder.setTopic(topicExp);
> > > > > > >         }
> > > > > > >         holder.setMessage(new
> > NotificationMessageHolderType.Message
> > > > ());
> > > > > > >         holder.getMessage().setAny(msg);
> > > > > > >         notify.getNotificationMessage().add(holder);
> > > > > > >         send(notify);
> > > > > > >     }
> > > > > > >
> > > > > > > Eventually this method gets executed (in DefaultMarshaller) with
> > the
> > > > > > Notify
> > > > > > > object that was created as the parameter in body, but since the
> > > > Notify
> > > > > > > object isn't an instance of any of the 3 things it's looking
> > for, it
> > > > > > returns
> > > > > > > null (actually the message variable isn't even used in this
> > method):
> > > > > > >
> > > > > > > protected Source asContent(NormalizedMessage message, Object
> > body) {
> > > > > > >         if (body instanceof Source) {
> > > > > > >             return (Source) body;
> > > > > > >         } else if (body instanceof String) {
> > > > > > >             // lets assume String is the XML to send
> > > > > > >             return new StringSource((String) body);
> > > > > > >         } else if (body instanceof Node) {
> > > > > > >             return new DOMSource((Node) body);
> > > > > > >         }
> > > > > > >         return null;
> > > > > > >    }
> > > > > > >
> > > > > > > This null then is put into the message variable as the content
> > (line
> > > > 56
> > > > > > on
> > > > > > > DefaultMarshaller), hence my object gets tossed:
> > > > > > >
> > > > > > > Source content = asContent(message, body);
> > > > > > >             message.setContent(content);
> > > > > > >
> > > > > > > This was all called by DefaultServicemixClient, which returns
> > back
> > > > to
> > > > > > the
> > > > > > > following method, with the in variable now populated with null
> > as
> > > > the
> > > > > > > content:
> > > > > > >
> > > > > > > protected void populateMessage(MessageExchange exchange, Map
> > > > > > > exchangeProperties,
> > > > > > >                                    Map inMessageProperties,
> > Object
> > > > > > content)
> > > > > > > throws MessagingException {
> > > > > > >         NormalizedMessage in = exchange.getMessage("in");
> > > > > > >         populateExchangeProperties(exchange,
> > exchangeProperties);
> > > > > > >         populateMessageProperties(in, inMessageProperties);
> > > > > > >         getMarshaler().marshal(exchange, in, content);
> > > > > > >     }
> > > > > > >
> > > > > > > I'll jira this since an action item of some kind should
> > definitely
> > > > be
> > > > > > done,
> > > > > > > I'd go ahead and patch it but I'm not completely sure what kind
> > of
> > > > class
> > > > > > > it's expecting in the asContent method yet.
> > > > > > >
> > > > > > > On 9/20/07, Ryan Moquin <[EMAIL PROTECTED]> wrote:
> > > > > > > >
> > > > > > > > I did debug my app and it is submitting an object that is not
> > > > null,
> > > > > > which
> > > > > > > > is why this is puzzling.  Initially I thought maybe I was
> > trying
> > > > to
> > > > > > through
> > > > > > > > a null object in there.  I'll do some poking around and see if
> > I
> > > > can
> > > > > > find
> > > > > > > > where it might be going haywire.
> > > > > > > >
> > > > > > > > On 9/20/07, Guillaume Nodet <[EMAIL PROTECTED]> wrote:
> > > > > > > > >
> > > > > > > > > The client does not send anything for an unknown reason.
> > > > > > > > > You can see that because the in message has a null content.
> > > > > > > > > This is what causes the exception.
> > > > > > > > > I suggest to remote debug the app to see what happens...
> > > > > > > > > Just set the environment variable SERVICEMIX_DEBUG to TRUE,
> > > > launch
> > > > > > > > > servicemix and debug from eclipse or your favorite ide...
> > > > > > > > >
> > > > > > > > > On 9/20/07, Ryan Moquin <[EMAIL PROTECTED] > wrote:
> > > > > > > > > > I don't get much more, but here is what I see now:
> > > > > > > > > >
> > > > > > > > > > DEBUG - WSNComponent                   - Received
> > exchange:
> > > > > > status:
> > > > > > > > > Active,
> > > > > > > > > > role: provider
> > > > > > > > > > DEBUG - WSNComponent                   - Retrieved
> > correlation
> > > > id:
> > > > > > > > > null
> > > > > > > > > > ERROR - WSNComponent                   - Error processing
> > > > exchange
> > > > > > > > > InOnly[
> > > > > > > > > >   id: ID:10.40.16.154-1152419544a-28:1
> > > > > > > > > >   status: Active
> > > > > > > > > >   role: provider
> > > > > > > > > >   endpoint: Broker
> > > > > > > > > >   in: null
> > > > > > > > > > ]
> > > > > > > > > > java.lang.IllegalArgumentException: source parameter must
> > not
> > > > be
> > > > > > null
> > > > > > > > > >         at
> > > > > > javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(
> > > > > > > > > > AbstractUnmarshallerImpl.java:98)
> > > > > > > > > >         at
> > > > org.apache.servicemix.wsn.component.WSNEndpoint.process
> > > > > > (
> > > > > > > > > > WSNEndpoint.java:128)
> > > > > > > > > >         at
> > > > > > org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(
> > > > > > > > > > AsyncBaseLifeCycle.java:538)
> > > > > > > > > >         at
> > > > > > > > >
> > org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(
> > > > > > > > > > AsyncBaseLifeCycle.java:490)
> > > > > > > > > >         at
> > > > > > > > > org.apache.servicemix.common.BaseLifeCycle.onMessageExchange
> > (
> > > > > > > > > > BaseLifeCycle.java:46)
> > > > > > > > > >         at
> > > > > > > > > >
> > > > > >
> > org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound
> > > > > > > > > (
> > > > > > > > > > DeliveryChannelImpl.java:610)
> > > > > > > > > >         at
> > > > > > org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(
> > > > > > > > > > AbstractFlow.java :170)
> > > > > > > > > >         at
> > > > > > org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(
> > > > > > > > > > SedaFlow.java:167)
> > > > > > > > > >         at
> > > > org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run
> > > > > > (
> > > > > > > > > > SedaQueue.java:134)
> > > > > > > > > >         at
> > > > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(
> > > > > > > > > > ThreadPoolExecutor.java:650)
> > > > > > > > > >         at
> > java.util.concurrent.ThreadPoolExecutor$Worker.run(
> > > > > > > > > > ThreadPoolExecutor.java:675)
> > > > > > > > > >         at java.lang.Thread.run (Thread.java:595)
> > > > > > > > > > DEBUG - DeliveryChannelImpl            - Send ID:
> > > > > > > > > 10.40.16.154-1152419544a-28:1
> > > > > > > > > > in DeliveryChannel{servicemix-wsn2005}
> > > > > > > > > > DEBUG - SedaFlow                       - Called Flow send
> > > > > > > > > > DEBUG - SedaQueue                      -
> > > > > > > > > >
> > > > [EMAIL PROTECTED]
> > > > > > > > > > exchange: I
> > > > > > > > > > nOnly[
> > > > > > > > > >   id: ID:10.40.16.154-1152419544a-28:1
> > > > > > > > > >   status: Error
> > > > > > > > > >   role: consumer
> > > > > > > > > >   endpoint: Broker
> > > > > > > > > >   in: null
> > > > > > > > > >   error: java.lang.IllegalArgumentException: source
> > parameter
> > > > must
> > > > > > not
> > > > > > > > > be
> > > > > > > > > > null
> > > > > > > > > > ]
> > > > > > > > > > DEBUG - DeliveryChannelImpl            - Notifying
> > exchange
> > > > ID:
> > > > > > > > > > 10.40.16.154-1152419544a-28:1(e99889) in DeliveryChannel{I
> > > > > > > > > > D:10.40.16.154-1152419544a-0:1} from
> > > > > > processInboundSynchronousExchange
> > > > > > > > > > DEBUG - DeliveryChannelImpl            - Notified: ID:
> > > > > > > > > > 10.40.16.154-1152419544a-28 :1(e99889) in
> > DeliveryChannel{ID:
> > > > > > 10.40.1
> > > > > > > > > > 6.154-1152419544a-0:1} from sendSync
> > > > > > > > > >
> > > > > > > > > > On 9/20/07, Guillaume Nodet <[EMAIL PROTECTED]> wrote:
> > > > > > > > > > >
> > > > > > > > > > > It seems that nothing is received by then
> > WS-Notification
> > > > > > component.
> > > > > > > > >
> > > > > > > > > > > Can you raise the log level to DEBUG and see what is
> > > > displayed ?
> > > > > > > > > > >
> > > > > > > > > > > On 9/20/07, Ryan Moquin <[EMAIL PROTECTED]> wrote:
> > > > > > > > > > > > It's actually the JAXB objects I generated with CXF
> > for my
> > > > > > > > > webservices.
> > > > > > > > > > > > Those should be JAXB2 elements.  They are the elements
> > I
> > > > > > return
> > > > > > > > > from my
> > > > > > > > > > > > webservice to a connected client.
> > > > > > > > > > > >
> > > > > > > > > > > > On 9/20/07, Guillaume Nodet < [EMAIL PROTECTED]> wrote:
> > > > > > > > > > > > >
> > > > > > > > > > > > > What kind of object do you send ? IIRC it has to be
> > a
> > > > DOM
> > > > > > > > > element or a
> > > > > > > > > > > > > JAXB2 pojo so that JAXB2 can marshal it to xml.
> > > > > > > > > > > > >
> > > > > > > > > > > > > On 9/20/07, Ryan Moquin <[EMAIL PROTECTED]>
> > wrote:
> > > > > > > > > > > > > > I'm having some trouble when attempting to publish
> > a
> > > > > > > > > > > notification.  When
> > > > > > > > > > > > > I
> > > > > > > > > > > > > > do, I get this error:
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > ERROR - WSNComponent                   - Error
> > > > processing
> > > > > > > > > exchange
> > > > > > > > > > > > > InOnly[
> > > > > > > > > > > > > >   id: ID:192.168.1.2-11520deb240-28:0
> > > > > > > > > > > > > >   status: Active
> > > > > > > > > > > > > >   role: provider
> > > > > > > > > > > > > >   endpoint: Broker
> > > > > > > > > > > > > >   in: null
> > > > > > > > > > > > > > ]
> > > > > > > > > > > > > > java.lang.IllegalArgumentException: source
> > parameter
> > > > must
> > > > > > not
> > > > > > > > > be
> > > > > > > > > > > null
> > > > > > > > > > > > > >         at
> > > > > > > > > javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal
> > > > > > > > > > > (
> > > > > > > > > > > > > > AbstractUnmarshallerImpl.java:98)
> > > > > > > > > > > > > >         at
> > > > > > > > > org.apache.servicemix.wsn.component.WSNEndpoint.process(
> > > > > > > > > > > > > > WSNEndpoint.java:128)
> > > > > > > > > > > > > >         at
> > > > > > > > > org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess
> > > > > > > > > > > (
> > > > > > > > > > > > > > AsyncBaseLifeCycle.java:538)
> > > > > > > > > > > > > >         at
> > > > > > > > > > > > >
> > > > > > org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(
> > > > > > > > > > > > > > AsyncBaseLifeCycle.java:490)
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > My code that causes this is:
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > private void sendNotification(Object notification)
> > {
> > > > > > > > > > > > > >     try {
> > > > > > > > > > > > > >       if(wsnBroker == null)
> > > > > > > > > > > > > >         createWsnBroker();
> > > > > > > > > > > > > >       wsnBroker.notify("notificationTopic",
> > > > notification);
> > > > > > > > > > > > > >     } catch (Exception e) {
> > > > > > > > > > > > > >       e.printStackTrace();
> > > > > > > > > > > > > >     }
> > > > > > > > > > > > > >   }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > I've looked and my notification object isn't null,
> > is
> > > > > > there
> > > > > > > > > > > something
> > > > > > > > > > > > > called
> > > > > > > > > > > > > > source somewhere that I need to set?
> > > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > --
> > > > > > > > > > > > > Cheers,
> > > > > > > > > > > > > Guillaume Nodet
> > > > > > > > > > > > > ------------------------
> > > > > > > > > > > > > Blog: http://gnodet.blogspot.com/
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > --
> > > > > > > > > > > Cheers,
> > > > > > > > > > > Guillaume Nodet
> > > > > > > > > > > ------------------------
> > > > > > > > > > > Blog: http://gnodet.blogspot.com/
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > > Cheers,
> > > > > > > > > Guillaume Nodet
> > > > > > > > > ------------------------
> > > > > > > > > Blog: http://gnodet.blogspot.com/
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Cheers,
> > > > > > Guillaume Nodet
> > > > > > ------------------------
> > > > > > Blog: http://gnodet.blogspot.com/
> > > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > Cheers,
> > > > Guillaume Nodet
> > > > ------------------------
> > > > Blog: http://gnodet.blogspot.com/
> > > >
> > >
> >
> >
> > --
> > Cheers,
> > Guillaume Nodet
> > ------------------------
> > Blog: http://gnodet.blogspot.com/
> >
>


-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/

Reply via email to