costin 00/12/26 23:21:14 Modified: src/j2ee build.xml src/j2ee/org/apache/tomcat/j2ee J2EEInterceptor.java TomcatJ2EEAdapter.java Log: Update the j2ee adapter for the new model, fixed and tested. Revision Changes Path 1.2 +16 -16 jakarta-tomcat/src/j2ee/build.xml Index: build.xml =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/j2ee/build.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- build.xml 2000/09/09 23:28:05 1.1 +++ build.xml 2000/12/27 07:21:12 1.2 @@ -53,30 +53,30 @@ <target name="j2ee-dist" depends="tomcat-j2ee.jar" /> <target name="tomcat-j2ee.jar" > - <javac srcdir="." + <echo message="Building j2ee" /> + <javac srcdir="src/j2ee" optimize="${optimize}" classpath="${j2ee.classpath}" destdir="${tomcat.build}/classes" debug="${debug}" > - <include name="org/apache/**" /> </javac> - <copydir src="." - dest="${tomcat.build}/classes"> - <include name="**/*.properties" /> - </copydir> + + <copy + todir="${tomcat.build}/classes"> + <fileset dir="." > + <include name="**/*.properties" /> + </fileset> + </copy> + <jar jarfile="${tomcat.build}/lib/tomcat-j2ee.jar" basedir="${tomcat.build}/classes" > - <include name="org/apache/tomcat/deployment/**" /> - <include name="org/apache/tomcat/j2ee/**" /> - <include name="org/apache/tomcat/util/XMLParser.class" /> - <include name="org/apache/tomcat/util/XMLTree.class" /> + <fileset dir="." > + <include name="org/apache/tomcat/deployment/**" /> + <include name="org/apache/tomcat/j2ee/**" /> + <include name="org/apache/tomcat/util/XMLParser.class" /> + <include name="org/apache/tomcat/util/XMLTree.class" /> + </fileset> </jar> - <delete dir="${tomcat.build}/classes" > - <include name="org/apache/tomcat/deployment/**" /> - <include name="org/apache/tomcat/j2ee/**" /> - <include name="org/apache/tomcat/util/XMLParser.class" /> - <include name="org/apache/tomcat/util/XMLTree.class" /> - </delete> </target> <target name="main" depends="tomcat-j2ee.jar"/> 1.6 +37 -25 jakarta-tomcat/src/j2ee/org/apache/tomcat/j2ee/J2EEInterceptor.java Index: J2EEInterceptor.java =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/j2ee/org/apache/tomcat/j2ee/J2EEInterceptor.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- J2EEInterceptor.java 2000/09/09 23:28:05 1.5 +++ J2EEInterceptor.java 2000/12/27 07:21:12 1.6 @@ -65,7 +65,7 @@ public void engineInit( ContextManager cm ) throws TomcatException { super.engineInit(cm); - debug=0; + debug=10; } public void contextInit( Context ctx) @@ -75,14 +75,14 @@ public int preService(Request request, Response response) { Context ctx = request.getContext(); - Handler sw=request.getWrapper(); - if( ! (sw instanceof ServletWrapper) ) + Handler sw=request.getHandler(); + if( ! (sw instanceof ServletHandler) ) return 0; try { - invM.preServletInvoke( ctx.getFacade(), - ((ServletWrapper)sw).getServlet(), - request.getFacade(), - response.getFacade() ); + invM.preServletInvoke( (ServletContext)ctx.getFacade(), + ((ServletHandler)sw).getServlet(), + (HttpServletRequest)request.getFacade(), + (HttpServletResponse)response.getFacade() ); } catch(Exception ex ) { return -1; } @@ -90,16 +90,16 @@ } public int postService(Request request, Response response) { Context ctx = request.getContext(); - Handler sw=request.getWrapper(); - if( ! (sw instanceof ServletWrapper) ) + Handler sw=request.getHandler(); + if( ! (sw instanceof ServletHandler) ) return 0; try { - invM.postServletInvoke( ctx.getFacade(), - ((ServletWrapper)sw).getServlet(), - request.getFacade(), - response.getFacade() ); + invM.postServletInvoke( (ServletContext)ctx.getFacade(), + ((ServletHandler)sw).getServlet(), + (HttpServletRequest)request.getFacade(), + (HttpServletResponse)response.getFacade()); intLogRequest( request.getContext().getPath(), - request.getRequestURI(), + request.requestURI().toString(), null); } catch(Exception ex ) { return -1; @@ -109,11 +109,14 @@ /** Servlet Init notification */ - public void preServletInit( Context ctx, ServletWrapper sw ) + public void preServletInit( Context ctx, Handler sw ) throws TomcatException { + if( ! (sw instanceof ServletHandler) ) + return; try { - invM.preInitInvoke( ctx.getFacade(), sw.getServlet()); + invM.preInitInvoke( (ServletContext)ctx.getFacade(), + ((ServletHandler)sw).getServlet()); } catch(Exception ex ) { log("XXX " + invM + " " + ctx + " " + sw ); throw new TomcatException( "Error in j2ee adapter " , ex ); @@ -121,11 +124,14 @@ } - public void postServletInit( Context ctx, ServletWrapper sw ) + public void postServletInit( Context ctx, Handler sw ) throws TomcatException { + if( ! (sw instanceof ServletHandler) ) + return; try { - invM.postInitInvoke( ctx.getFacade(), sw.getServlet()); + invM.postInitInvoke( (ServletContext)ctx.getFacade(), + ((ServletHandler)sw).getServlet()); } catch(Exception ex ) { throw new TomcatException( "Error in j2ee adapter " , ex ); } @@ -133,12 +139,15 @@ /** Servlet Destroy notification */ - public void preServletDestroy( Context ctx, ServletWrapper sw ) + public void preServletDestroy( Context ctx, Handler sw ) throws TomcatException { + if( ! (sw instanceof ServletHandler) ) + return; try { if( sw != null && ctx != null ) - invM.preDestroyInvoke( ctx.getFacade(), sw.getServlet()); + invM.preDestroyInvoke( (ServletContext)ctx.getFacade(), + ((ServletHandler)sw).getServlet()); else log("XXX J2EEInterceptor: sw, ctx=" + sw + " " +ctx); @@ -149,12 +158,15 @@ } - public void postServletDestroy( Context ctx, ServletWrapper sw ) + public void postServletDestroy( Context ctx, Handler sw ) throws TomcatException { + if( ! (sw instanceof ServletHandler) ) + return; try { if( sw != null && ctx != null ) - invM.postDestroyInvoke( ctx.getFacade(), sw.getServlet()); + invM.postDestroyInvoke( (ServletContext)ctx.getFacade(), + ((ServletHandler)sw).getServlet()); else log("XXX J2EEInterceptor: sw, ctx=" + sw + " " +ctx); @@ -243,13 +255,13 @@ String realm="default"; //ctx.getRealmName(); - Handler h=req.getWrapper(); - ServletWrapper sw=(ServletWrapper)h; + Handler h=req.getHandler(); + ServletHandler sw=(ServletHandler)h; String mappedRole=null; String role=null; for( int i=0; i< roles.length ; i++ ) { role=roles[i]; - mappedRole=sw.getSecurityRole( role ); + mappedRole=sw.getServletInfo().getSecurityRole( role ); if( mappedRole==null) mappedRole=role; if(isUserInRole(appName, mappedRole) ) { 1.2 +110 -25 jakarta-tomcat/src/j2ee/org/apache/tomcat/j2ee/TomcatJ2EEAdapter.java Index: TomcatJ2EEAdapter.java =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/j2ee/org/apache/tomcat/j2ee/TomcatJ2EEAdapter.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- TomcatJ2EEAdapter.java 2000/06/27 22:24:33 1.1 +++ TomcatJ2EEAdapter.java 2000/12/27 07:21:12 1.2 @@ -1,8 +1,8 @@ package org.apache.tomcat.j2ee; -import java.net.URL; -import java.net.InetAddress; -import java.io.File; +import java.net.*; +import java.io.*; +import java.util.*; import com.sun.web.server.*; import org.apache.tomcat.core.*; @@ -11,7 +11,6 @@ import java.security.*; import javax.servlet.*; import org.apache.tomcat.startup.EmbededTomcat; - /** * Simple adapter EmbededTomcat, workaround to avoid * using com.sun.web.servet.WebService inside tomcat. @@ -20,14 +19,18 @@ */ public class TomcatJ2EEAdapter extends WebService { EmbededTomcat server; + ContextManager cm; + int debug=0; public TomcatJ2EEAdapter() { server=new EmbededTomcat(); + cm=server.getContextManager(); } public void setDebug( int debug ) { super.setDebug(debug); server.setDebug(debug); + this.debug=debug; } public void setApplication( Object app ) { @@ -36,7 +39,11 @@ } public void addApplicationAdapter( Object adapter ) { - server.addApplicationAdapter( adapter ); + try { + server.addApplicationAdapter( adapter ); + } catch(TomcatException ex ) { + ex.printStackTrace(); + } } public void setWorkDir( String dir ) { @@ -46,45 +53,123 @@ public void addEndpoint( int port, InetAddress addr , String hostname) { - server.addEndpoint( port, addr, hostname); + try { + server.addEndpoint( port, addr, hostname); + } catch(TomcatException ex ) { + ex.printStackTrace(); + } + } public void addSecureEndpoint( int port, InetAddress addr, String hostname, String keyFile, String keyPass ) { - server.addSecureEndpoint( port, addr, hostname, keyFile, keyPass); - } - - public ServletContext addContext( String ctxPath, URL docRoot ) { - return server.addContext( ctxPath, docRoot); - } + try { + server.addSecureEndpoint( port, addr, hostname, keyFile, keyPass); + } catch(TomcatException ex ) { + ex.printStackTrace(); + } - public void initContext( ServletContext ctx ) { - server.initContext( ctx ); } - public void destroyContext( ServletContext ctx ) { - server.destroyContext( ctx ); + Hashtable contexts=new Hashtable(); + + public ServletContext addContext( String ctxPath, URL docRoot ) { + try { + Context ctx=(Context)server.addContext( ctxPath, docRoot); + contexts.put( ctx.getFacade(), ctx ); + return (ServletContext)ctx.getFacade(); + } catch(TomcatException ex ) { + ex.printStackTrace(); + } + return null; + } + + public void initContext( ServletContext sctx ) { + Context ctx=(Context)contexts.get( sctx ); + + Vector cp=(Vector)extraClassPaths.get( sctx ); + if( cp!=null ) { + for( int i=0; i<cp.size(); i++ ) { + String cpath=(String)cp.elementAt(i); + File f=new File( cpath ); + String absPath=f.getAbsolutePath(); + if( ! absPath.endsWith("/" ) && f.isDirectory() ) { + absPath+="/"; + } + try { + ctx.addClassPath( new URL( "file", null, + absPath )); + } catch( MalformedURLException ex ) { + } + } + } + try { + ctx.init(); + } catch( TomcatException ex ) { + ex.printStackTrace(); + } + } + + public void destroyContext( ServletContext sctx ) { + Context ctx=(Context)contexts.get( sctx ); + try { + ctx.shutdown(); + } catch( TomcatException ex ) { + ex.printStackTrace(); + } } public ServletContext getServletContext( String host, String cpath ) { - return server.getServletContext(host, cpath); + Context ctx=(Context)server.getServletContext(host, cpath); + return (ServletContext)ctx.getFacade(); } - public void removeContext( ServletContext ctx ) { - server.removeContext( ctx); - } - - public void addClassPath( ServletContext ctx, String cpath ) { - server.addClassPath( ctx, cpath); + public void removeContext( ServletContext sctx ) { + Context ctx=(Context)contexts.get( sctx ); + if(debug>0) cm.log( "remove context " + ctx ); + try { + server.getContextManager().removeContext( ctx ); + } catch( Exception ex ) { + cm.log("exception removing context " + sctx, ex); + } + } + + Hashtable extraClassPaths=new Hashtable(); + + public void addClassPath( ServletContext sctx, String cpath ) { + Context ctx=(Context)contexts.get( sctx ); + if(debug>0) cm.log( "addClassPath " + ctx + " " + + cpath ); + try { + Vector cp=(Vector)extraClassPaths.get(ctx); + if( cp == null ) { + cp=new Vector(); + extraClassPaths.put( ctx, cp ); + } + cp.addElement( cpath ); + } catch( Exception ex ) { + cm.log("exception adding classpath " + cpath + + " to context " + ctx, ex); + } } public void start() { - server.start(); + try { + server.getContextManager().start(); + } catch( Exception ex ) { + cm.log("Error starting EmbededTomcat", ex); + } + if(debug>0) cm.log( "Started" ); } public void stop() { - server.stop(); + try { + cm.shutdown(); + } catch( Exception ex ) { + cm.log("Error starting EmbededTomcat", ex); + } + } }