Hi Rachana,

I have dug deeper into this and have come to the following conclusion.

The error is thrown from the org.globus.wsrf.encoding.ObjectSerializer
class:
DEBUG impl.SimpleSubscriptionTopicListener
[ServiceThread-3,topicChanged:132]
java.lang.IllegalArgumentException: [JWSCORE-130] Argument name is null
at
org.globus.wsrf.encoding.ObjectSerializer.toSOAPElement(ObjectSerializer.java:91)
at
org.globus.wsrf.encoding.ObjectSerializer.toSOAPElement(ObjectSerializer.java:47)

This is, from the point of the ObjectSerializer, reasonable, as the
object that is passed in the toSOAPElement() call is neither an instance
of org.apache.axis.message.MessageElement nor of org.w3c.dom.Element,
hence the "Argument name is null" exception.

This occurs because the code in
org.globus.wsrf.impl.SimpleTopicSubscriptionListener has changed from

- snip from 4.0.7 org.globus.wsrf.impl.SimpleTopicSubscriptionListener -
// newValue is an Object (contains the message wrapper type)
NotificationMessageHolderType message[] = {
 new NotificationMessageHolderType()
};
message[0].setProducerReference(producerEndpoint);
message[0].setMessage(newValue);
- snip -

to the following:
- snip from 4.2.0 org.globus.wsrf.impl.SimpleTopicSubscriptionListener -
// newValue is an Object (contains the message wrapper type)
NotificationMessageHolderType message[] = {
 new NotificationMessageHolderType()
};
message[0].setProducerReference(producerEndpoint);
NotificationTypeConverter converter = new NotificationTypeConverter();
 MessageElement msgElem =
(MessageElement)converter.toSOAPElement(newValue);
// Error occurs here
if(msgElem == null)
msgElem = (MessageElement)ObjectSerializer.toSOAPElement(newValue);
NotificationMessageHolderTypeMessage msgHolder = new
NotificationMessageHolderTypeMessage(new MessageElement[] {
 msgElem
});
message[0].setMessage(msgHolder);
- snip -

So, now there is always a call to ObjectSerializer which fails because
the MessageWrapperType object cannot be converted to an Element or
MessageElement. I can basically get around the failure if I construct a
MessageElement by myself and using it to call notify() on the topic,
is this how it should be done now? Seems like a workaround too me, but at least I can receive notifications again. Should this be added to the
migration guide to 4.2.x?

Kind regards,

Roland

--
Dipl.-Inf. Roland Kübert

Höchstleistungsrechenzentrum Stuttgart
Universität Stuttgart
Nobelstraße 19
70569 Stuttgart

Phone:  +49 711 685 65802
Fax:    +49 711 685 65832
Skype:  rkuebert


Reply via email to