Ah ok.  Maybe I'll just do that then to make quicker.

On 9/20/07, Guillaume Nodet <[EMAIL PROTECTED]> wrote:
>
> 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