1. Yes, the accept/process were called and the messages logged to the console.
2. I was using JDK 1.5.0 on Tomcat 5.0 on WinXP SP2. 3. org.apache.muse.util.xml contains a lot of XML utilities that were essential to building Muse, and I suspect a lot of users will find them useful. It seems every Java project that uses XML has such a set of DOM-based utilities - might as well reuse when possible. I will open a JIRA item for documentation of XmlUtils in the manual. In the meantime, the JavaDoc for that class is quite comprehensive. Dan "Gero Vermaas" <[EMAIL PROTECTED]> wrote on 10/18/2006 01:30:43 PM: > Thanks Daniel, I'm currently not at my development machine and probably will > not be the rest of the day. Couple of questions/comments to make sure I > understand everything correct and can continue tomorrow: > > * Do I understand it correct that after you made the changes/fixes described > in you mail the wsn-producer was able to sent the message and the wsn-consumer > did receive the message correct in the accept()/process() methods of the > ConsumerCapabilityImpl? > > * The fact that the XML was not loaded correctly when you ran the example is > probably due to a difference in our setups. The messages I had in the first > mail of the subject were logged by the producer and these did contain the > content retrieved from the XML file. What version of JDK and > ServletContainer/Appserver are you using? I was using JDK1.5_06 and Tomcat 5.5 > on Ubuntu Dapper Drake. (6.06) > > * I'll check the schema compliance issues and move the file to WEB-INF/services/muse > > * I must confess that I had some trouble to include the content of the XML > file in the message. I missed the helper methods on the XmlUtils class and > suspect that they also will make live easier. Thanks for pointing these out to me. > > Regards, > Gero > > > -----Original Message----- > From: Daniel Jemiolo [mailto:[EMAIL PROTECTED] > Sent: Wed 10/18/2006 6:35 PM > To: [email protected] > Subject: Re: Messages not accepted by WSN Consumer > > I saw this error in the console when I tried to load the trouble ticket > XML doc: > > > java.net.MalformedURLException > at java.net.URL.<init>(URL.java:601) > at java.net.URL.<init>(URL.java:464) > at java.net.URL.<init>(URL.java:413) > at > org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown So > urce) > at > org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown > Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown > Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown > Source) > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) > at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown > Source) > at org.apache.ws.muse.test.wsrf.MyCapabilityImpl$1.run(Unknown > Source) > > There were two problems: > > 1. Your use of .class to get the XML doc in the classpath was failing. > > 2. Your XML document is not schema compliant. > > At any rate, this exception ends the thread, so no messages are ever > published. That's why you see the consumer initialized but no XML ever > sent. > > I threw the XML doc into Eclipse's XML editor and it pointed me to two > issues: > > 1. Your xsi:schemaLocation attribute is not formatted properly. This > attribute is two URIs separated by a space - first one for the schema > namespace, second for the schema location. You only had the latter. > > 2. Once I fixed that, it started complaining that the <co:url/> element > was not compliant with the Common XSD imported by the TroubleTicket XSD. > First sub-problem was that you had quotes around the URI. I took those out > and it was still complaining. Second sub-problem I figured out after > looking at the Common XSD - the name of the element is <URL/>, not <url/> > (case sensitivity). With those issues resolved, the trouble ticket XML > fragment is compliant and is loaded by the parser. > > Once I fixed the schema compliance, there was the issue of loading the > file itself. I think that the .class system is not workign because Axis2 > has a separate class loader that overrides the J2EE class loader; because > Axis2 is a platform on top of J2EE, it keeps its services separate - > you're not supposed to share things through WEB-INF/classes. I moved the > XML doc from WEB-INF/classes to WEB-INF/services/muse. Then I added the > following code: > > File file = new File(getEnvironment().getRealDirectory(), > "troubleTicketCreateEvent.xml"); > Document doc = XmlUtils.createDocument(file); > Element payload = XmlUtils.getFirstElement(doc); > > This allowed me to load the doc correctly, and now the messages are sent > with your payload. getEnvironment().getRealDirectory() returns the File > for WEB-INF/services/muse. > > To summarize: make the minor changes to make the doc schema compliant, > move the doc to WEB-INF/services/muse, and then use the code above to > access to it. > > Dan > > > > Dan Jemiolo > IBM Corporation > Research Triangle Park, NC > > > +++ I'm an engineer. I make slides that people can't read. Sometimes I eat > donuts. +++ > > > > Gero Vermaas <[EMAIL PROTECTED]> wrote on 10/18/2006 03:13:32 AM: > > > Daniel, > > > > Just curious, have you been able to reproduce the issue using the files > > a provided? > > > > Regards, > > Gero > > > > Gero Vermaas wrote: > > > Mmm... that a tough question cause I refactored the examples to Maven > > > based build, but... I reproduced the issue in the original samples, > > > see attached the modified/added files. For completeness I also created > > > > a zip file containing both sample projects, this can be downloaded at > > > http://gerodt.homeip.net/wsn-samples.zip (this file is ~45M, but the > > > attached files should enable you to reproduce it). > > > > > > Changed in wsn-consumer: > > > > > > * Added 'run' target in build.xml > > > > > > Changed in wsn-producer: > > > > > > * Added file 'troubleTicketCreateEvent.xml' to root dir of the > > > wsn-producer project (next to build.xml etc) > > > * Added copy step to to build.xml include > > > 'troubleTicketCreateEvent.xml' in WEB-INF/classes > > > * Changed the run() method in > > > src/org/apache/ws/muse/test/wsrf/MyCapabilityImpl.java to > > > include the contents of 'troubleTicketCreateEvent.xml' in the > > > notify message (and added imports) > > > > > > Build and deploy both wars (I used tomcat) and then do a 'ant run' for > > > > the wsn-consumer. > > > > > > If you take the original wsn-producer.war file you will see 'INFO: > > > Received message:... ' messages in the catalina.out file of Tomcat. > > > The messages are logged by the ConsumerCapabilityImpl class of the > > > wsn-consumer. > > > > > > Once you deploy the modified wsn-producer that sends the contents of > > > the 'troubleTicketCreateEvent.xml' as notification, the 'INFO: > > > Received message:... ' messages will no longer be logged and the > > > accept() and process() messages in the consumer are no longer being > > > invoked. > > > > > > Thanks for looking into it. > > > > > > Regards, > > > Gero > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
