Re: build with 'maven war'
Morten Norby Larsen <[email protected]>
| Newsgroups | gmane.comp.java.keel.devel |
|---|---|
| Message-ID | <[email protected]> |
Sorry, after deleting keel from the repository and re-building, it seems to work. It coumplains that the database is missing, but that should only require that I find the page which creates the database. Anyway, I have seen a glimpse of Keel! Thanks guys, I will play more with it tomorrow. Cheers, Morten On 1 Mar 2005, at 00:07, Morten Norby Larsen wrote: > Mike, > > I still get the same error, even if it downloads > keel-client-SNAPSHOT.jar seemingly all right. Do my maven.repo.remote > settings have anything to do with it? They are (from the docs:) > > maven.repo.remote=http://ibiblio.org/maven,http://keelframework.org/ > maven > > Cheers, > > Morten > > > On 28 Feb 2005, at 23:31, Michael Nash wrote: > >> Morten: >> >> I've just deployed a "SNAPSHOT" version of keel-client with the fix as >> we discussed here. If you change your project.xml dependency for >> keel-client to have <version>SNAPSHOT</version> and re-build, it >> should >> get you the correction and hopefully sidestep this issue entirely. >> >> HTH! >> >> Mike >> >> On Mon, 2005-02-28 at 17:30, Morten Norby Larsen wrote: >>> Sounds great! It would also seem more in the true spirit of Java not >>> to >>> depend on the local JVM's physical implementation, file system >>> included. >>> >>> I'm getting more and more curious about actually seeing this beast! >>> >>> >>> On 28 Feb 2005, at 23:01, Michael Nash wrote: >>> >>>> Morten: >>>> >>>> On Mon, 2005-02-28 at 16:38, Morten Norby Larsen wrote: >>>>> OK, with the keel plugin 1.2.5 I get the webapp to respond this >>>>> little >>>>> gem: >>>>> >>>>> org.keel.services.model.ModelException: Cannot find or read >>>>> /Library/Java/Home/lib/tools.jar >>>> >>>> Whoa - that's even more interesting. My understanding was that >>>> tools.jar >>>> contained things like the compiler, etc. The $24 question is why the >>>> heck it's calling that! >>>> >>>>> Now, the problem is that the Mac implementation of Java doesn't >>>>> include >>>>> the file tools.jar. The classes included in this archive on other >>>>> platforms have largely been put in classes.jar - which can be found >>>>> here: >>>>> >>>>> /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/ >>>>> Classes/classes.jar >>>>> >>>>> (I found this useful little piece of knowledge here: >>>>> >>>>> http://blogs.fivesight.com/pbblog/index.php?p=92 ) >>>>> >>>>> If it really is necessary to access the physical file, this should >>>>> somehow be parameterised. >>>> >>>> Indeed, but I can't for the life of me imagine why it's needed. I >>>> think >>>> it's a "leftover" from when we were doing much more complex >>>> classloading... >>>> >>>> The root cause seems to be here... >>>> >>>> java.lang.Exception: Cannot find or read >>>>> /Library/Java/Home/lib/tools.jar >>>>> at >>>>> org.keel.core.classloader.URLClassLoaderPath.getURLArray(URLClassLo >>>>> ade >>>>> rP >>>>> ath.java:113) >>>>> at >>>> >>>> I believe this is being caused by a few lines of code in KeelStarter >>>> that don't even need to be there, so I'm going to try to eliminate >>>> them, >>>> and thus eliminate this dependency altogether. >>>> >>>> Thanks for digging into this! >>>> >>>> Mike >>>> >>>>> The full stacktrace is here: >>>>> >>>>> >>>>> javax.servlet.ServletException: Exception during model execution: >>>>> at >>>>> org.keel.clients.struts.ModelAction.execute(ModelAction.java:82) >>>>> at >>>>> org.apache.struts.action.RequestProcessor.processActionPerform(Requ >>>>> est >>>>> Pr >>>>> ocessor.java:421) >>>>> at >>>>> org.apache.struts.action.RequestProcessor.process(RequestProcessor. >>>>> jav >>>>> a: >>>>> 226) >>>>> at >>>>> org.apache.struts.action.ActionServlet.process(ActionServlet.java: >>>>> 1164) >>>>> at >>>>> org.apache.struts.action.ActionServlet.doGet(ActionServlet.java: >>>>> 397) >>>>> at >>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:740) >>>>> at >>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:853) >>>>> at >>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ap >>>>> pli >>>>> ca >>>>> tionFilterChain.java:247) >>>>> at >>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(Applicatio >>>>> nFi >>>>> lt >>>>> erChain.java:193) >>>>> at >>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrappe >>>>> rVa >>>>> lv >>>>> e.java:256) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:643) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.j >>>>> ava >>>>> : >>>>> 480) >>>>> at >>>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java: >>>>> 995) >>>>> at >>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContex >>>>> tVa >>>>> lv >>>>> e.java:191) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:643) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.j >>>>> ava >>>>> : >>>>> 480) >>>>> at >>>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java: >>>>> 995) >>>>> at >>>>> org.apache.catalina.core.StandardContext.invoke(StandardContext.jav >>>>> a: >>>>> 2417) >>>>> at >>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve >>>>> .ja >>>>> va >>>>> :180) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:643) >>>>> at >>>>> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatc >>>>> her >>>>> Va >>>>> lve.java:171) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:641) >>>>> at >>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve >>>>> .ja >>>>> va >>>>> :172) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:641) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.j >>>>> ava >>>>> : >>>>> 480) >>>>> at >>>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java: >>>>> 995) >>>>> at >>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineV >>>>> alv >>>>> e. >>>>> java:174) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:643) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.j >>>>> ava >>>>> : >>>>> 480) >>>>> at >>>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java: >>>>> 995) >>>>> at >>>>> org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java: >>>>> 193) >>>>> at >>>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.ja >>>>> va: >>>>> 781) >>>>> at >>>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.pro >>>>> ces >>>>> sC >>>>> onnection(Http11Protocol.java:549) >>>>> at >>>>> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.ja >>>>> va: >>>>> 589) >>>>> at >>>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(Threa >>>>> dPo >>>>> ol >>>>> .java:666) >>>>> at java.lang.Thread.run(Thread.java:552) >>>>> >>>>> >>>>> root cause >>>>> org.keel.services.model.ModelException: Cannot find or read >>>>> /Library/Java/Home/lib/tools.jar >>>>> at >>>>> org.keel.clients.direct.KeelClientDirect.execute(KeelClientDirect.j >>>>> ava >>>>> : >>>>> 73) >>>>> at >>>>> org.keel.clients.DefaultClientConnector.execute(DefaultClientConnec >>>>> tor >>>>> .j >>>>> ava:51) >>>>> at >>>>> org.keel.clients.webapp.AbstractWebappClientConnector.execute(Abstr >>>>> act >>>>> We >>>>> bappClientConnector.java:73) >>>>> at >>>>> org.keel.clients.struts.StrutsClientConnector.execute(StrutsClientC >>>>> onn >>>>> ec >>>>> tor.java:105) >>>>> at >>>>> org.keel.clients.struts.ModelAction.execute(ModelAction.java:70) >>>>> at >>>>> org.apache.struts.action.RequestProcessor.processActionPerform(Requ >>>>> est >>>>> Pr >>>>> ocessor.java:421) >>>>> at >>>>> org.apache.struts.action.RequestProcessor.process(RequestProcessor. >>>>> jav >>>>> a: >>>>> 226) >>>>> at >>>>> org.apache.struts.action.ActionServlet.process(ActionServlet.java: >>>>> 1164) >>>>> at >>>>> org.apache.struts.action.ActionServlet.doGet(ActionServlet.java: >>>>> 397) >>>>> at >>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:740) >>>>> at >>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:853) >>>>> at >>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ap >>>>> pli >>>>> ca >>>>> tionFilterChain.java:247) >>>>> at >>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(Applicatio >>>>> nFi >>>>> lt >>>>> erChain.java:193) >>>>> at >>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrappe >>>>> rVa >>>>> lv >>>>> e.java:256) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:643) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.j >>>>> ava >>>>> : >>>>> 480) >>>>> at >>>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java: >>>>> 995) >>>>> at >>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContex >>>>> tVa >>>>> lv >>>>> e.java:191) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:643) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.j >>>>> ava >>>>> : >>>>> 480) >>>>> at >>>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java: >>>>> 995) >>>>> at >>>>> org.apache.catalina.core.StandardContext.invoke(StandardContext.jav >>>>> a: >>>>> 2417) >>>>> at >>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve >>>>> .ja >>>>> va >>>>> :180) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:643) >>>>> at >>>>> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatc >>>>> her >>>>> Va >>>>> lve.java:171) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:641) >>>>> at >>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve >>>>> .ja >>>>> va >>>>> :172) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:641) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.j >>>>> ava >>>>> : >>>>> 480) >>>>> at >>>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java: >>>>> 995) >>>>> at >>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineV >>>>> alv >>>>> e. >>>>> java:174) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:643) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.j >>>>> ava >>>>> : >>>>> 480) >>>>> at >>>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java: >>>>> 995) >>>>> at >>>>> org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java: >>>>> 193) >>>>> at >>>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.ja >>>>> va: >>>>> 781) >>>>> at >>>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.pro >>>>> ces >>>>> sC >>>>> onnection(Http11Protocol.java:549) >>>>> at >>>>> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.ja >>>>> va: >>>>> 589) >>>>> at >>>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(Threa >>>>> dPo >>>>> ol >>>>> .java:666) >>>>> at java.lang.Thread.run(Thread.java:552) >>>>> >>>>> ----------------------------------------- >>>>> java.lang.Exception: Cannot find or read >>>>> /Library/Java/Home/lib/tools.jar >>>>> at >>>>> org.keel.core.classloader.URLClassLoaderPath.getURLArray(URLClassLo >>>>> ade >>>>> rP >>>>> ath.java:113) >>>>> at >>>>> org.keel.clients.KeelStarter.createKeelDirectServer(KeelStarter.jav >>>>> a: >>>>> 70) >>>>> at >>>>> org.keel.clients.KeelStarter.execute(KeelStarter.java:221) >>>>> at >>>>> org.keel.clients.direct.KeelClientDirect.execute(KeelClientDirect.j >>>>> ava >>>>> : >>>>> 70) >>>>> at >>>>> org.keel.clients.DefaultClientConnector.execute(DefaultClientConnec >>>>> tor >>>>> .j >>>>> ava:51) >>>>> at >>>>> org.keel.clients.webapp.AbstractWebappClientConnector.execute(Abstr >>>>> act >>>>> We >>>>> bappClientConnector.java:73) >>>>> at >>>>> org.keel.clients.struts.StrutsClientConnector.execute(StrutsClientC >>>>> onn >>>>> ec >>>>> tor.java:105) >>>>> at >>>>> org.keel.clients.struts.ModelAction.execute(ModelAction.java:70) >>>>> at >>>>> org.apache.struts.action.RequestProcessor.processActionPerform(Requ >>>>> est >>>>> Pr >>>>> ocessor.java:421) >>>>> at >>>>> org.apache.struts.action.RequestProcessor.process(RequestProcessor. >>>>> jav >>>>> a: >>>>> 226) >>>>> at >>>>> org.apache.struts.action.ActionServlet.process(ActionServlet.java: >>>>> 1164) >>>>> at >>>>> org.apache.struts.action.ActionServlet.doGet(ActionServlet.java: >>>>> 397) >>>>> at >>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:740) >>>>> at >>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:853) >>>>> at >>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ap >>>>> pli >>>>> ca >>>>> tionFilterChain.java:247) >>>>> at >>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(Applicatio >>>>> nFi >>>>> lt >>>>> erChain.java:193) >>>>> at >>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrappe >>>>> rVa >>>>> lv >>>>> e.java:256) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:643) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.j >>>>> ava >>>>> : >>>>> 480) >>>>> at >>>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java: >>>>> 995) >>>>> at >>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContex >>>>> tVa >>>>> lv >>>>> e.java:191) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:643) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.j >>>>> ava >>>>> : >>>>> 480) >>>>> at >>>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java: >>>>> 995) >>>>> at >>>>> org.apache.catalina.core.StandardContext.invoke(StandardContext.jav >>>>> a: >>>>> 2417) >>>>> at >>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve >>>>> .ja >>>>> va >>>>> :180) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:643) >>>>> at >>>>> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatc >>>>> her >>>>> Va >>>>> lve.java:171) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:641) >>>>> at >>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve >>>>> .ja >>>>> va >>>>> :172) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:641) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.j >>>>> ava >>>>> : >>>>> 480) >>>>> at >>>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java: >>>>> 995) >>>>> at >>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineV >>>>> alv >>>>> e. >>>>> java:174) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveCont >>>>> ext >>>>> .i >>>>> nvokeNext(StandardPipeline.java:643) >>>>> at >>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.j >>>>> ava >>>>> : >>>>> 480) >>>>> at >>>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java: >>>>> 995) >>>>> at >>>>> org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java: >>>>> 193) >>>>> at >>>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.ja >>>>> va: >>>>> 781) >>>>> at >>>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.pro >>>>> ces >>>>> sC >>>>> onnection(Http11Protocol.java:549) >>>>> at >>>>> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.ja >>>>> va: >>>>> 589) >>>>> at >>>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(Threa >>>>> dPo >>>>> ol >>>>> .java:666) >>>>> at java.lang.Thread.run(Thread.java:552) >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On 28 Feb 2005, at 17:36, Morten Norby Larsen wrote: >>>>> >>>>>> >>>>>> On 28 Feb 2005, at 17:08, Michael Nash wrote: >>>>>> >>>>>>> Morten: >>>>>>> >>>>>>> Interesting! I had the same thing happen, and thought it was a >>>>>>> fluke. >>>>>>> I >>>>>>> did a maven clean; maven war, re-deployed again and all was well. >>>>>> >>>>>> I have just tried that, but it didn't change anything for me. >>>>>> >>>>>>> >>>>>>> Apparently it wasn't a fluke - thanks for the confirmation. The >>>>>>> mysterious "do it the second time and it works" bug is real :-) >>>>>> >>>>>> I made a mistake the first time and ran maven keel instead of >>>>>> maven >>>>>> war, and it downloaded a lot of packages (this was after clearing >>>>>> the >>>>>> repository). I noticed that one of them was Velocity 1.4. At the >>>>>> end >>>>>> it complained that the goal keel wasn't defined. >>>>>> >>>>>> Then, I ran (without clearing the repo) maven war, and among the >>>>>> packages it downloaded was Velocity 1.3.1. If this happens with >>>>>> more >>>>>> packages, it could be a possible explanation of the two passes >>>>>> needed >>>>>> - but maybe I'm way off, here. >>>>>> >>>>>> >>>>>> Cheers, >>>>>> >>>>>> Morten >>>>>> >>>>>> -- >>>>>> Morten Norby Larsen >>>>>> [email protected] >>>>>> Ludit s.r.l. Phone: +39 02 26 11 >>>>>> 72 >>>>>> 80 >>>>>> Via Battaglia 8, I-20127 Milano, Italy Fax: +39 02 28 46 >>>>>> 037 >>>>>> >>>>>> 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 >> > -- > Morten Norby Larsen [email protected] > Ludit s.r.l. Phone: +39 02 26 11 72 80 > Via Battaglia 8, I-20127 Milano, Italy Fax: +39 02 28 46 037 > > http://keelframework.org/documentation.shtml > Keelgroup mailing list > [email protected] > http://lists.keelframework.com/listinfo.cgi/keelgroup-keelframework.com > -- Morten Norby Larsen [email protected] Ludit s.r.l. Phone: +39 02 26 11 72 80 Via Battaglia 8, I-20127 Milano, Italy Fax: +39 02 28 46 037 http://keelframework.org/documentation.shtml Keelgroup mailing list [email protected] http://lists.keelframework.com/listinfo.cgi/keelgroup-keelframework.com