Hi, I found a problem of SOAP action between 3.3.3 and latest nighty build (4.1.x). With a same LZX application and using SOAP data I/F. 3.3.3 could send data to LPS, but the nighty could not. ex. send data 'burabura' debugging 'lzpostbody' in SOAPDataSource.java on 3.3.3: <some tag>[![CDATA[burabura]]</some tag> on 4.1.x: <some tag/> * in effect, those data were encoded.
SOAPDataSource.java had not any changes between them. Are there some changing data interface specifications? I confirmed it was OK till 4.0.3, but 4.0.5 and later were NG. Regards, Keiji Ono Henry Minsky wrote: > > > On 10/30/07, keiji Ono <[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]>> wrote: > > I have checked Apache-Axis library. And i knew where it was > implemented > but at the same time > i did not understand about my issue whether it was a spec or bug. > Then i > will ask it for Axis forum. > Thank you for everything. > > BTW, i have been seeing OpenLaszlo source code by now, i would like to > confirm and gather up my *understanding* on processing SOAP data. If > this is incorrect, please correct me. > > Issue: procedure SOAP message data to provide to client > Example data: <data tag>burabura data</data tag> > Process: > 1. read SOAP data ( like the example data ) > 2. disintegrate in tag and data > 3. the data will be converted to Flash data format > 4. reassemble the tag and the data > 5. put it out it to client by HttpServletResponse > > But i did not find the point of *reassemble* clearly. > > > Hello Keiji, > > I was probably the last person to touch the SOAP code, when I > added support for the DHTML runtime. > > In SWF, the SOAP data is converted to flash, using the old data > compiler which used to be used for XML data, but is no longer used for > that. > > In the DHTML version of the SOAP code, the data is converted to > JSON format. This might be easier to understand than the swf code > paths, if you look at the > output that is sent to the client. It is a JSON string which is just a > combination of string, number, and arrays and objects. > > > It had been my intention to rewrite the SOAP server code for the SWF > runtime, so that > instead of using the old data compiler, it would instead just use the JSON > format that we now use for DHTML, and compile the JSON string to swf > with the regular "script compiler" that all the other Laszlo code goes > through. This would simplify > the code substantially on the server, as it would eliminate the two > duplicate > code paths that exist now for SWF and DHTML. Unfortunately I have not had > time to do that. > > Henry > > > > > Best, > Keiji Ono > > ??? wrote: > > > We use "apache-axis" for this server-side job, see i.e. at > > > > org.openlaszlo.remote.swf.soap.encoding.SOAPDataEncoder#buildHeaders(org.apache.axis.message.SOAPHeader > ). > > > > > > So I guess you need to check the "axis.jar" (JavaDoc: > > > > "http://ws.apache.org/axis/java/apiDocs/org/apache/axis/message/package-summary.html > > <http://ws.apache.org/axis/java/apiDocs/org/apache/axis/message/package-summary.html>") > > to get any further. > > > > - Andr??? > > > >> Hi Ben, > >> > >> Thank you for your reply. > >> Yes, i also found your point and i was searching the > implementation. > >> If it did not implement in OpenLaszlo source, it must came from > >> saaj.jar or other jars. > >> As far as i know, this class declared as Interface class in > SAAJ, so > >> i wondered > >> where did it implement. > >> In your opinion, OpenLaszlo depend on the standard of JARs, right? > >> If so, i would appreciate it if you gave me the information about > >> JARs version and so on. > >> > >> Best, > >> Keiji Ono > >> > >> Benjamin Shine wrote: > >> > >> >/ > >> />/ It looks to me like SOAPElement is imported from />/ > >> javax.xml.soap.SOAPElement: > >> />/ > >> />/ $ grep SOAPElement `find . -name "SOAP*.java"` > >> />/ ... > >> />/ > ./WEB-INF/lps/server/src/org/openlaszlo/remote/swf/soap/encoding/ > >> />/ SOAPDataEncoder.java : > >> />/ import javax.xml.soap.SOAPElement; > >> />/ ... > >> />/ > >> />/ So that implementation must come from one of the jars we ship > >> with, />/ but I don't know which one. > >> />/ > >> />/ Is this the information you were looking for? > >> />/ -ben > >> />/ > >> />/ > >> />/ On Oct 25, 2007, at 6:13 PM, keiji Ono wrote: > >> />/ > >> />>/ Hi > >> />>/ > >> />>/ I could make in focus on this issue. > >> />>/ I found the method of .getChildElements() was rejecting > all blanks > >> />>/ at the head and tail of SOAPElement class. > >> />>/ But as you know, SOAPElement class was declared by Interface > >> class in />>/ SAAJ. > >> />>/ As the next step, i checked how SOAPElement class had > >> implemented in />>/ OpenLaszlo. > >> />>/ but i could not find the point in OpenLaszlo source. > >> />>/ If i could find it, i could know it whether it was bug or > spec. > >> />>/ Hey Server Side Men, could you give some hints for me? > >> />>/ > >> />>/ Best, > >> />>/ Keiji Ono > >> />>/ > >> />>/ keiji Ono wrote: > >> />>/ > >> />>>/ I have been continuing to solve this issue. > >> />>>/ And i look at the point of the suspicious, but i could > not know > >> it />>>/ clearly. > >> />>>/ At the point is in SOAPDataEncoder.java. > >> />>>/ The 'issue' code is in the method of _traverseDOM(). > >> />>>/ > >> />>>/ SOAPDataEncoder.java _traverseDOM() > >> />>>/ > >> />>>/ iter = el.getChildElements(); > >> />>>/ while(iter.hasNext()){ > >> />>>/ Object o = iter.next(); <---- 1 > >> />>>/ if( Text.class.isInstance(o) ){ > >> />>>/ characters(((Text)o).getValue() ); <---- 2 > >> />>>/ }else{ > >> />>>/ . > >> />>>/ . > >> />>>/ } > >> />>>/ } > >> />>>/ > >> />>>/ At the point of 1, when the Object o contained a string > >> />>>/ "<sometag><![CDATA[ Text Strings]]></sometag>", > >> />>>/ .getValue() at the point of 2 got the string "Text > Strings" and > >> />>>/ set it to the method of characters(). The characters() > >> />>>/ push it to client through FlashBuffer class. > >> />>>/ The issue of it is the blank of the start strings has been > >> rejected />>>/ by getValue(). > >> />>>/ > >> />>>/ I do not know whether this is the specification of getValue() > >> of />>>/ org.apache.xml.message.Text class. > >> />>>/ Is not there the person knowing a lot about this? > >> />>>/ > >> />>>/ Keiji Ono > >> />>>/ > >> />>>>/ Hummm, it did not effect to the log file. > >> />>>>/ Basically, i did not use multibyte data, so whichever use > >> UTF-8 />>>>/ parameter in the properties file, > >> />>>>/ it did not effect to it, i think. > >> />>>>/ > >> />>>>/ BTW, the reason why i am taking this issue, because i > have a > >> />>>>/ trouble on SOAP data handling on LPS. > >> />>>>/ The trouble is like this. > >> />>>>/ When i sent data from a OpenLaszlo application, like ' > ABC' to > >> SOAP />>>>/ server, but the return was > >> />>>>/ 'ABC'. Pay attention this, LPS cut out those spaces of > the data. > >> />>>>/ I traced how to treat the data in LPS, so i reached > >> FileUtil.java. />>>>/ I know the data from SOAP server > >> />>>>/ to LPS are correct, that mean the data has the spaces. > >> />>>>/ > >> />>>>/ Any advances. Thank you. > >> />>>>/ > >> />>>>/ Keiji Ono > >> />>>>/ > >> />>>>/ > >> />>>>/ P T Withington wrote: > >> />>>>/ > >> />>>>>/ I wonder if the problem is that log4j is not configured for > >> UTF8? />>>>>/ I found this with Google: > >> />>>>>/ > >> />>>>>>/ Debugging can be fun with high byte characters as > generally > >> />>>>>>/ logging to a console isn't going to show you the > characters > >> you />>>>>>/ are expecting. If you did this: > >> />>>>>>/ > >> />>>>>>/ System.out.println(new String(new byte[] { -28, -72, > >> -83},"UTF-8") > >> />>>>>>/ > >> />>>>>>/ Then you'd probably just see a ? rather than the Chinese > >> />>>>>>/ character that it really should be. However, you can make > >> log4j />>>>>>/ log UTF-8 messages. Just add > >> />>>>>>/ > >> />>>>>>/ <param name="Encoding" value="UTF-8"/> > >> />>>>>>/ > >> />>>>>>/ To the appender in your log4j.xml config. Or this: > >> />>>>>>/ > >> />>>>>>/ log4j.appender.myappender.Encoding=UTF-8 > >> />>>>>>/ > >> />>>>>>/ To your log4j.properties file. You might still only > see the > >> UTF-8 />>>>>>/ data properly if you view the log file in an > editor/ > >> viewer that />>>>>>/ can view UTF-8 data (Windows notepad is ok for > >> instance). > >> />>>>>/ > >> />>>>>/ > >> />>>>>/ > >> />>>>>/ > >> />>>>>/ > >> />>>>>/ [Java UTF???????????????????????????8 international > character > >> />>>>>/ support with Tomcat and Oracle, 26/03/07, Kieran's > >> blog](http:// />>>>>/ blogs.warwick.ac.uk/kieranshaw/entry/ > <http://blogs.warwick.ac.uk/kieranshaw/entry/> />>>>>/ > >> utf-8_internationalisation_with/) > >> />>>>>/ > >> />>>>>/ Also, I wonder if using the Firebug extension to Firefox > >> might />>>>>/ help. Using the Net pane, you should be able to > see the > >> content of />>>>>/ the http get. > >> />>>>>/ > >> />>>>>/ On 2007-09-27, at 20:20 EDT, keiji Ono wrote: > >> />>>>>/ > >> />>>>>>/ Who dose maintenance this Java file ? > >> />>>>>>/ If you give me a little tip, i can progress on it. > >> />>>>>>/ > >> />>>>>>/ keiji Ono wrote: > >> />>>>>>/ > >> />>>>>>>/ Ben, > >> />>>>>>>/ > >> />>>>>>>/ Thank you for your suggestion, but i tried already it on > >> 4.0.5 />>>>>>>/ as a trial , > >> />>>>>>>/ but it did not work on it. > >> />>>>>>>/ I know it worked till on 4.0.3. :@ > >> />>>>>>>/ > >> />>>>>>>/ It will be good if i can give you a sample code of it > , but > >> as />>>>>>>/ you know > >> />>>>>>>/ it is not > >> />>>>>>>/ easy to give SOAP sample. > >> />>>>>>>/ And our application is now working on 3.3.3, so i would > >> like to />>>>>>>/ try on > >> />>>>>>>/ 3.3.3. > >> />>>>>>>/ > >> />>>>>>>/ I am thinking as following steps now. > >> />>>>>>>/ 1. Check it on 3.3.3 > >> />>>>>>>/ 2. If i find looks like bug in it, i will change it. > >> />>>>>>>/ 3. Then i am going to look at 4.0.5 source. > >> />>>>>>>/ > >> />>>>>>>/ So could you give some advance? > >> />>>>>>>/ Thank you. > >> />>>>>>>/ > >> />>>>>>>/ Keiji ono > >> />>>>>>>/ > >> />>>>>>>/ Benjamin Shine wrote: > >> />>>>>>>/ > >> />>>>>>>/ > >> />>>>>>>/ > >> />>>>>>>>/ Keiji, I suggest you work with lps-4.0.5. It is the most > >> />>>>>>>>/ current, and > >> />>>>>>>>/ we are more likely to be familiar with the code that > >> you're />>>>>>>>/ working > >> />>>>>>>>/ with. See > >> />>>>>>>>/ http://www.openlaszlo.org/node/383 > <http://www.openlaszlo.org/node/383> > >> />>>>>>>>/ for the announcment. > >> />>>>>>>>/ > >> />>>>>>>>/ -ben > >> />>>>>>>>/ > >> />>>>>>>>/ On Sep 26, 2007, at 5:03 AM, keiji Ono wrote: > >> />>>>>>>>/ > >> />>>>>>>>/ > >> />>>>>>>>/ > >> />>>>>>>>>/ Adding, it was the source of lps-3.3.3, and the > data was > >> not />>>>>>>>>/ multibyte > >> />>>>>>>>>/ character. > >> />>>>>>>>>/ > >> />>>>>>>>>/ Keiji Ono > >> />>>>>>>>>/ > >> />>>>>>>>>/ > >> />>>>>>>>>/ > >> />>>>>>>>>>/ Hi all, > >> />>>>>>>>>>/ > >> />>>>>>>>>>/ I am checking about Input/Output data on LPS now. > >> />>>>>>>>>>/ Because when i take SOAP interface on my application, > >> the />>>>>>>>>>/ getting data > >> />>>>>>>>>>/ is wrong. > >> />>>>>>>>>>/ Then i would like to check data where output from LPS. > >> />>>>>>>>>>/ At the point of FileUtils.java, i add some code like > >> following > >> />>>>>>>>>>/ (BlockName-A). > >> />>>>>>>>>>/ But it got unreadable data to write lps.log as > following. > >> />>>>>>>>>>/ How can i get 'readable' log on lps.log ? > >> />>>>>>>>>>/ > >> />>>>>>>>>>/ <checking code on FileUtils.java> > >> />>>>>>>>>>/ public static int sendToStream(InputStream input, > >> />>>>>>>>>>/ OutputStream output, int size) > >> />>>>>>>>>>/ throws IOException { > >> />>>>>>>>>>/ int c = 0; > >> />>>>>>>>>>/ byte[] buffer = new byte[size]; > >> />>>>>>>>>>/ int b = 0; > >> />>>>>>>>>>/ while(true) { > >> />>>>>>>>>>/ try { > >> />>>>>>>>>>/ // Until end of stream > >> />>>>>>>>>>/ if ((b = input.read(buffer)) <= 0) { > >> />>>>>>>>>>/ return c; > >> />>>>>>>>>>/ } > >> />>>>>>>>>>/ } catch (IOException e) { > >> />>>>>>>>>>/ throw new StreamReadingException( e.getMessage()); > >> />>>>>>>>>>/ } > >> />>>>>>>>>>/ c += b; > >> />>>>>>>>>>/ try { > >> />>>>>>>>>>/ output.write(buffer, 0, b); > >> />>>>>>>>>>/ > >> />>>>>>>>>>/ //=== adding from here BlockName-A > >> />>>>>>>>>>/ { > >> />>>>>>>>>>/ String aString = new String(buffer, "UTF-8"); > >> />>>>>>>>>>/ mLogger.debug( "OUTPUT: " + aString ); > >> />>>>>>>>>>/ } > >> />>>>>>>>>>/ //=== to here > >> />>>>>>>>>>/ > >> />>>>>>>>>>/ <lps.log> > >> />>>>>>>>>>/ OUTPUT: FWS 4xF?` > >> />>>>>>>>>>/ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx? ??0 _m _t CSPCHD id > >> />>>>>>>>>>/ AddLongResponse AddLongResult ?_m _root /?_m N > >> ?_t >>>>>>>>>>/ _root /? > >> >>>>>>>>>>/ _t N > >> /??_root ? > >> >>>>>>>>>>/ _rootndi RL?C? =L?C? =L?; > >> />>>>>>>>>>/ > >> 0000000100001gUD5zy4000000XKonfBejSj6FIgaG0jaWHQ-- = ? > >> />>>>>>>>>>/? > >> />>>>>>>>>>/ _root /?_finishndi R? B??_root ? > >> >>>>>>>>>>/ _rootndi RL?C? =L?C? =L? > >> />>>>>>>>>>/ GHGHGH= ? ?_root /?_finishndi R? B? > >> >>>>>>>>>>/ _parent /?? > >> >>>>>>>>>>/ _parent /?loader N?returnData R@ > >> >>>>>>>>>>/ > >> />>>>>>>>>>/ Thanks any advance. > >> />>>>>>>>>>/ > >> />>>>>>>>>>/ Keiji Ono > >> />>>>>>>>>> > > > > > > > -- > Henry Minsky > Software Architect > [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> >
