1 29 30 package com.caucho.quercus; 31 32 import com.caucho.config.ConfigException; 33 import com.caucho.loader.*; 34 import com.caucho.quercus.annotation.ClassImplementation; 35 import com.caucho.quercus.env.*; 36 import com.caucho.quercus.lib.file.FileModule; 37 import com.caucho.quercus.lib.session.QuercusSessionManager; 38 import com.caucho.quercus.module.ModuleContext; 39 import com.caucho.quercus.module.ModuleInfo; 40 import com.caucho.quercus.module.ModuleStartupListener; 41 import com.caucho.quercus.module.QuercusModule; 42 import com.caucho.quercus.module.StaticFunction; 43 import com.caucho.quercus.page.InterpretedPage; 44 import com.caucho.quercus.page.PageManager; 45 import com.caucho.quercus.page.QuercusPage; 46 import com.caucho.quercus.parser.QuercusParser; 47 import com.caucho.quercus.program.ClassDef; 48 import com.caucho.quercus.program.InterpretedClassDef; 49 import com.caucho.quercus.program.JavaClassDef; 50 import com.caucho.quercus.program.JavaImplClassDef; 51 import com.caucho.quercus.program.QuercusProgram; 52 import com.caucho.server.webapp.*; 53 import com.caucho.server.session.*; 54 import com.caucho.sql.*; 55 import com.caucho.util.Alarm; 56 import com.caucho.util.L10N; 57 import com.caucho.util.Log; 58 import com.caucho.util.LruCache; 59 import com.caucho.util.TimedCache; 60 import com.caucho.vfs.*; 61 import com.caucho.java.*; 62 63 import javax.sql.DataSource ; 64 import java.io.IOException ; 65 import java.io.InputStream ; 66 import java.lang.ref.SoftReference ; 67 import java.lang.reflect.Constructor ; 68 import java.lang.reflect.InvocationTargetException ; 69 import java.net.URL ; 70 import java.sql.*; 71 import java.util.Enumeration ; 72 import java.util.HashMap ; 73 import java.util.HashSet ; 74 import java.util.Map ; 75 import java.util.logging.Level ; 76 import java.util.logging.Logger ; 77 78 81 public class ResinQuercus extends Quercus 82 { 83 private static L10N L = new L10N(ResinQuercus.class); 84 private static final Logger log = Log.open(ResinQuercus.class); 85 86 private static EnvironmentLocal<ModuleContext> _localModuleContext 87 = new EnvironmentLocal<ModuleContext>(); 88 89 private WebApp _webApp; 90 91 94 public ResinQuercus() 95 { 96 super(); 97 98 setPwd(Vfs.lookup()); 99 setWorkDir(WorkDir.getLocalWorkDir()); 100 } 101 102 public void setWebApp(WebApp webApp) 103 { 104 _webApp = webApp; 105 } 106 107 public WebApp getWebApp() 108 { 109 return _webApp; 110 } 111 112 @Override 113 public ModuleContext getLocalContext(ClassLoader loader) 114 { 115 synchronized (_localModuleContext) { 116 ModuleContext context = _localModuleContext.getLevel(loader); 117 118 if (context == null) { 119 context = createModuleContext(loader); 120 _localModuleContext.set(context, loader); 121 } 122 123 return context; 124 } 125 } 126 127 public String getCookieName() 128 { 129 SessionManager sm = getSessionManager(); 130 131 if (sm != null) 132 return sm.getCookieName(); 133 else 134 return "JSESSIONID"; 135 } 136 137 public SessionManager getSessionManager() 138 { 139 if (_webApp != null) 140 return _webApp.getSessionManager(); 141 else 142 return null; 143 } 144 145 @Override 146 public String getVersion() 147 { 148 return com.caucho.Version.VERSION; 149 } 150 151 @Override 152 public String getVersionDate() 153 { 154 return com.caucho.Version.VERSION_DATE; 155 } 156 157 @Override 158 public DataSource findDatabase(String driver, String url) 159 { 160 try { 161 if (getDatabase() != null) 162 return getDatabase(); 163 else 164 return DatabaseManager.findDatabase(driver, url); 165 } catch (Exception e) { 166 throw new QuercusModuleException(e); 167 } 168 } 169 170 173 @Override 174 public Connection getConnection(Connection conn) 175 { 176 try { 177 return ((UserConnection) conn).getConnection(); 178 } catch (Exception e) { 179 throw new QuercusModuleException(e); 180 } 181 } 182 183 186 public Statement getStatement(Statement stmt) 187 { 188 return ((UserStatement) stmt).getStatement(); 189 } 190 } 191 192 | Popular Tags |