java.sql.SQLException: Table not found: DECISION_ITEM in statement [select decisionit0_.ID as ID, decisionit0_.class as class, decisionit0_.ROOT_ITEM as ROOT_ITEM, decisionit0_.YES_SUCCESSOR_FK as YES_SUCC4_, decisionit0_.NO_SUCCESSOR_FK as NO_SUCCE5_, decisionit0_.NAME as NAME, decisionit0_.PROMPT_STRING as PROMPT_S7_ from DECISION_ITEM decisionit0_ where (decisionit0_.ROOT_ITEM=true )]
at org.hsqldb.jdbc.jdbcUtil.throwError(Unknown Source)
at org.hsqldb.jdbc.jdbcPreparedStatement.(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source)
at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.prepareStatement(BaseWrapperManagedConnection.java:355)
at org.jboss.resource.adapter.jdbc.WrappedConnection.prepareStatement(WrappedConnection.java:205)
at net.sf.hibernate.impl.BatcherImpl.getPreparedStatement(BatcherImpl.java:257)
at net.sf.hibernate.impl.BatcherImpl.getPreparedStatement(BatcherImpl.java:232)
at net.sf.hibernate.impl.BatcherImpl.prepareQueryStatement(BatcherImpl.java:65)
at net.sf.hibernate.loader.Loader.prepareQueryStatement(Loader.java:779)
at net.sf.hibernate.loader.Loader.doQuery(Loader.java:265)
at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:133)
at net.sf.hibernate.loader.Loader.doList(Loader.java:1033)
at net.sf.hibernate.loader.Loader.list(Loader.java:1024)
at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:854)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1544)
at net.sf.hibernate.impl.QueryImpl.list(QueryImpl.java:39)
at org.andromda.samples.animalquiz.decisiontree.DecisionItemFactory.findRoot(DecisionItemFactory.java:43)
at org.andromda.samples.animalquiz.decisiontree.DecisionServiceBeanImpl.handleGetFirstQuestion(DecisionServiceBeanImpl.java:17)
at org.andromda.samples.animalquiz.decisiontree.DecisionServiceBean.getFirstQuestion(DecisionServiceBean.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.invocation.Invocation.performCall(Invocation.java:345)
at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:214)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:185)
at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:113)
at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:48)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:105)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:313)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:146)
at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:122)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:624)
at org.jboss.ejb.Container.invoke(Container.java:856)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:144)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:642)
at org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(LocalInvoker.java:155)
at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:104)
at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:90)
at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46)
at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:55)
at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:97)
at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:86)
at $Proxy122.getFirstQuestion(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:384)
at org.apache.axis.providers.java.EJBProvider.invokeMethod(EJBProvider.java:459)
at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:281)
at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:319)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:450)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:285)
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:653)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:301)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:66)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:153)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:54)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)
00:42:24,330 ERROR [LogInterceptor] EJBException in method: public abstract org.andromda.samples.animalquiz.decisiontree.VODecisionItem org.andromda.samples.animalquiz.decisiontree.DecisionService.getFirstQuestion() throws org.andromda.samples.animalquiz.decisiontree.DecisionException,java.rmi.RemoteException:
javax.ejb.EJBException: DecisionServiceBean.getFirstQuestion: javax.ejb.EJBException: null; CausedByException is:
Could not execute query
at org.andromda.samples.animalquiz.decisiontree.DecisionServiceBean.getFirstQuestion(DecisionServiceBean.java:65)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.invocation.Invocation.performCall(Invocation.java:345)
at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:214)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:185)
at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:113)
at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:48)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:105)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:313)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:146)
at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:122)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:624)
at org.jboss.ejb.Container.invoke(Container.java:856)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:144)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:642)
at org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(LocalInvoker.java:155)
at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:104)
at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:90)
at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46)
at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:55)
at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:97)
at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:86)
at $Proxy122.getFirstQuestion(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:384)
at org.apache.axis.providers.java.EJBProvider.invokeMethod(EJBProvider.java:459)
at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:281)
at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:319)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:450)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:285)
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:653)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:301)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:66)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:153)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:54)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)
Everything Java Apache Geospatial Open Source. Hello Shinning Stars!!! Vincent Massol, Raphael Luta, Santiago Gala, Carsten Z.
Thursday, February 03, 2005
Monday, January 10, 2005
RESUME - PHILIP MARK DONAGHY - Professional consultant for the following (open source) technologies. PostgreSQL MySQL Oracle and IBM DB2 DBMS. Apache AXIS Geronimo LDAP Samba and Tomcat servers. GML JDOM JAXP SAX and XERCES XML specifications. AndroMDA Velocity and XDoclet code generators. Linux Solaris and Win OS. Struts MVC II design pattern. JSP Struts Tiles Struts Validator and DisplayTag presentation layers. J2EE EJB JDBC JMS JMX JNDI JSSE JSTL JTA JTX Java Thread Java beans Java IO Java Lang Java Net Java RMI Java Security Java SQL Java Text Java Util Javax Naming Javax SQL Javax XML w3c DOM XML SAX and JavaMail Java 2 SDK APIs. J2SDK Ant Maven Eclipse JBuilder Log4J Apache Jakarta Commons Clay DBCP Taglibs DisplayTag Easy Struts Lomboz Oxygen and CVS development platforms. ArcIMS GRASS PostGIS and MapServer GIS. OpenSSL SSH SSL HTTP SOAP and DNS BIND protocols. I use object-oriented analysis & design (OOAD), l'Unified Modeling Language (UML), Enterprise JavaBeans (EJBs), JavaServer Pages (JSPs), Java Server Faces (JSFs), Data Access Objects (DAOs). I support open source and the Java Community Process (JCP).
159 rue du Fbg Poissonniàre
75009 Paris France
Tel. : +33 (0)1 48 74 23 80
Mobile : +33 (0)6 20 83 22 62
Email : philipmarkdonaghy 0 yahoo 0 com
Website : donaghy.blogspot.com
Born the 8th of August 1972
Married
Nationality : American
French Resident
( working permit )
EDUCATION
1996. San Diego State University. Bachelors of Science in General Geology and Bachelors of Science in Computer Science.
LANGUAGES
English : Mother tongue
French : Read, written, and spoken
PROFESSIONAL EXPERIENCE
May 2004. GISIG. Paris (75). Apache Architect
Responsabilities
Produce an Apache compile farm
Application Functionalities
Compile Ant 1.6.1, Junit 3.8.1, MX4J 2.0.1, Apache Commons Lang
Technolgies
Linux 2.4.20, CVS 1.11.2
October 2003 to April 2004. Acadomia. Alten SI. Paris (75). Web Application Architect.
Responsabilities
Establish a framework for a mission critical web application
Define a security mechanism for user authentification and authorization
Determine the data acess requirements and create a code generator from JDBC connection which provides acces to a persitant data layer
Separate the data access layer from the business logic layer and the java bean and presentation layers
Establish an error mechanism using the Java exception technology
Train eight engineers to use the Struts actions, form beans, validator, tiles, and controller technologies
Assure the sychronisation of data using web services
Integrate common paging and tab panes tag libraries into the presentation layer
Application Functionalities
Intranet used for the managment of the Acadomia organisation and their client database
User interfaces permiting the creation of agencies, families, students, and tutors
Application controled security customized using the application back office administrator
References
February 2003 to September 2003. AirportSmart. Alten SI. LGS France. IBM Global Services. Paris (92). Web Application Architect.
Responsabilities
Responsable for the architecture and development of a intranet whos space is dedicated to buyers and suppliers of the airport industry.
Perform system administration for developer, preproduction, and production servers.
Install and configure Linux, Samba, Apache, Tomcat, IBM DB2, J2SDK, Struts, Ant, JBuilder, Log4J, OpenSSL, LDAP, PHP, CVS, JNDI, JDBC, JavaMail, TagLibs (JSTL), Apache Commons, Tiles, Velocity templates, Email Servers.
Train and provide assistance to eight other engineers.
The application is executed using multiple servers installed with the Linux Red Hat distribution.
The servers use the Java 2 Enterprise Platform to communicate between data sources most of which are based on Open Source products. LDAP Secureway and IBM DB2
Application Functionalities
The functionalities of the web application are supported in any language.
Internationalization is at the core of the application, which includes graphical interfaces for activating new languages, and for translating data.
References
December 2002 to May 2003. ATEC. Cachan (94). Project Manager Internet.
Responsabilities
Produce a web application for an office of Construction Economists.
References
August 2001 to July 2002. Egencia. Paris, France. Lead Java Developer.
Responsabilities
Development of travel portal using Java technology.
Responsible for implementing J2EE ( Java 2 Platform Enterprise Edition ) architecture on n-tier heterogeneous platform.
Creation and design of Web tier using JavaBeans constructed from Data Access Objects ( DAO ).
Data sources include XML ( Extensible Markup Language ), Oracle, and HTTP protocol over SSL using the Java Secure Socket Extension ( JSSE ).
Integrated platform with the SNCF Train Reservation System for Online Travel Agencies ( RAVEL, Système de Réservation SNCF pour les Agences de Voyages En Ligne ), the KIX XML API for KDS Wave Server, and Business Objects.
References
January 2001 to August 2001. MapImage. Paris, France. Internet Application Developer.
Responsabilities
Development of Web portal software using Java technology.
Responsible for designing and writing a Web application using Servlet technology on Internet Information Server ( IIS ) platform.
Utilisation of MS Java SDK and virtual machine.
References
June 2000 to January 2001. ESRI France. Meudon, France. Development Engineer.
Responsabilities
Development of GIS ( Geographic Information Systems ) project in the field of wireless telecommunications.
Responsible for developing a Web client to ArcIMS ( Arc Internet Map Server ) for a leading telecommunications company.
Product destinated for French Justice Department for use in criminal investigations notably for the positioning of mobile phone calls.
Designed a multi user environment used to display cartography based on dates, phone numbers, and/or locations.
Developed search engine tool to assist user in the research.
Developed reporting tool to log usage.
References
http://www.esrifrance.fr
June 1998 to April 2000. ESRI Inc. Redlands, CA, USA. Software Release Manager.
Responsabilities
Development of automated test suites for GIS software package called ArcIMS ( Arc Internet Map Server ).
Tests were written in Java and JavaScript to send multiple requests to the ArcIMS clients and servers to perform load, api, and regression tests.
Responsible for the quality of the software release for the Sun Solaris platform.
References
January 1996 to March 1998. Scripps Institution of Oceanography. San Diego, CA, USA. Research Assistant.
Responsabilities
Studying the climate of the San Francisco Bay area. Development of real-time weather website and tools to forecast weather based on statistics. Performed analysis of weather patterns using Matlab mathematical application. Graphs and models where created by developing programs using Matlab scripting language.
References
SKILLS
Knowledge of diverse IT systems and programming methods.
Research : Scientific Method, Mineralogy, Petrology, Structural Geology, Oceanography and Statistics
Programming : Java, JavaScript, C, C++, SQL, HTML, ASP, JSP, Taglibs, UNIX : bash, sh, csh, ksh, perl, php
Technologies : Tomcat, Struts, Servlet, JSP, XML, DTD, XSLT, JASP, EJB, JavaBeans, JavaMail, JDBC, JSSE, MVC, JDOM, Taglibs, TLD, NetBeans, Linux
Web Servers : Apache, IIS, iPlanet.
ArcIMS 3.0 Knowledge and Experience
Client, Middleware, and Server Architecture.
AXL Communication between components.
Administration of Map Services and multiple machine configurations.
Customization using HTML client and Servlet Connector.
Design and development of the test harness for the Java Viewer API.
Development of a debug and trace tool for the ArcIMS Viewers.
Configuration of the Cold Fusion Connector.
Experience developing custom AXL requests.
Developement Tools
Eight years experience using Sun Microsystems Java Development Kit
Five years experience using JBuilder for Java development.
Four years experience using Cold Fusion Studio/Server for HTML development.
Two years experience using Oracle 8, Toad, and sqlplus.
Six months experience using IBM DB2 datastore.
Six months experience using MS SQLServer.
Open Source Software Development for Service Oriented Projects
By Philip Mark Donaghy
There is no doubt that Open Source methods are becoming the norm used by service agencies everywhere. These are the guidelines I recommend when developing using open source software. These principals will guarantee an effective development process.
Communication with Mailing Lists
A large percentage of projects fail due to poor communications. It is very important that communication is traced so that managers, developers, and clients can have the correct information at the right time.
The solution to this problem :
Use internal mailing lists to notify people of news, events and or changes that are important to the end users as well as managers, clients, and developers. Three lists should be sufficient. The client list, a developers list, and a managers list. In addition the use of public mailing lists to effectively monitor software limitations and benefits.
Modeled Architecture using UML, Object, Exchange, and Database models
Problems arise from ineffectively copying and pasting source code.
The solution to this problem :
Use models to define the architecture of the application. Model driven architecture is the most modern method of developing service oriented software. A large portion of the application can be automatically generated using Velocity or AndroMDA.
Client Workflow
A third difficulty comes from poor client specifications. The solution is to monitor the clients needs and expectations.
The solution to this problem :
Architects and developers can not effectively create service oriented applications without the technical and functional contacts with the client.
Developer Workflow
Developers are curious animals. The all have their habits and methods of contributing to a project. The most important characteristics necessary to identify a responsible developer are his or her "bonne volonté", the desire to contribute ones maximum potential toward a projects success, and his or her professional attitude. These aside, here are some simple steps all developers should follow.
Verify the stability of the source code
Notify project directors when source code is unstable
Debug
Find the person responsible for the error
Work with them to estimate the
Run regression tests
Notify project directors when regression tests fail
Debug
Find the person responsible for the error
Work with them to estimate the correction
Evaluate remaining development
Meet with project directors to discuss solutions
Language
The software documentation must use a consistent language.
The solution to this problem :
A development team often consists of many nationalities. In such a case documentation communication should be written in English.
French can be the dominant language if the clients, managers, and staff are all French nationals or master French as a second language.
Development Platforms
A final and frequent problem arises with the network services used during the development process and the cost to maintain them.
The solution to this problem :
The development platform must be composed of all elements to run the application independently of network connections. Therefore the database must be installed on the development machine. Traditional Windows machines are not practical, secure or fast enough for this scenario therefore Linux is recommended.
Source Control
Problems arise when source code is locked by other developers.
The solution to this problem :
Use the most common open source source control. At the time of this writing this is CVS, although Subversion has be recently adopted by most new and cutting edge development efforts.
Build Scripts
Problems arise when build scripts are platform dependent.
The solution to this problem :
Use the most common open source build system. At the time of this writing this is Ant, although Maven is making great strides.
As with development build scripts should modular. Meaning that one central build script calls other scripts.
Delays
Delays can be avoided only by synchronizing the efforts made by the client, managers, third parties, and developers. In order to master the planning of a project all the technical, functional, and management aspects must be mastered. At our company we strive to make this our mission. Our contracts describe the exact solution and its implementation along with the time to delivery and the cost.
Wednesday, December 22, 2004
Wednesday, November 24, 2004
Friday, November 05, 2004
Thursday, November 04, 2004
Wednesday, November 03, 2004
# This script can be executed by root to rapidly create a cvs repository on RedHat Linux 8 or later. Author: Philip Mark Donaghy
# Adapted from http://www7b.software.ibm.com/wsdd/library/techarticles/0209_yu/yu.html Article by Colin Yu
# The user cvs and the Users required to have access to cvs.
useradd cvs
useradd -G cvs penguin
useradd -G cvs tiger
# CVS environment
mkdir /home/cvs/anoncvs
chmod -R 770 /home/cvs
chown -R cvs /home/cvs
chgrp -R cvs /home/cvs
chmod g+s /home/cvs/anoncvs
cvs -d /home/cvs/anoncvs init
# Daemon process. CVS Service
printf "# default : off\n# description : A cvs server.\nservice cvspserver\n{\n disable = no\n socket_type = stream\n protocol = tcp\n user = root\n wait = no\n server = /usr/bin/cvs\n server_args = -f --allow-root=/home/cvs/anoncvs pserver\n log_on_success += USERID\n log_on_failure += USERID\n}\n" > /etc/xinetd.d/cvspserver
service xinetd restart
# Users environment for localhost
printf "export CVSROOT=\":pserver:\$USER@localhost:/home/cvs/anoncvs\"\n" >> /etc/profile
# Manual configuration
# User the following command to initialize a project
# cvs import -m "New Project" ProjectName group release1_0
Inserting a version :
DATE_CANCELLED is initialized to the end of time for us that is the 31st of December 9999.
DATE_CREATED and DATE_UPDATED are set to SYSTIME
DATE_EXPORTED, DATE_VALIDATED is initialized to the beginning of time for us that is the 1st of January 1972.
Deleting versions set DATE_CANCELLED and DATE_UPDATED to the system time.
Senario 1 : (DCR, DCA, DUP, DEX, DVA, DST, DEN are abriviations for the above meta data)
t0 t1 t2 t3 t4 t5 t6
|------------------------------------------------> Version one was inserted at time t1, so version one has the following values.
DCR, DCA, DUP, DEX, DVA, DST, DEN
t1, te, t1, tb, tb, t0, t6
Tuesday, October 12, 2004
Friday, September 24, 2004
Tuesday, September 21, 2004
Access cvs using http proxy.
CVS from behind a firewall.
Of all places I found this on msdn.
http://blogs.msdn.com/robmen/archive/2004/08/09/211126.aspx
Monday, September 20, 2004
Thursday, August 05, 2004
Monday, August 02, 2004
Thursday, July 29, 2004
Thursday, July 22, 2004
Tuesday, July 06, 2004
I need a mapping file for Castor so I wrote a small xslt to convert my database xml into a mapping xml. Here it is :
<?xml version="1.0" encoding="UTF-8"?>
<!-- Warning the key-generator="SEQ" has to be added manually to mapping.xml -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<mapping>
<key-generator name="SEQUENCE" alias="SEQ">
<param name="sequence" value="seq_id"/>
</key-generator>
<xsl:apply-templates/>
</mapping>
</xsl:template>
<xsl:template match="class-descriptor">
<xsl:if test="field-descriptor[@primarykey='true']">
<class>
<xsl:attribute name="identity"><xsl:for-each select="field-descriptor[@primarykey='true']"><xsl:value-of select="concat(@name, ' ')"/></xsl:for-each></xsl:attribute>
<xsl:attribute name="name"><xsl:value-of select="concat('db.finaixm.', @class)"/></xsl:attribute>
<map-to>
<xsl:attribute name="table"><xsl:value-of select="@table"/></xsl:attribute>
</map-to>
<xsl:apply-templates/>
</class>
</xsl:if>
</xsl:template>
<xsl:template match="field-descriptor">
<field>
<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
<xsl:attribute name="type"><xsl:choose><xsl:when test="@jdbc-type = 'DECIMAL'">long</xsl:when><xsl:when test="@jdbc-type = 'VARCHAR'">string</xsl:when><xsl:when test="@jdbc-type = 'TIMESTAMP'">timestamp</xsl:when></xsl:choose></xsl:attribute>
<sql>
<xsl:attribute name="name"><xsl:value-of select="@column"/></xsl:attribute>
</sql>
</field>
</xsl:template>
</xsl:stylesheet>
Here is a quick Ant task to run it,
<target name="finaixm-mapping">
<echo>Building Castor mapping file</echo>
<xslt style="xslt/oracle2mapping.xslt" in="oracle.xml" out="etc/mapping.xml" />
</target>
I also want to manipulate xml files that conform to a given xml schema. So I use XMLBeans to read the schema and create a parser and custom API for the given schema. Practical! So I've got JavaBeans on both sides, all I need to do now is apply business logic to some Velocity templates that can import xml to the database and export from the database to xml. Thanks to the Open Source community.
Friday, July 02, 2004
Wednesday, June 16, 2004
modules/core/src/java/org/openejb/deployment/OpenEJBModuleBuilder.java
TransactionPolicyHelper transactionPolicyHelper = new TransactionPolicyHelper(ejbJar.getAssemblyDescriptor());
modules/core/src/java/org/openejb/deployment/TransactionPolicyHelper.java
public TransactionPolicyHelper(AssemblyDescriptorType assemblyDescriptor) {
if (assemblyDescriptor != null) {
processContainerTransactions(assemblyDescriptor.getContainerTransactionArray());
}
}
public TransactionPolicyHelper(ContainerTransactionType[] containerTransactions) {
processContainerTransactions(containerTransactions);
}
private void processContainerTransactions(ContainerTransactionType[] containerTransactions) {
for (int i = 0; i < containerTransactions.length; i++) {
ContainerTransactionType containerTransaction = containerTransactions[i];
String transactionAttribute = containerTransaction.getTransAttribute().getStringValue();
MethodType[] methods = containerTransaction.getMethodArray();
for (int j = 0; j < methods.length; j++) {
MethodType method = methods[j];
String ejbName = method.getEjbName().getStringValue();
MethodTransaction methodTransaction = new MethodTransaction(method, transactionAttribute);
putMethodTransaction(ejbName, methodTransaction);
}
}
}
<j2ee:display-name>ConverterJAR</j2ee:display-name>
<j2ee:enterprise-beans>
<j2ee:session>
<j2ee:ejb-name>ConverterBean</j2ee:ejb-name>
<j2ee:home>converter.ConverterHome</j2ee:home>
<j2ee:remote>converter.Converter</j2ee:remote>
<j2ee:ejb-class>converter.ConverterBean</j2ee:ejb-class>
<j2ee:session-type>Stateless</j2ee:session-type>
<j2ee:transaction-type>Bean</j2ee:transaction-type>
<j2ee:security-identity>
<j2ee:use-caller-identity/>
</j2ee:security-identity>
</j2ee:session>
</j2ee:enterprise-beans>
</xml-fragment>
java.lang.NullPointerException
at org.openejb.deployment.OpenEJBModuleBuilder.addGBeans(OpenEJBModuleBuilder.java:426)
at org.openejb.deployment.OpenEJBModuleBuilder$$FastClassByCGLIB$$11bd7b20.invoke(
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:87)
at org.apache.geronimo.gbean.jmx.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at org.apache.geronimo.gbean.jmx.GBeanMBeanOperation.invoke(GBeanMBeanOperation.java:141)
at org.apache.geronimo.gbean.jmx.GBeanMBean.invoke(GBeanMBean.java:740)
at org.apache.geronimo.gbean.jmx.RawInvoker.invoke(RawInvoker.java:89)
at org.apache.geronimo.gbean.jmx.RawOperationInvoker.invoke(RawOperationInvoker.java:34)
at org.apache.geronimo.gbean.jmx.CGLibMethodInterceptor.intercept(CGLibMethodInterceptor.java:110)
at org.apache.geronimo.j2ee.deployment.ModuleBuilder$$EnhancerByCGLIB$$9e45a280.addGBeans(
at org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(EARConfigBuilder.java:225)
at org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(EARConfigBuilder.java:148)
at org.apache.geronimo.j2ee.deployment.EARConfigBuilder$$FastClassByCGLIB$$38e56ec6.invoke(
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:87)
at org.apache.geronimo.gbean.jmx.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at org.apache.geronimo.gbean.jmx.GBeanMBeanOperation.invoke(GBeanMBeanOperation.java:141)
at org.apache.geronimo.gbean.jmx.GBeanMBean.invoke(GBeanMBean.java:740)
at org.apache.geronimo.gbean.jmx.RawInvoker.invoke(RawInvoker.java:89)
at org.apache.geronimo.gbean.jmx.RawOperationInvoker.invoke(RawOperationInvoker.java:34)
at org.apache.geronimo.gbean.jmx.CGLibMethodInterceptor.intercept(CGLibMethodInterceptor.java:110)
at org.apache.geronimo.deployment.ConfigurationBuilder$$EnhancerByCGLIB$$7a1ca0ae.buildConfiguration(
at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:132)
at org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.invoke(
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:87)
at org.apache.geronimo.gbean.jmx.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at org.apache.geronimo.gbean.jmx.GBeanMBeanOperation.invoke(GBeanMBeanOperation.java:141)
at org.apache.geronimo.gbean.jmx.GBeanMBean.invoke(GBeanMBean.java:761)
at mx4j.server.interceptor.InvokerMBeanServerInterceptor.invoke(InvokerMBeanServerInterceptor.java:218)
at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:121)
at mx4j.server.interceptor.SecurityMBeanServerInterceptor.invoke(SecurityMBeanServerInterceptor.java:86)
at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:121)
at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:121)
at mx4j.server.interceptor.ContextClassLoaderMBeanServerInterceptor.invoke(ContextClassLoaderMBeanServerInterceptor.java:205)
at mx4j.server.MX4JMBeanServer.invoke(MX4JMBeanServer.java:1079)
at org.apache.geronimo.kernel.Kernel.invoke(Kernel.java:231)
at org.apache.geronimo.system.main.CommandLine.main(CommandLine.java:82)
Seems to be that this bug is due to the fact that the builder is looking for the assembly-descriptor element. This element is optional according xml schema descriptor file http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd
Friday, June 11, 2004
at org.openejb.deployment.OpenEJBModuleBuilder.addGBeans(OpenEJBModuleBuilder.java:409)
at org.openejb.deployment.OpenEJBModuleBuilder$$FastClassByCGLIB$$11bd7b20.invoke(
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:87)
at org.apache.geronimo.gbean.jmx.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at org.apache.geronimo.gbean.jmx.GBeanMBeanOperation.invoke(GBeanMBeanOperation.java:141)
at org.apache.geronimo.gbean.jmx.GBeanMBean.invoke(GBeanMBean.java:740)
at org.apache.geronimo.gbean.jmx.RawInvoker.invoke(RawInvoker.java:89)
at org.apache.geronimo.gbean.jmx.RawOperationInvoker.invoke(RawOperationInvoker.java:34)
at org.apache.geronimo.gbean.jmx.CGLibMethodInterceptor.intercept(CGLibMethodInterceptor.java:110)
at org.apache.geronimo.j2ee.deployment.ModuleBuilder$$EnhancerByCGLIB$$9e45a280.addGBeans(
at org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(EARConfigBuilder.java:209)
at org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(EARConfigBuilder.java:142)
at org.apache.geronimo.j2ee.deployment.EARConfigBuilder$$FastClassByCGLIB$$38e56ec6.invoke(
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:87)
at org.apache.geronimo.gbean.jmx.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at org.apache.geronimo.gbean.jmx.GBeanMBeanOperation.invoke(GBeanMBeanOperation.java:141)
at org.apache.geronimo.gbean.jmx.GBeanMBean.invoke(GBeanMBean.java:740)
at org.apache.geronimo.gbean.jmx.RawInvoker.invoke(RawInvoker.java:89)
at org.apache.geronimo.gbean.jmx.RawOperationInvoker.invoke(RawOperationInvoker.java:34)
at org.apache.geronimo.gbean.jmx.CGLibMethodInterceptor.intercept(CGLibMethodInterceptor.java:110)
at org.apache.geronimo.deployment.ConfigurationBuilder$$EnhancerByCGLIB$$7a1ca0ae.buildConfiguration(
at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:132)
at org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.invoke(
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:87)
at org.apache.geronimo.gbean.jmx.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at org.apache.geronimo.gbean.jmx.GBeanMBeanOperation.invoke(GBeanMBeanOperation.java:141)
at org.apache.geronimo.gbean.jmx.GBeanMBean.invoke(GBeanMBean.java:761)
at mx4j.server.interceptor.InvokerMBeanServerInterceptor.invoke(InvokerMBeanServerInterceptor.java:218)
at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:121)
at mx4j.server.interceptor.SecurityMBeanServerInterceptor.invoke(SecurityMBeanServerInterceptor.java:86)
at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:121)
at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:121)
at mx4j.server.interceptor.ContextClassLoaderMBeanServerInterceptor.invoke(ContextClassLoaderMBeanServerInterceptor.java:205)
at mx4j.server.MX4JMBeanServer.invoke(MX4JMBeanServer.java:1079)
at org.apache.geronimo.kernel.Kernel.invoke(Kernel.java:231)
at org.apache.geronimo.system.main.CommandLine.main(CommandLine.java:82)
Thursday, June 10, 2004
Friday, June 04, 2004
Thursday, May 27, 2004
Tuesday, May 18, 2004
cd j2eetutorial14/examples/jaxrpc/helloservice
ant
Ant reports that the BUILD FAILED but if the compile-service task passed we will be ok
==== Create a Web Application ====
Use the web application created in HowToAxisGeronimo but name the directory MyHelloService.
cp -R build/helloservice MyHelloService/WEB-INF/classes/
==== Create the geronimo-jetty.xml ====
configId="your/domain/name/j2eetutorialhelloservice"
parentId="org/apache/geronimo/Server"
>
==== Create the WAR File ====
cd MyHelloService
jar -cf ../MyHelloService.war *
==== Deploy the WAR File ====
cd incubator-geronimo/target
java -jar bin/deployer.jar --install --module MyHelloService.war
==== Start the Server ====
java -jar bin/server.jar your/domain/name/j2eetutorialhelloservice
==== Test the Web Application ====
http://localhost:8080/hello-jaxrpc gives you some links to check out.
==== Create the file MyHelloService/WEB-INF/deploy.wsdd ====
==== Deploy the Web Service ====
Executing the Axis client as shown here.
cd MyHelloService/WEB-INF
java -cp $AXISCLASSPATH org.apache.axis.client.AdminClient -l local://localhost:8080/hello-jaxrpc/servlet/AdminServlet deploy.wsdd
Processing file deploy.wsdd
==== Repackage the WAR File ====
The WEB-INF directory now includes the file server-config.xml which requires redeployment.
cd ..
jar -cf ../MyHelloService.war *
==== Stop the Server ====
Ctrl-C
==== Redeploy the WAR File ====
cd incubator-geronimo/target
java -jar bin/deployer.jar --install --module MyHelloService.war
==== Restart the Server ====
java -jar bin/server.jar your/domain/name/j2eetutorialhelloservice
==== Test the Web Service Endpoint ====
http://gisig.com:8080/hello-jaxrpc/servlet/AxisServlet should now show the hello web service.
http://localhost:8080/hello-jaxrpc/services/hello?WSDL shows you the WSDL for the hello service.
==== Use the Tutorial Clients ====
The J2EE Tutorial comes with a number of clients that use this web service.
==== Use Axis WSDL2Java to Generate a Client ===
Friday, May 14, 2004
Thursday, May 13, 2004
Wednesday, May 12, 2004
Before continuing with HowToTutorial we must install and test the Axis web application within Geronimo.
Download the Axis binaries. We are using 1.2 beta
cd $AXIS_HOME/webapps/axis
Create a geronimo-jetty.xml, our's looks like this,
configId="org/apache/axis/webapp"
parentId="org/apache/geronimo/Server"
>
Modify the web.xml so that Jetty is happy. Working version below,
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
org.apache.axis.transport.http.AxisServlet
org.apache.axis.transport.http.AdminServlet
org.apache.axis.monitor.SOAPMonitorService
Add the additional jars required by Axis. Our axis/WEB-INF/lib looks like this,
activation.jar
axis-ant.jar
axis.jar
commons-discovery.jar
commons-logging.jar
jaxrpc.jar
log4j-1.2.8.jar
mail.jar
saaj.jar
wsdl4j.jar
xmlsec.jar
Note : See also the tag dependancy for an alternative way of using libraries.
Create a the axis.war
jar -cf ../axis.war *
Deploy the war
cd incubator-geronimo/target
java -jar bin/deployer.jar --install --module axis.war
Start the Geronimo server
java -jar bin/server.jar org/apache/axis/webapp
http://localhost:8080/axis/happyaxis.jsp should report total bliss.
More information is available at the root of the context, http://gisig.com:8080/axis/
You can use the asant and deployer tools provided with Sun's application server or follow the quick steps below. The Axis binaries must also be installed on your machine.
Create the MyHelloService.war as described in the tutorial Chapter 8: Building Web Services with JAX-RPC. Section 2: Creating a Simple Web Service and Client with JAX-RPC.
Quick steps :
cd examples/jaxrpc/helloservice
ant build
Ant says BUILD FAILED but we will do some stuff manually
mkdir -p war/WEB-INF/lib
cp -R build war/WEB-INF/classes
cp $AXIS_HOME/lib/*jar war/WEB-INF/lib
cat > war/WEB-INF/web.xml
Ctrl-D
cat > war/WEB-INF/geronimo-jetty.xml
Ctrl-D
Thursday, May 06, 2004
A tutorial/HOWTO. Using Geronimo with the Sun J2EE tutorial and Geronimo DEV. Sun J2EE Tutorial version 1.4
Download the tutorials and examples in the same bundle. The file name should be j2ee-1_4-doc-tutorial_1.zip.
Extract the file.
cd j2eetutorial14/example/web/hello1
ant
cd build/WEB-INF
Create the file geronimo-jetty.xml
cd ..
jar -cf j2eehello1.war *
cd incubator-geronimo/target
java -jar bin/deployer.jar --install --module j2eehello1.war
I had a small problem here...
org.apache.geronimo.deployment.DeploymentException: Unable to parse web.xml
at org.apache.geronimo.jetty.deployment.WARConfigBuilder.buildConfiguration(WARConfigBuilder.java:214)
at org.apache.geronimo.jetty.deployment.WARConfigBuilder.buildConfiguration(WARConfigBuilder.java:128)
at org.apache.geronimo.jetty.deployment.WARConfigBuilder$$FastClassByCGLIB$$ee905b6a.invoke()
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:87)
at org.apache.geronimo.gbean.jmx.FastMethodInvoker.invoke(FastMethodInvoker.java:40)
at org.apache.geronimo.gbean.jmx.GBeanMBeanOperation.invoke(GBeanMBeanOperation.java:153)
at org.apache.geronimo.gbean.jmx.GBeanMBean.invoke(GBeanMBean.java:465)
at mx4j.server.interceptor.InvokerMBeanServerInterceptor.invoke(InvokerMBeanServerInterceptor.java:218)
at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:121)
at mx4j.server.interceptor.SecurityMBeanServerInterceptor.invoke(SecurityMBeanServerInterceptor.java:86)
at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:121)
at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:121)
at mx4j.server.interceptor.ContextClassLoaderMBeanServerInterceptor.invoke(ContextClassLoaderMBeanServerInterceptor.java:205)
at mx4j.server.MX4JMBeanServer.invoke(MX4JMBeanServer.java:1079)
at org.apache.geronimo.kernel.jmx.InvokeMBean.invoke(InvokeMBean.java:100)
at org.apache.geronimo.gbean.jmx.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:125)
at org.apache.geronimo.deployment.ConfigurationBuilder$$EnhancerByCGLIB$$7a1ca0ae.buildConfiguration()
at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:132)
at org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.invoke()
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:87)
at org.apache.geronimo.gbean.jmx.FastMethodInvoker.invoke(FastMethodInvoker.java:40)
at org.apache.geronimo.gbean.jmx.GBeanMBeanOperation.invoke(GBeanMBeanOperation.java:153)
at org.apache.geronimo.gbean.jmx.GBeanMBean.invoke(GBeanMBean.java:465)
at mx4j.server.interceptor.InvokerMBeanServerInterceptor.invoke(InvokerMBeanServerInterceptor.java:218)
at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:121)
at mx4j.server.interceptor.SecurityMBeanServerInterceptor.invoke(SecurityMBeanServerInterceptor.java:86)
at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:121)
at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:121)
at mx4j.server.interceptor.ContextClassLoaderMBeanServerInterceptor.invoke(ContextClassLoaderMBeanServerInterceptor.java:205)
at mx4j.server.MX4JMBeanServer.invoke(MX4JMBeanServer.java:1079)
at org.apache.geronimo.kernel.Kernel.invoke(Kernel.java:216)
at org.apache.geronimo.system.main.CommandLine.main(CommandLine.java:82)
Hmm...
WARConfigBuilder.java Line 214 : WebAppDocument doc = (WebAppDocument) XmlBeansUtil.parse(new BufferedInputStream(is), WebAppDocument.type);
Hmm...
org.apache.xmlbeans.SchemaTypeLoader.parse(InputStream, SchemaType, XmlOptions)
Hmm...
Modified the hello1/build/WEB-INF/web.xml using the incubator-geronimo/target/config-store/5/war/WEB-INF/web.xml (remove servlet config)
java -jar bin/deployer.jar --install --module ../../../j2eetutorial14/examples/web/hello1/build/j2eehello1.war
Solved the problem...Success!
java -jar bin/server.jar your/domain/Example/test
http://localhost:8080/j2eehello1/
HTTP ERROR: 500 The+absolute+uri%3A+http%3A%2F%2Fjava%2Esun%2Ecom%2Fjsp%2Fjstl%2Fcore+cannot+be+resolved+in+either+web%2Exml+or+the+jar+files+deployed+with+this+application
RequestURI=/j2eehello1/
Powered by Jetty://
Hmm...
17:37:14,380 WARN [ServletHandler] Exception for /j2eehello1/
org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:94)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:404)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:154)
at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:358)
at org.apache.jasper.compiler.TagLibraryInfoImpl.(TagLibraryInfoImpl.java:190)
at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:458)
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:523)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1577)
at org.apache.jasper.compiler.Parser.parse(Parser.java:171)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:247)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:149)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:135)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:237)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:456)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:552)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:291)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:362)
at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:477)
at org.mortbay.jetty.servlet.Dispatcher.dispatch(Dispatcher.java:227)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:147)
at org.mortbay.jetty.servlet.Default.handleGet(Default.java:306)
at org.mortbay.jetty.servlet.Default.service(Default.java:221)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:362)
at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:477)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:488)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1754)
at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:565)
at org.apache.geronimo.jetty.JettyWebApplicationContext.handle(JettyWebApplicationContext.java:164)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1706)
at org.mortbay.http.HttpServer.service(HttpServer.java:879)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:817)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:979)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:834)
at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:212)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:315)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:498)
JSP Error
18:24:10,991 ERROR [Compiler] Javac exception
Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK
at org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory.getCompiler(CompilerAdapterFactory.java:139)
at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:833)
at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:682)
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:390)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:458)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:552)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:291)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:362)
at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:477)
at org.mortbay.jetty.servlet.Dispatcher.dispatch(Dispatcher.java:227)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:147)
at org.mortbay.jetty.servlet.Default.handleGet(Default.java:306)
at org.mortbay.jetty.servlet.Default.service(Default.java:221)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:362)
at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:477)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:488)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1754)
at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:565)
at org.apache.geronimo.jetty.JettyWebApplicationContext.handle(JettyWebApplicationContext.java:164)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1706)
at org.mortbay.http.HttpServer.service(HttpServer.java:879)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:817)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:979)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:834)
at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:212)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:315)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:498)
18:24:11,004 ERROR [Compiler] Env: Compile: javaFileName=/tmp/Jetty_0_0_0_0_8080__j2eehello1//org/apache/jsp/index_jsp.java
classpath=/tmp/Jetty_0_0_0_0_8080__j2eehello1:/usr/j2sdk1.4.2_01/jre/lib/ext/sunjce_provider.jar:/usr/j2sdk1.4.2_01/jre/lib/ext/dnsns.jar:/usr/j2sdk1.4.2_01/jre/lib/ext/ldapsec.jar:/usr/j2sdk1.4.2_01/jre/lib/ext/localedata.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/bin/server.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/geronimo-spec/jars/geronimo-spec-j2ee-1.4-rc1.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/geronimo/jars/geronimo-j2ee-1.0-SNAPSHOT.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/geronimo/jars/geronimo-core-1.0-SNAPSHOT.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/geronimo/jars/geronimo-connector-1.0-SNAPSHOT.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/concurrent/jars/concurrent-1.3.2.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/geronimo/jars/geronimo-transaction-1.0-SNAPSHOT.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/geronimo/jars/geronimo-naming-1.0-SNAPSHOT.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/geronimo/jars/geronimo-security-1.0-SNAPSHOT.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/tranql/jars/tranql-1.0-SNAPSHOT.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/openejb/jars/openejb-core-2.0-SNAPSHOT.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/geronimo/jars/geronimo-jetty-1.0-SNAPSHOT.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/jetty/jars/org.mortbay.jetty-5.0.beta0.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/tomcat/jars/jasper-compiler-5.0.16.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/tomcat/jars/jasper-runtime-5.0.16.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/commons-el/jars/commons-el-1.0.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/ant/jars/ant-1.5.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/activemq/jars/activemq-1.0-SNAPSHOT.jar:/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/regexp/jars/regexp-1.3.jar:bin/server.jar
cp=bin/server.jar
cp=/tmp/Jetty_0_0_0_0_8080__j2eehello1
cp=/usr/j2sdk1.4.2_01/jre/lib/ext/sunjce_provider.jar
cp=/usr/j2sdk1.4.2_01/jre/lib/ext/dnsns.jar
cp=/usr/j2sdk1.4.2_01/jre/lib/ext/ldapsec.jar
cp=/usr/j2sdk1.4.2_01/jre/lib/ext/localedata.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/bin/server.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/geronimo-spec/jars/geronimo-spec-j2ee-1.4-rc1.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/geronimo/jars/geronimo-j2ee-1.0-SNAPSHOT.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/geronimo/jars/geronimo-core-1.0-SNAPSHOT.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/geronimo/jars/geronimo-connector-1.0-SNAPSHOT.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/concurrent/jars/concurrent-1.3.2.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/geronimo/jars/geronimo-transaction-1.0-SNAPSHOT.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/geronimo/jars/geronimo-naming-1.0-SNAPSHOT.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/geronimo/jars/geronimo-security-1.0-SNAPSHOT.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/tranql/jars/tranql-1.0-SNAPSHOT.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/openejb/jars/openejb-core-2.0-SNAPSHOT.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/geronimo/jars/geronimo-jetty-1.0-SNAPSHOT.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/jetty/jars/org.mortbay.jetty-5.0.beta0.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/tomcat/jars/jasper-compiler-5.0.16.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/tomcat/jars/jasper-runtime-5.0.16.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/commons-el/jars/commons-el-1.0.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/ant/jars/ant-1.5.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/activemq/jars/activemq-1.0-SNAPSHOT.jar
cp=/home/phil/source/CVSCheckOut/incubator-geronimo/target/repository/regexp/jars/regexp-1.3.jar
cp=bin/server.jar
work dir=/tmp/Jetty_0_0_0_0_8080__j2eehello1
extension dir=/usr/j2sdk1.4.2_01/jre/lib/ext
srcDir=/tmp/Jetty_0_0_0_0_8080__j2eehello1
include=org/apache/jsp/index_jsp.java
18:24:11,006 ERROR [Compiler] Error compiling file: /tmp/Jetty_0_0_0_0_8080__j2eehello1//org/apache/jsp/index_jsp.java [javac] Compiling 1 source file
18:24:11,014 WARN [ServletHandler] Exception for /j2eehello1/
org.apache.jasper.JasperException: Unable to compile class for JSP
No Java compiler was found to compile the generated source for the JSP.
This can usually be solved by copying manually $JAVA_HOME/lib/tools.jar from the JDK
to the common/lib directory of the Tomcat server, followed by a Tomcat restart.
If using an alternate Java compiler, please check its installation and access path.
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:127)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:351)
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:415)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:458)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:552)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:291)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:362)
at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:477)
at org.mortbay.jetty.servlet.Dispatcher.dispatch(Dispatcher.java:227)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:147)
at org.mortbay.jetty.servlet.Default.handleGet(Default.java:306)
at org.mortbay.jetty.servlet.Default.service(Default.java:221)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:362)
at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:477)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:488)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1754)
at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:565)
at org.apache.geronimo.jetty.JettyWebApplicationContext.handle(JettyWebApplicationContext.java:164)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1706)
at org.mortbay.http.HttpServer.service(HttpServer.java:879)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:817)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:979)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:834)
at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:212)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:315)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:498)
Wednesday, May 05, 2004
Tuesday, May 04, 2004
This is my first try using the Jakarta Commons SQL
import org.apache.commons.sql.model.*;
import org.apache.commons.sql.io.*;
import org.apache.commons.sql.builder.*;
import java.io.*;
public class Try001 {
public static void main(String[] args) throws Exception {
DatabaseReader reader = new DatabaseReader();
Database database = (Database) reader.parse("datamodel.xml");
PostgreSqlBuilder psb = new PostgreSqlBuilder();
Writer writer = new FileWriter("datamodel.sql");
psb.setWriter(writer);
psb.createDatabase(database);
writer.close();
}
}
Completly satisfied by the resulting output, a sql script to create a database from the datamodel.xml file.
The errors that I am encountering are here.
Jakarta Commons Pool
test:
[echo] Because we need to sleep to test the eviction threads, this takes a little while (around 35 seconds)...
[java] Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/TestRunner
Jakarta Commons Cli
[junit] Testcase: testBasicUsage took 0.123 sec
[junit] Caused an ERROR
[junit] null
[junit] java.lang.NullPointerException
[junit] at org.apache.commons.cli2.resource.ResourceHelper.getMessage(ResourceHelper.java:173)
[junit] at org.apache.commons.cli2.resource.ResourceHelper.getMessage(ResourceHelper.java:109)
[junit] at org.apache.commons.cli2.OptionException.(OptionException.java:83)
[junit] at org.apache.commons.cli2.commandline.Parser.parse(Parser.java:69)
[junit] at org.apache.commons.cli2.commandline.Parser.parseAndHelp(Parser.java:93)
[junit] at org.apache.commons.cli2.DocumentationTest.testBasicUsage(DocumentationTest.java:127)
I am building a compile farm for ant 1.6.1, junit 3.8.1, mx4j 2.0.1, Jakarta Commons Lang 2.0 Collections 3.1 Net 1.3.0 beanutils 1.7
I had trouble with jakarta commons net which was resolved by using the latest ant distribution and linking the ant/lib/junit.jar to the compiled jar junit/junit3.8.1/junit.jar
I noticed that some build scripts download and configure jars and others depend on the CLASSPATH, the convention seems to be default to CLASSPATH and if there is time create the get-deps target with optional nodeps property enabled using a directive to ant (-Dbuild.sysclasspath=only)
