Methods Summary |
---|
public void | execute()
try {
if( docBase== null) {
log.error("No docbase - please specify the base directory of you web application ( -docBase PATH )");
return;
}
if( cpath== null) {
log.error("No context - please specify the mount ( -context PATH )");
return;
}
File docbF=new File(docBase);
File wXmlF=new File( docBase, "WEB-INF/web.xml");
Document wXmlN=readXml(wXmlF);
if( wXmlN == null ) return;
webN = wXmlN.getDocumentElement();
if( webN==null ) {
log.error("Can't find web-app");
return;
}
jkDir=new File( docbF, "WEB-INF/jk2" );
jkDir.mkdirs();
MappingGenerator generator=new GeneratorJk2();
generator.setWebXmlReader( this );
generate( generator );
generator=new GeneratorJk1();
generator.setWebXmlReader( this );
generate( generator );
generator=new GeneratorApache2();
generator.setWebXmlReader( this );
generate( generator );
} catch( Exception ex ) {
ex.printStackTrace();
}
|
void | generate(org.apache.jk.config.WebXml2Jk$MappingGenerator gen)
gen.generateStart();
log.info("Generating mappings for servlets " );
for( Node mapN=getChild( webN, "servlet-mapping" );
mapN != null; mapN = getNext( mapN ) ) {
String serv=getChildContent( mapN, "servlet-name");
String url=getChildContent( mapN, "url-pattern");
gen.generateServletMapping( serv, url );
}
log.info("Generating mappings for filters " );
for( Node mapN=getChild( webN, "filter-mapping" );
mapN != null; mapN = getNext( mapN ) ) {
String filter=getChildContent( mapN, "filter-name");
String url=getChildContent( mapN, "url-pattern");
gen.generateFilterMapping( filter, url );
}
for( Node mapN=getChild( webN, "error-page" );
mapN != null; mapN = getNext( mapN ) ) {
String errorCode= getChildContent( mapN, "error-code" );
String location= getChildContent( mapN, "location" );
if( errorCode!=null && ! "".equals( errorCode ) ) {
try {
int err=new Integer( errorCode ).intValue();
gen.generateErrorPage( err, location );
} catch( Exception ex ) {
log.error( "Format error " + location, ex);
}
}
}
Node lcN=getChild( webN, "login-config" );
if( lcN!=null ) {
log.info("Generating mapping for login-config " );
String authMeth=getContent( getChild( lcN, "auth-method"));
if( authMeth == null ) authMeth="BASIC";
Node n1=getChild( lcN, "form-login-config");
String loginPage= getChildContent( n1, "form-login-page");
String errPage= getChildContent( n1, "form-error-page");
if(loginPage != null) {
int lpos = loginPage.lastIndexOf("/");
String jscurl = loginPage.substring(0,lpos+1) + "j_security_check";
gen.generateLoginConfig( jscurl, errPage, authMeth );
}
}
log.info("Generating mappings for security constraints " );
for( Node mapN=getChild( webN, "security-constraint" );
mapN != null; mapN = getNext( mapN )) {
Vector methods=new Vector();
Vector urls=new Vector();
Vector roles=new Vector();
boolean isSSL=false;
Node wrcN=getChild( mapN, "web-resource-collection");
for( Node uN=getChild(wrcN, "http-method");
uN!=null; uN=getNext( uN )) {
methods.addElement( getContent( uN ));
}
for( Node uN=getChild(wrcN, "url-pattern");
uN!=null; uN=getNext( uN )) {
urls.addElement( getContent( uN ));
}
// Not used at the moment
Node acN=getChild( mapN, "auth-constraint");
for( Node rN=getChild(acN, "role-name");
rN!=null; rN=getNext( rN )) {
roles.addElement(getContent( rN ));
}
Node ucN=getChild( mapN, "user-data-constraint");
String transp=getContent(getChild( ucN, "transport-guarantee"));
if( transp!=null ) {
if( "INTEGRAL".equalsIgnoreCase( transp ) ||
"CONFIDENTIAL".equalsIgnoreCase( transp ) ) {
isSSL=true;
}
}
gen.generateConstraints( urls, methods, roles, isSSL );
}
gen.generateEnd();
|
public static org.w3c.dom.Node | getChild(org.w3c.dom.Node parent, java.lang.String name)Get the first child
if( parent==null ) return null;
Node first=parent.getFirstChild();
if( first==null ) return null;
for (Node node = first; node != null;
node = node.getNextSibling()) {
//System.out.println("getNode: " + name + " " + node.getNodeName());
if( name.equals( node.getNodeName() ) ) {
return node;
}
}
return null;
|
public static java.lang.String | getChildContent(org.w3c.dom.Node parent, java.lang.String name)Get the first child's content ( i.e. it's included TEXT node )
Node first=parent.getFirstChild();
if( first==null ) return null;
for (Node node = first; node != null;
node = node.getNextSibling()) {
//System.out.println("getNode: " + name + " " + node.getNodeName());
if( name.equals( node.getNodeName() ) ) {
return getContent( node );
}
}
return null;
|
public static java.lang.String | getContent(org.w3c.dom.Node n)Get the content of a node
// -------------------- DOM utils --------------------
if( n==null ) return null;
Node n1=n.getFirstChild();
// XXX Check if it's a text node
String s1=n1.getNodeValue();
return s1.trim();
|
public java.io.File | getJkDir()
return jkDir;
|
public static org.w3c.dom.Node | getNext(org.w3c.dom.Node current)Get the node in the list of siblings
Node first=current.getNextSibling();
String name=current.getNodeName();
if( first==null ) return null;
for (Node node = first; node != null;
node = node.getNextSibling()) {
//System.out.println("getNode: " + name + " " + node.getNodeName());
if( name.equals( node.getNodeName() ) ) {
return node;
}
}
return null;
|
public org.w3c.dom.Node | getWebXmlNode()Return the top level node
return webN;
|
public java.util.Vector | getWellcomeFiles()Extract the wellcome files from the web.xml
Node n0=getChild( webN, "welcome-file-list" );
Vector wF=new Vector();
if( n0!=null ) {
for( Node mapN=getChild( webN, "welcome-file" );
mapN != null; mapN = getNext( mapN ) ) {
wF.addElement( getContent(mapN));
}
}
// XXX Add index.html, index.jsp
return wF;
|
public static void | main(java.lang.String[] args)
try {
if( args.length == 1 &&
( "-?".equals(args[0]) || "-h".equals( args[0])) ) {
System.out.println("Usage: ");
System.out.println(" WebXml2Jk [OPTIONS]");
System.out.println();
System.out.println(" -docBase DIR The location of the webapp. Required");
System.out.println(" -group GROUP Group, if you have multiple tomcats with diffrent content. " );
System.out.println(" The default is 'lb', and should be used in most cases");
System.out.println(" -host HOSTNAME Canonical hostname - for virtual hosts");
System.out.println(" -context /CPATH Context path where the app will be mounted");
return;
}
WebXml2Jk w2jk=new WebXml2Jk();
/* do ant-style property setting */
IntrospectionUtils.processArgs( w2jk, args, new String[] {},
null, new Hashtable());
w2jk.execute();
} catch( Exception ex ) {
ex.printStackTrace();
}
|
public static org.w3c.dom.Document | readXml(java.io.File xmlF)
if( ! xmlF.exists() ) {
log.error("No xml file " + xmlF );
return null;
}
DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
dbf.setValidating(false);
dbf.setIgnoringComments(false);
dbf.setIgnoringElementContentWhitespace(true);
//dbf.setCoalescing(true);
//dbf.setExpandEntityReferences(true);
DocumentBuilder db = null;
db = dbf.newDocumentBuilder();
db.setEntityResolver( new NullResolver() );
// db.setErrorHandler( new MyErrorHandler());
Document doc = db.parse(xmlF);
return doc;
|
public void | setContext(java.lang.String contextPath)Set the canonical name of the virtual host.
this.cpath=contextPath;
|
public void | setDocBase(java.lang.String docBase)Set the base directory where the application is
deployed ( on the web server ).
this.docBase=docBase;
|
public void | setGroup(java.lang.String route)
worker=route;
|
public void | setHost(java.lang.String vhost)Set the canonycal name of the virtual host.
// -------------------- Settings --------------------
// XXX We can also generate location-independent mappings.
this.vhost=vhost;
|