Everything Java Apache Geospatial Open Source. Hello Shinning Stars!!! Vincent Massol, Raphael Luta, Santiago Gala, Carsten Z.

Wednesday, December 22, 2004

Friday, November 05, 2004

Cenqua Clover Code Coverage for Java is used to test the Junit tests coverage of the source code. See the report on the Geronimo system.
Index of Geronimo modules

Thursday, November 04, 2004

Four essential Software development support systems :

Wiki/Blog/CMS/Forum/Documentation system.
Source code repository.
Bugtracking system.
Mailinglist server system.
Most interesting search phrase for temporal database implementations.
Powerful Flashback Query is used in Oracle 10g for obtaining older versions of data.

Wednesday, November 03, 2004

#!/bin/bash

# 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
How can a database model implement versioning of data? Flags perhaps, though not the best solution. Meta data seems to be the key. Each table maintains the following meta data. DATE_CREATED, DATE_CANCELLED, DATE_UPDATED, DATE_EXPORTED, DATE_VALIDATED (The last two implement export functions telling us when data was exported and when this data was validated by some authority), DATE_START, DATE_END (Dates that indicate a period during which the date is valid).

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

If you are responsable for the product, then master at all times what a developer is doing.
Edit MyBlog

Friday, September 24, 2004

The xsi:type attribute of a complexType implies that the complexType has been extended to contain new properties. See Doing More With XML Schemas (part 1): "xsi:type"
This article recommends naming(typing) all xsd:complexTypes maximizing the ability to reuse the type. Doing More With XML Schemas (part 1)
Major flaws in software can be related to file location and syntax validation. Which is why XML was created.

Tuesday, September 21, 2004

I have been looking for cvs firewall and I just found it.
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

My successful use of CVSGrab :

%CVSGRAB_HOME%\cvsgrab -rootUrl http://cvs.apache.org/viewcvs.cgi -packagePath xml-xmlbeans -destDir . -prune true -proxyHost 201.3.3.35 -proxyPort 8080 -proxyUser FR999925 -proxyPassword "lopign@"

Thursday, August 05, 2004

The Comparable inteface requires that the compareTo(Object) method is implemented.
The difference between a Statement and a PreparedStatement is that the PreparedStatement is precompiled, therefore faster.

Monday, August 02, 2004

Thursday, July 29, 2004

XML Data Binding Resources - A resource archive of xml binding tools.

Thursday, July 22, 2004

HowTo get the most out of open source database mapping tools. Which one should I choose? Castor, Hibernate, Ojb, Torque.

Tuesday, July 06, 2004

Up until now I am putting in practice XMLBeans, Ojb, and Castor. Let's just say I like diversity. So from the bottom up it would be described this way. We have a database schema which I need to represent in xml. So I use Ojb 1.0.0 ReverseDB tool (org.apache.ojb.tools.mapping.reversedb.Main in the db-ojb-1.0.0-tools.jar) to create a xml and all the JavaBeans that I need for Castor. This xml is very nice, it describes all the tables, columns, primary and foreign keys, relations, collections that exist in our database schema. This will help me when using Castor.

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

Hierarchial database inserts can be made using Castor. The difficulty becomes creating the hierachial object.
An interesting trend is to see Open Source binaries distributed with the code source CVS tree. Velocity 1.4 is an example.

Wednesday, June 16, 2004

This is my patch for my bug.

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);
}
}
}
Keep an eye on the Overview (Geronimo :: System 1.0-SNAPSHOT API)
ejbJar : <xml-fragment version="2.1" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:j2ee="http://java.sun.com/xml/ns/j2ee">
<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

java.lang.NullPointerException
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

How does the demo application work?
Check out Cactus, Clover.

I just had the idea to write a Getting Started guide to Geronimo.
Trying this in Geronimo :

java -jar bin/server.jar org/apache/geronimo/Demo

TIP : Before building Geronimo modify the file modules/assembly/src/plan/system-plan.xml changing INFO to DEBUG. This will tell Log4j to output debug statements.

Friday, June 04, 2004

gisig.com cvs coordinates :

:pserver:gisig.com:/home/cvs/anoncvs
I am trying to get the hang of this so that I can finnish the TutorialHowTo ... Google Search: openejb geronimo

Thursday, May 27, 2004

Edit MyBlog
This is what can happen if you don't use JMX...

21-May-2004 15:06:10 org.apache.tomcat.util.threads.ThreadPool logFull
SEVERE: All threads are busy, waiting. Please increase maxThreads or check the servlet status75 75

Tuesday, May 18, 2004

==== Build the Example ====

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 ====


xmlns="http://geronimo.apache.org/xml/ns/web/jetty"
configId="your/domain/name/j2eetutorialhelloservice"
parentId="org/apache/geronimo/Server"
>
/hello-jaxrpc
false


==== 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
Done processing

==== 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

Google Search: Linux is a new page dedicated to searching for Linux resources.

Thursday, May 13, 2004

[#GERONIMO-175] Web to EJB security integration - ASF JIRA. Another security issue that is a high priority.
This problem may be resolved or related to the Object Relational Bridge project. [#GERONIMO-176] CMP table mapping support - ASF JIRA
Security bugs are critical issues for Geronimo. Example : [#GERONIMO-178] Support for security roles in ejb-jar.xml - ASF JIRA
Transactions, a notion used by container managed persitence (CMP), must be isolated. This Geronimo issue is important for EJB certification. [#GERONIMO-181] Transaction propogation accross calls to stateful session beans - ASF JIRA

Wednesday, May 12, 2004

== Axis 1.2 Web Application Installation ==

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,


xmlns="http://geronimo.apache.org/xml/ns/web/jetty"
configId="org/apache/axis/webapp"
parentId="org/apache/geronimo/Server"
>
/axis
false


Modify the web.xml so that Jetty is happy. Working version below,


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
Apache-Axis


org.apache.axis.transport.http.AxisHTTPSessionListener



AxisServlet

org.apache.axis.transport.http.AxisServlet




AdminServlet

org.apache.axis.transport.http.AdminServlet

100



SOAPMonitorService

org.apache.axis.monitor.SOAPMonitorService


SOAPMonitorPort
5001

100



AxisServlet
/servlet/AxisServlet



AxisServlet
*.jws



AxisServlet
/services/*



SOAPMonitorService
/SOAPMonitor







5




wsdl
text/xml




xsd
text/xml



index.html
index.jsp
index.jws




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/
=== Helloservice ===

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

Monday, May 10, 2004

J2EE Tutorial 1.4 Creating a Simple Web Service and Client with JAX-RPC

My Son is the cutest.

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)


The most important features of the J2EE tutorial are the examples about security, authorisation, authentification, and web services.

Wednesday, May 05, 2004

J2EE v1.4 Downloads page will provide you with what you need to test Geronimo. Download the J2EE 1.4 SDK Samples (includes petstore). And Tutorial which includes samples.
Deployment - Apache Geronimo Wiki describes the deployment process used to configure applications of type Web Application, EJB Application, Resource Adapter, EAR, and Services.
Advantages of Geronimo - A repository of available jar dependancies, an XML dependancy configuration.
Missing in Geronimo - Remoting Layer for live deployment.
J2EE Tutorials and Code Camps seems to be the obvious place to learn about j2ee.
This pdf document explains the collaboration between ObjectWeb and the Apache Foundation surrounding the Geronimo project. A breif history of each organisation is included.
Apache Geronimo: Apache Initiates open source J2EE project contains the open letter from Apache and will give you a long discusion about Apache Geronimo.
J2EE Update Sparks Tool Debate may show you the direction of Java Application Servers.
Apache Announces J2EE Project
Apache targets August 6, 2004 as the release date for Geronimo
XML schemas & j2ee deployment
Maven notes : project.xml and maven.xml are the principal configuration files. The main project.xml file can include others by using the <extend>${basedir}/etc/project.xml</extend> tag as done by geronimo.

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.

I just found the Jakarta Commons Combo project which jars the most common components from the project into on jar (commons-combo.jar)

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)

Edit MyBlog

Thursday, March 25, 2004

This discussion looks like a good one about Maven, Tutorial: Using Maven to build your J2EE Projects.

My current problem was : org.apache.commons.beanutils.ConversionException: No value specified. See the stacktrace below. A small change to web.xml resolved it.



<init-param>
<param-name>convertNull</param-name>
<param-value>true</param-value>
</init-param>



org.apache.commons.beanutils.ConversionException: No value specified
at org.apache.commons.beanutils.converters.BigDecimalConverter.convert(BigDecimalConverter.java:148)
at org.apache.commons.beanutils.BeanUtils.copyProperty(BeanUtils.java:447)
at org.apache.commons.beanutils.BeanUtils.copyProperties(BeanUtils.java:264)
at com.application.sea.logic.referentiel.produit.ProduitLogic.doFindGammeProduitByPK(ProduitLogic.java:458)
at com.application.sea.logic.referentiel.grilleTarif.GrilleTarifLogic.loadObjGrilleTarifExt(GrilleTarifLogic.java:938)
at com.application.sea.logic.referentiel.grilleTarif.GrilleTarifLogic.loadJspConsulterListeGrilleTarif(GrilleTarifLogic.java:440)
at com.application.sea.struts.action.referentiel.grilleTarif.ConsulterListeGrillesTarifsAction.execute(ConsulterListeGrillesTarifsAction.java:68)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
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(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:536)
Tomcat uses a ThreadPool, PoolTcpEndpoint, Http11Protocol, Http11Processor, CoyoteAdapter, Valve, Filter for each request made to the server.
Expoloring filters in tomcat. See ApplicationFilterChain.internalDoFilter(request, response)

Wednesday, March 24, 2004

I am compiling the following packages :




  1. javax.management

  2. junit

  3. mx4j

  4. org.apache.bcel

  5. org.apache.catalina

  6. org.apache.commons.beanutils

  7. org.apache.commons.collections

  8. org.apache.commons.daemon

  9. org.apache.commons.dbcp

  10. org.apache.commons.digester

  11. org.apache.commons.fileupload

  12. org.apache.commons.jocl

  13. org.apache.commons.lang

  14. org.apache.commons.logging

  15. org.apache.commons.modeler

  16. org.apache.commons.pool

  17. org.apache.commons.validator

  18. org.apache.coyote

  19. org.apache.log4j

  20. org.apache.naming

  21. org.apache.oro

  22. org.apache.regexp

  23. org.apache.struts

  24. org.apache.taglibs

  25. org.apache.tomcat

  26. org.apache.tools.ant

  27. org.displaytag


Tuesday, March 23, 2004

This error means that you have not defined a Tiles definition for the string ref.grilletarif.SupprimerValeurTarif, and struts is looking for an action path or a jsp that starts with the character /.




java.lang.IllegalArgumentException: Le chemin ref.grilletarif.SupprimerValeurTarif ne commence pas par le caractère "/"
at org.apache.catalina.core.ApplicationContext.getRequestDispatcher(ApplicationContext.java:1179)
at org.apache.catalina.core.ApplicationContextFacade.getRequestDispatcher(ApplicationContextFacade.java:174)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1062)
at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:274)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:320)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
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(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:536)

Monday, March 22, 2004

Junit compiles with Ant.
Building Apache Ant, Junit, Jakarat-Commons


Ant was a piece of cake. I just typed ./build.sh and Ant compiles itself. Jakarta-Commons presented problems though. The following error occured.




[phil@dc027 jakarta-commons]$ ant
Buildfile: build.xml

docs:

BUILD FAILED
/home/phil/source/MastersCheckedOut/jakarta-commons/build.xml:104: taskdef class org.apache.velocity.anakia.AnakiaTask cannot be found


I will be coming back to this point but for now I am doing ant dist...shit...failed...can't find junit.

Thursday, March 18, 2004

Example : My sample code for using struts and digester to parse struts-config.xml and insert the actions in a database.


package com.application.sea.exec;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.digester.Digester;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.config.ActionConfig;
import org.apache.struts.config.ConfigRuleSet;
import org.apache.struts.config.ModuleConfig;
import org.apache.struts.config.ModuleConfigFactory;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

import com.application.sea.Factories;
import com.application.sea.dao.Autorisation;
import com.application.sea.dao.AutorisationDao;
import com.application.sea.dao.AutorisationDaoException;
import com.application.sea.dao.Strutsaction;
import com.application.sea.dao.StrutsactionDao;
import com.application.sea.dao.StrutsactionDaoException;
import com.application.sea.dao.jdbc.ConnectionManager;
import com.application.sea.sql.ConnectionManagerException;
import com.application.sea.struts.CustomMapping;

/**
*
* @author pdonaghy
*
* An object used to populate the database with strutsaction data.
*/
public class InsertStrutsActions {

private static Log log = LogFactory.getLog(InsertStrutsActions.class);

protected String registrations[] =
{
"-//Apache Software Foundation//DTD Struts Configuration 1.0//EN",
"/org/apache/struts/resources/struts-config_1_0.dtd",
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN",
"/org/apache/struts/resources/struts-config_1_1.dtd",
"-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN",
"/org/apache/struts/resources/web-app_2_2.dtd",
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN",
"/org/apache/struts/resources/web-app_2_3.dtd" };

public InsertStrutsActions() {
}

public void insert(File file) throws Exception {

// Create required struts objects.
ModuleConfigFactory factoryObject = ModuleConfigFactory.createFactory();
ModuleConfig config = factoryObject.createModuleConfig("");

// Set up the Digester for parsing struts-config.xml
Digester digester = new Digester();
digester.setNamespaceAware(true);
digester.setValidating(true);
digester.setUseContextClassLoader(true);
digester.addRuleSet(new ConfigRuleSet());
config.setActionMappingClass("com.application.sea.struts.CustomMapping");
digester.push(config);
for (int i = 0; i < registrations.length; i += 2) {
URL url = this.getClass().getResource(registrations[i + 1]);
if (url != null) {
digester.register(registrations[i], url.toString());
}
}

// Parse the struts-config.xml file.
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
digester.parse((InputStream) fis);
} catch (FileNotFoundException e) {
e.printStackTrace();
log.error(e.getClass().getName(), e);
throw new Exception(e.getClass().getName() + " " + e.getMessage());
} catch (IOException e) {
e.printStackTrace();
log.error(e.getClass().getName(), e);
throw new Exception(e.getClass().getName() + " " + e.getMessage());
} catch (SAXParseException e) {
e.printStackTrace();
log.error(e.getClass().getName(), e);
throw new Exception(e.getClass().getName() + " " + e.getMessage());
} catch (SAXException e) {
e.printStackTrace();
log.error(e.getClass().getName(), e);
throw new Exception(e.getClass().getName() + " " + e.getMessage());
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
log.error(e.getClass().getName(), e);
log.error(
"Usage : java "
+ InsertStrutsActions.class
+ " struts-config.xml");
throw new Exception(e.getClass().getName() + " " + e.getMessage());
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e1) {
log.error("Error closing the file input stream.");
}
}
}

// Rapid mapping between autorisation key and id
Map autoMap = new HashMap();
try {
ConnectionManager.createReadOnlyConnection();
AutorisationDao autoDao =
Factories.getDaoFactory().getAutorisationDao();
Autorisation[] autos = autoDao.findAll();
for (int i = 0; i < autos.length; i++) {
autoMap.put(
autos[i].getAutCode(),
new Integer(autos[i].getAutId()));
}
} catch (AutorisationDaoException e) {
e.printStackTrace();
log.error(e.getClass().getName(), e);
throw new Exception(e.getClass().getName() + " " + e.getMessage());
} catch (ConnectionManagerException e) {
e.printStackTrace();
log.error(e.getClass().getName(), e);
throw new Exception(e.getClass().getName() + " " + e.getMessage());
} finally {
ConnectionManager.destroyReadOnlyConnection();
}

// Insert data from the config into the database.
ActionConfig[] actionConfigs = config.findActionConfigs();
try {

// the connection.
ConnectionManager.createConnection();

// delete all lignemenu int the database
/*try {
LignemenuDao_ImplExt daoLigneMenu = (LignemenuDao_ImplExt)Factories.getDaoFactoryExt().getLignemenuDaoExt();
Lignemenu[] lignemenu = daoLigneMenu.findAll();

//Attention on doit delete les fils avants les pères
for (int i = lignemenu.length-1; i>=0 ; i--) {
daoLigneMenu.delete(new LignemenuPK(lignemenu[i].getLmenuId()));
}
} catch (LignemenuDaoException e) {
e.printStackTrace();
log.error(e.getClass().getName(), e);
ConnectionManager.rollBackConnection();
throw new Exception(e.getClass().getName() + " " + e.getMessage());
}*/

// the dao which perfoms the insert.
StrutsactionDao dao =
Factories.getDaoFactory().getStrutsactionDao();

// delete all struts actions in the database.
/*Strutsaction[] actions = dao.findAll();
for (int i = 0; i < actions.length; i++) {
// delete all existing struts actions
dao.delete(new StrutsactionPK(actions[i].getSactionId()));
}*/

// add new struts actions from struts-config.xml

// on récupère le max id de la base
int sactionID = 0;
Strutsaction[] strutsactionTab = dao.findAll();
int max = 0;
for (int i = 0; i < strutsactionTab.length; i++) {
Strutsaction strutsaction = strutsactionTab[i];
if (sactionID < strutsaction.getSactionId()) {
sactionID = strutsaction.getSactionId();
}
}
System.out.println(sactionID);
sactionID++; // on incrémente

//insert only the new strutsaction
for (int i = 0; i < actionConfigs.length; i++) {

//test si cet action est deja en base, si NON on insert , si OUI on ne fait rien
Object[] tab =
dao.findWhereSactionPath(actionConfigs[i].getPath());
if (tab.length == 0) {
CustomMapping cm = (CustomMapping) actionConfigs[i];
Strutsaction element = new Strutsaction();
//element.setSactionId(i);
element.setSactionId(sactionID);
if (cm.getAutorisation() == null) {
System.err.println(
"Action "
+ cm.getPath()
+ " does not specify an autorisation property. It will be ignored.");
continue;
}
Integer idInt = (Integer) autoMap.get(cm.getAutorisation());
//log.debug("id : " + idInt + " i : " + i);
/*if (i == 108) {
log.debug("stop");
}*/
int id = idInt.intValue();
element.setAppIdNull(true);
element.setAutId(id);
element.setSactionPath(actionConfigs[i].getPath());
element.setSactionCreequand(new Date());
element.setSactionModifquand(new Date());
log.debug(
"INSERTION DE L'ACTION " + element.getSactionPath());
dao.insert(element);
sactionID++;
}
}
ConnectionManager.commitConnection();

} catch (StrutsactionDaoException e) {
e.printStackTrace();
log.error(e.getClass().getName(), e);
ConnectionManager.rollBackConnection();
throw new Exception(e.getClass().getName() + " " + e.getMessage());
} catch (ConnectionManagerException e) {
e.printStackTrace();
log.error(e.getClass().getName(), e);
ConnectionManager.rollBackConnection();
throw new Exception(e.getClass().getName() + " " + e.getMessage());
} finally {
try {
ConnectionManager.destroyConnection();
} catch (ConnectionManagerException e) {
e.printStackTrace();
log.error(e.getClass().getName(), e);
throw new Exception(
e.getClass().getName() + " " + e.getMessage());
}
}

// Destroy the digester.
digester = null;
}

public static void main(String[] args) throws Exception {
InsertStrutsActions isa = new InsertStrutsActions();
File file = new File(args[0]);
try {
isa.insert(file);
log.info("Insert completed successfully.");
} catch (Exception e) {
log.info("Insert failed. See above stack trace.");
throw e;
}
}

}

Wednesday, March 17, 2004

My sample code example of dbcp and object pooling.

/**
* Initializes the connection pool.
*/
private static void init() throws ConnectionManagerException {
/**
* Add driver to the system properties.
*/
Properties prp = System.getProperties();
prp.put("jdbc.drivers", ConnectionManager.JDBC_DRIVER);
System.setProperties(prp);
/**
* log properties
*/
log.info("JDBC driver : " + JDBC_DRIVER);
log.info("JDBC url : " + JDBC_URL);
log.info("JDBC user : " + JDBC_USER);
log.info("JDBC password : " + JDBC_PASSWORD);
/**
* Create connection pool.
*/
try {
GenericObjectPool connectionPool = new GenericObjectPool(null);
log.debug("Established GenericObjectPool.");
DriverManagerConnectionFactory connectionFactory =
new DriverManagerConnectionFactory(
ConnectionManager.JDBC_URL,
ConnectionManager.JDBC_USER,
ConnectionManager.JDBC_PASSWORD);
log.debug("Established DriverManagerConnectionFactory.");
PoolableConnectionFactory poolableConnectionFactory =
new PoolableConnectionFactory(
connectionFactory,
connectionPool,
null,
null,
false,
true);
log.debug("Established PoolableConnectionFactory.");
dataSource = new PoolingDataSource(connectionPool);
log.debug("Initialized PoolingDataSource.");
} catch (Exception e) {
e.printStackTrace();
log.fatal(
Messages.getString(
"com.application.sea.dao.jdbc.ConnectionManager.init.error"),
e);
throw new ConnectionManagerException(
Messages.getString(
"com.application.sea.dao.jdbc.ConnectionManager.init.error"));
}
log.info("Connection pooling established.");
}
My sample code example of encode and decode serialization and deserialization.

// Serialize
ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStream eos = MimeUtility.encode(baos, "base64");
ObjectOutputStream os = new ObjectOutputStream(eos);
os.writeObject(p);
os.close();
eos.close();
baos.close();
String serObj = baos.toString();
System.out.println(serObj);

// Deserialize
ByteArrayInputStream bais =
new ByteArrayInputStream(serObj.getBytes());
InputStream ein = MimeUtility.decode(bais, "base64");
ObjectInputStream in = new ObjectInputStream(ein);
Point xy = (Point) in.readObject();
in.close();
ein.close();
bais.close();

Wednesday, March 10, 2004

You can easily make mistakes in the struts-config.xml file module configuration, The Struts User Guide - Building Controller Components. I recommend using xdoclet to generate the form-bean configuration, and velocity templates to generate the bean itself from a OJB xml file. This may help to avoid common 503 errors such as :


org.apache.jasper.JasperException: Impossible d''utiliser faire-suivre (forward) après que la réponse ait été envoyée
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:536)


cause mère

java.lang.IllegalStateException: Impossible d''utiliser faire-suivre (forward) après que la réponse ait été envoyée
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:368)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:356)
at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:430)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:42)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:536)

ERROR Thread-8 2004:03:10:04:06:31 org.apache.commons.digester.Digester endElement line 1060 End event threw exception
java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:252)
at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:256)
at org.apache.commons.digester.Rule.end(Rule.java:276)
at org.apache.commons.digester.Digester.endElement(Digester.java:1058)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.emptyElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1548)
at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:1006)
at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:955)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:470)
at com.application.sea.struts.CustomServlet.init(CustomServlet.java:14)
at javax.servlet.GenericServlet.init(GenericServlet.java:256)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:935)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:668)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:653)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:432)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:356)
at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:430)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:42)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:536)
Caused by: java.lang.IllegalArgumentException: Property tprestaId already defined
at org.apache.struts.config.FormBeanConfig.addFormPropertyConfig(FormBeanConfig.java:222)
... 65 more
ERROR Thread-8 2004:03:10:04:06:31 org.apache.struts.action.ActionServlet handleConfigException line 1034 Parsing error processing resource path
java.lang.IllegalArgumentException: Property tprestaId already defined
at org.apache.commons.digester.Digester.createSAXException(Digester.java:2540)
at org.apache.commons.digester.Digester.createSAXException(Digester.java:2566)
at org.apache.commons.digester.Digester.endElement(Digester.java:1061)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.emptyElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1548)
at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:1006)
at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:955)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:470)
at com.application.sea.struts.CustomServlet.init(CustomServlet.java:14)
at javax.servlet.GenericServlet.init(GenericServlet.java:256)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:935)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:668)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:653)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:432)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:356)
at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:430)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:42)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:536)

Blog Archive