Re: Laszlo client for Keel?

Nils Döhring <[email protected]>
Newsgroups gmane.comp.java.keel.devel
Message-ID <[email protected]>
Hi,

let me give you a summary of my efforts.

The first thing I did is 'fixing' the clnt-axis to enable communication 
over webservices since this is suggested best practice both in flex and 
laszlo. clnt-axis has everything needed to run, but unfortunately 
something in the build system goes wrong since in 
keel-assemble-client.xml, 'do.axis' is never true. thus i did a 
workaround by adding the following lines to clnt-axis/build.xml:

        <copy todir="${project.dir}/webapp/WEB-INF/" verbose="${verbose}">
            <fileset dir="${keelmodule.clientconf}/axis">
                <include name="**/*.wsdl"/>
                <include name="server-config.wsdd"/>
            </fileset>
        </copy>

this is the only thing necessary to make clnt-axis work. the keel 
modelservice is then by default available under 
localhost/default/services/ModelService?wsdl.

My next step was to create the modules clnt-laszlo (and clnt-flex), 
which was pretty easy since the only thing I had to do was to slice the 
contents of laszlos web.xml into web-servlet.xml and 
web-servlet-mapping.xml (same with flex, just a few more files). i took 
clnt-struts as an example.

Another workaround had to be done with the whole lot of directories and 
files that come with these clients. If i placed them -as suggested- in 
conf/client/webapp, they will sooner or later get flattened. problem 
lies here:

keel-build/import/keel-build-clnt.xml:

88 <copy todir="${project.dir}/temp/conf/client" flatten="true" 
verbose="${verbose}">

so, time for another workaround (which also cleans up the somewhat messy 
laszlo webapp structure).

1)
I created two directories in clnt-laszlo:

a)
conf/client/root-lps/ <-- all dirs in here go into the webapp root.
details:
conf/client/root-lps/clnt-laszlo <-- here i put the following dirs from 
laszlo download: demos, docs, examples, lazlo-explorer, my-apps, tools
cont/client/root-lps/lps <-- this is the 'lps' directory from laszlo 
download. it has to be in the webapp root ('hardcoded' in laszlo, i 
asked them)

b)
conf/client/webapp-lps <-- all dirs in here go into WEB-INF/lps 
(logically, this dir contains all dirs from laszlo download web-inf/lps)

2) clnt-laszlo/build.xml:

<project name="clnt-laszlo" default="Usage" basedir=".">

    <property name="keelmodule.name" value="${ant.project.name}"/>
    <property name="keelmodule" value="${keel.dist}/${keelmodule.name}"/>
   
    <import file="${keel.dist}/keel-build/import/keel-build-clnt.xml"/>

    <copy todir="${project.dir}/webapp/WEB-INF/lps" flatten="false" 
verbose="${verbose}">
            <fileset dir="${keelmodule.clientconf}/webapp-lps">
                <include name="**/*"/>
            </fileset>
        </copy>
       
        <copy todir="${project.dir}/webapp/lps" flatten="false" 
verbose="${verbose}">
            <fileset dir="${keelmodule.clientconf}/root-lps/lps">
                <include name="**/*"/>
            </fileset>
        </copy>
       
        <copy todir="${project.dir}/webapp/clnt-laszlo" flatten="false" 
verbose="${verbose}">
            <fileset dir="${keelmodule.clientconf}/root-lps/clnt-laszlo">
                <include name="**/*"/>
            </fileset>
        </copy>
</project>

this if everything needed to get a working laszlo client. (I didn't test 
all the lazlo samples, I think there are some problems with links, but 
the system works)

then the fun part started. while I had absolutely no problems invoking 
the webservice via flex (send/receive data), laszlo was making problems 
here.
I've been fiddling aroung with laszlo-keel communication in whole 
december and january and have more or less given up since I didn't find 
the time to step deeply into axis webservices.

what I've found out is that laszlo currenty neither supports sequences 
nor 'anyType's and I would suggest to look into the laszlo documentation 
and model a custom LaszloModelService that is similar to the amazon or 
google webservices, since these are working with laszlo. see these:

http://www.laszlosystems.com/lps-2.2/docs/reference/    --> RPC/soap, 
RPC/rpc, RPC/remotecall
and
http://www.laszlosystems.com/lps-2.2/docs/guide/rpc-soap.html (list of 
unsupported stuff at the end)
and here you can find what i posted on laszlo forums:
http://www.laszlosystems.com/developers/community/forums/search.php?s=&action=finduser&userid=2913

afaik, the docs still account for lps3. i tried both lps 2.2 and 3.0b1.

i can give two more tips:
1)
if you get an error:
error: «string#0| XSD_ANYSIMPLETYPE : Exception stack: 
java.lang.NoSuchFieldError: XSD_ANYSIMPLETYPE at 
com.laszlosystems.remote.soap.LZDefaultTypeMapping.<init>(LZDefaultTypeMapping.java:115)

you should check if your axis.jar is the same that comes with laszlo (it 
was copied over with an older version in my case)

2)
you can enable a 'special' laszlo logger that really helps:
in web-inf/lps/config/lps.xml, add:
        <logger name="httpclient.wire" additivity="false">
            <priority value="debug" />
            <appender-ref ref="lps" />
        </logger>

the logfile can be found at web-inf/lps/work/logs


While I appreciate the sudden attention of my attempts, you guys 
couldn't have chosen a more unmatching timeslot since I am in 
preparation for my exams :-/ I will follow the ongoing discussion and 
will try to make my brain remember as much as possible when it comes to 
question, but more is not possible at the moment. If some of the above 
explanations are unclear, I would be happy to attach a zipped 
clnt-laszlo dir structure (EMPTY OF COURSE!) and the few files I've been 
playing around with.

While doing the above I ran into two things that I found somehow not 
well solved:

why is ALL the build config stuff merged in keel-build? wouldnt it be 
more tidy to put those 'special' build commands that are required by 
clnt-axis, clnt-laszlo, clnt-struts, etc into the build.xml's in their 
respective dir? (prolly the question comes too late with the maven 
switch at the doors)

when i changed the modelservice class in clnt-axis (and that happened 
OFTEN!), i had to rebuild the whole project. isn't it possible to do 
just a "ant build clnt-axis" or so?

i hope this wasn't too confusing, my brain hurts since days... :)

ahoj,
nils

ps: don't even think about trying to use laszlo javarpc, its even more 
of a nightmare!!



Michael Nash wrote:

>Aleks:
>
>Thanks for your reply - yes, I see looking at the archives that Nils was
>giving it a try. 
>
>Nils, anything we can do to help that effort along?
>
>Mike
>
>
>On Tue, 2005-02-08 at 15:19, Aleksandar Vidakovic wrote:
>  
>
>>Salut Mike,
>>
>>unfortunately I had to freeze my efforts for a while (time ;-), but I
>>remember some mails not too long ago from another german developer who
>>seemed to have something usable. As far as I remember his name was Nils
>>Döhring...
>>
>>Hope this helps,
>>
>>Aleks
>>
>>P.S.: ... if there remains something to do with clnt-laszlo I would be
>>happy to help ;-)
>>
>>On Tue, 2005-02-08 at 13:31 -0500, Michael Nash wrote:
>>    
>>
>>>Aleks:
>>> 
>>>I seem to recall you were working on a Laszlo client for Keel? Can you
>>>let me know how that is going when you get a change? I have a client
>>>whose seen the Laszlo demos and was very impressed, they'd like to see
>>>how it might integrate with a back-end system.
>>> 
>>>Thanks!
>>> 
>>>Mike
>>>
>>>http://keelframework.org/documentation.shtml
>>>Keelgroup mailing list
>>>[email protected]
>>>http://lists.keelframework.com/listinfo.cgi/keelgroup-keelframework.com
>>>
>>>      
>>>
>
>http://keelframework.org/documentation.shtml
>Keelgroup mailing list
>[email protected]
>http://lists.keelframework.com/listinfo.cgi/keelgroup-keelframework.com
>
>  
>

http://keelframework.org/documentation.shtml
Keelgroup mailing list
[email protected]
http://lists.keelframework.com/listinfo.cgi/keelgroup-keelframework.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.