This isn't a question, but a comment on one issue that I've noticed with Cactus usage.
If you have a normal "web.xml" for your application, it appears there isn't a perfect answer to how to properly produce the web.xml which includes the Cactus servlets and mappings. In the FAQ, there's a demonstration of one way to do this, using a "filter" task in the ant script. This works, but it puts "noise" in the normal web.xml file. A while ago, when I had to work with a JSPC process that didn't give me a clean way to merge the normal web.xml with the generated JSP mappings, I decided to write an XSLT script that takes an input "web.xml" file and a document parameter (the web.xml to "merge" in), and produces a result "web.xml" file. It occurs to me that the same script could be used here, unchanged. As a result, you can produce a normal "web.xml" that has no testing artifacts. It's been quite a while since I've looked at this, but if anyone's interested, I'll include it here. I wouldn't be surprised if someone better at XSLT than me could improve this. The "ant" tasking to accomplish this is left as an exercise for the reader (which means I didn't bother to write it :) ). -------------- <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- This takes a parameter indicating the name of the secondary file to merge in. When we've matched the "web-app" element, we will first insert the "servlet" elements of the include file, then the "servlet" elements of the main file, then the "servlet-mapping" elements of the include file, then the "servlet-mapping" elements of the main file, and then all the remaining elements of the main file (which will be specified explicitly by element type. --> <xsl:output method="xml" indent="yes" doctype-public="-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" doctype-system="http://java.sun.com/dtd/web-app_2_3.dtd"/> <xsl:param name="includeFile"/> <!-- get the required elements of "web-app", in their defined order, according to the DTD. --> <xsl:template match="/web-app"> <web-app> <xsl:apply-templates select="icon"/> <xsl:apply-templates select="display-name"/> <xsl:apply-templates select="description"/> <xsl:apply-templates select="distributable"/> <xsl:apply-templates select="context-param"/> <xsl:apply-templates select="filter"/> <xsl:apply-templates select="filter-mapping"/> <xsl:apply-templates select="listener"/> <xsl:apply-templates select="servlet"/> <xsl:copy-of select="document($includeFile)/web-app/servlet"/> <xsl:apply-templates select="servlet-mapping"/> <xsl:copy-of select="document($includeFile)/web-app/servlet-mapping"/> <xsl:apply-templates select="session-config"/> <xsl:apply-templates select="mime-mapping"/> <xsl:apply-templates select="welcome-file-list"/> <xsl:apply-templates select="error-page"/> <xsl:apply-templates select="taglib"/> <xsl:apply-templates select="resource-env-ref"/> <xsl:apply-templates select="resource-ref"/> <xsl:apply-templates select="security-constraint"/> <xsl:apply-templates select="login-config"/> <xsl:apply-templates select="security-role"/> <xsl:apply-templates select="env-entry"/> <xsl:apply-templates select="ejb-ref"/> <xsl:apply-templates select="ejb-local-ref"/> </web-app> </xsl:template> <xsl:template match="*"> <xsl:for-each select="@*"> <xsl:attribute name="{.}"> <xsl:value-of select="."/> </xsl:attribute> </xsl:for-each> <xsl:copy-of select="."/> </xsl:template> </xsl:stylesheet> -------------- -- =================================================================== David M. Karr ; Java/J2EE/XML/Unix/C++ [EMAIL PROTECTED] ; SCJP; SCWCD --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
