Yeah, otherwise it doesn't work at all.


Werner Guttmann-6 wrote:
> 
> Hi,
> 
> once again, does the Messaging.jar include the .castor.cdr files as well ?
> 
> Cheers
> Werner
> 
> enterpriseseven wrote:
>> Hmm,
>> 
>> Let me see if I can provide a little more information to help you
>> determine
>> if I'm just having a classpath issue.  I have a Messaging.jar file which
>> includes all of the messages (ex. FindFileRequestMessage) and JMessenger
>> (which has the unmarshal function).  This JAR file is included in the EAR
>> that I deploy to my Application Server (glassfish).  The MDBs in the EAR
>> that are using JMessenger to unmarshal messages are getting exceptions
>> stating that Castor is unable to find the messages.  How can this be a
>> classpath issue if the JAR file with the messages is contained within the
>> EAR?
>> 
>> Thanks,
>> Mike
>> 
>> 
>> 
>> enterpriseseven wrote:
>>> I only added the call to "addPackage()" because I was hoping it would
>>> resolve my issue...which it didn't.  Conditions a) and b) should be
>>> being
>>> met as it works if I marshal first and then unmarshal.  It just doesn't
>>> work if I only do an unmarshal.  For instance...
>>>
>>> If I do 
>>>
>>> Class.forName("FindFileRequestMessage")
>>>
>>> it fails, but if I do
>>>
>>> Class.forName("com.lmco.dogpatch.messaging.messages.FileFileRequestMessage")
>>>
>>> it works just fine.  If this is a classpath issue I'm not sure how to
>>> resolve it.
>>>
>>> Thanks,
>>> Mike
>>>
>>>
>>>
>>> Werner Guttmann-6 wrote:
>>>> Hi,
>>>>
>>>> why are you calling XMLContext.addPackage() at all. Castor XML is
>>>> perfectly capable to use classes as generated with the XML source
>>>> generator (from your XML schema) as long as ....
>>>>
>>>> a) those classes (POJOs as well as descriptor classes) are available on
>>>> the classpath.
>>>> b) the .castor.cdr files are available as well.
>>>>
>>>> Can you please try this again, making sure that conditions a) and b)
>>>> are
>>>> met.
>>>>
>>>> Regards
>>>> Werner
>>>>
>>>> enterpriseseven wrote:
>>>>> I have a test app that creates an instace of the message, marshalls it
>>>>> and
>>>>> then unmarshalls it.  That works fine.  The Marshalling process seems
>>>>> to
>>>>> add
>>>>> something to the environment...maybe a class loader...that allows
>>>>> unmarshalling to work.  However, the live code I use to unmarshall
>>>>> messages
>>>>> received via OpenMQ only does an unmarshall step.  I have tested my
>>>>> test
>>>>> app
>>>>> without the marshalling process and the unmarshalling fails.  The
>>>>> following
>>>>> is my unmarshal code in my live code:
>>>>>
>>>>>     public Serializable unmarshall(String xmlString)
>>>>>     {
>>>>>         StringReader reader = new StringReader(xmlString);
>>>>>         Object unmarshalledObject = null;
>>>>>         try {
>>>>>             unmarshalledObject = unmarshaller.unmarshal(reader);
>>>>>         } catch (MarshalException ex) {
>>>>>             ex.printStackTrace();
>>>>>         } catch (ValidationException ex) {
>>>>>             ex.printStackTrace();
>>>>>         }
>>>>>         if(unmarshalledObject instanceof Serializable)
>>>>>         {
>>>>>             return (Serializable)unmarshalledObject;
>>>>>         }
>>>>>         else
>>>>>         {
>>>>>             return null;
>>>>>         }
>>>>>     }
>>>>>
>>>>> The "xmlString" variable is retrieved from the payload (text field) of
>>>>> a
>>>>> TextMessage that was sent via OpenMQ.  The unmarshall function above
>>>>> lives
>>>>> in a "JMessenger" class that I have written and the initialization
>>>>> code
>>>>> is
>>>>> as follows:
>>>>>
>>>>>             xmlCtx = new XMLContext();
>>>>>             try {
>>>>>                 xmlCtx.addPackage(MESSAGES_NAMESPACE);
>>>>>
>>>>>             } catch (ResolverException ex) {
>>>>>                 System.out.println(ex);
>>>>>             }
>>>>>             marshaller = xmlCtx.createMarshaller();
>>>>>             marshaller.setSuppressNamespaces(true);
>>>>>             unmarshaller = xmlCtx.createUnmarshaller();
>>>>>
>>>>> xmlCtx is a org.exolab.castor.xml.XMLContext
>>>>> MESSAGES_NAMESPACE = "com.lmco.dogpatch.messaging.messages"
>>>>>
>>>>> Thanks,
>>>>> Mike
>>>>>
>>>>>
>>>>>
>>>>> Werner Guttmann-6 wrote:
>>>>>> That should work our of the box. What does your code look like that
>>>>>> you
>>>>>> use to actually unmarshal your XML document instance ?
>>>>>>
>>>>>> Regards
>>>>>> Werner
>>>>>>
>>>>>> enterpriseseven wrote:
>>>>>>> Hey,
>>>>>>> - I am using Castor 1.3
>>>>>>> - Schema is as follows:
>>>>>>>
>>>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>>> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
>>>>>>>     <xsd:element name="FindFileRequestMessage">
>>>>>>>         <xsd:complexType>
>>>>>>>             <xsd:sequence>
>>>>>>>                 <xsd:element name="fileID" type="xsd:long"/>
>>>>>>>             </xsd:sequence>
>>>>>>>         </xsd:complexType>
>>>>>>>     </xsd:element>
>>>>>>> </xsd:schema>
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Mike
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Werner Guttmann wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> you should not have to alter the .castor.cdr files at all after
>>>>>>>> source
>>>>>>>> generation.
>>>>>>>>
>>>>>>>> A few general questions:
>>>>>>>>
>>>>>>>> - What version of Castor are you using ?
>>>>>>>> - What does the XML schema fragment look like for these XML
>>>>>>>> artefacts
>>>>>>>> ?
>>>>>>>>
>>>>>>>> Regards
>>>>>>>> Werner
>>>>>>>>
>>>>>>>> enterpriseseven wrote:
>>>>>>>>> I am trying to unmarshal this:
>>>>>>>>>
>>>>>>>>> <FindFileRequestMessage>
>>>>>>>>>   <fileID>12</fileID>
>>>>>>>>> </FindFileRequestMessage>
>>>>>>>>>
>>>>>>>>> The CDR file has this mapping:
>>>>>>>>>
>>>>>>>>> com.lmco.dogpatch.messaging.messages.FindFileRequestMessage=com.lmco.dogpatch.messaging.messages.descriptors.FindFileRequestMessageDescriptor
>>>>>>>>>
>>>>>>>>> When I unmarshal I get "FindFileRequestMessage" not found.  But,
>>>>>>>>> if
>>>>>>>>> I
>>>>>>>>> change
>>>>>>>>> the CDR mapping to this:
>>>>>>>>>
>>>>>>>>> FindFileRequestMessage=com.lmco.dogpatch.messaging.messages.descriptors.FindFileRequestMessageDescriptor
>>>>>>>>>
>>>>>>>>> Then it unmarshalls perfectly (removed package name on the left). 
>>>>>>>>> But,
>>>>>>>>> I
>>>>>>>>> have to hack the CDR file to do this.  Is there a way to get the
>>>>>>>>> SourceGenerator to do this for me?  Or am I doing it wrong?
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Mike
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe from this list, please visit:
>>>>>>>>
>>>>>>>>     http://xircles.codehaus.org/manage_email
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe from this list, please visit:
>>>>>>
>>>>>>     http://xircles.codehaus.org/manage_email
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe from this list, please visit:
>>>>
>>>>     http://xircles.codehaus.org/manage_email
>>>>
>>>>
>>>>
>>>>
>>>
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
> 
>     http://xircles.codehaus.org/manage_email
> 
> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/Castor-CDR-file-issue-with-unmarshalling-tp26201269p26269925.html
Sent from the Castor - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to