private void verifyWritable(final String description, final File file) { if (file == null) { // ignore... files are built up based on other files, and probles // with the root files will have been logged else where return; } if (!file.canWrite()) { addError(description + " file is not writable"); } }
/** * Sets the catalina base directory * @param catalinaBaseDir the absolute path of the catalina base directory */ @Override public void setCatalinaBaseDir(final String catalinaBaseDir) { setCatalinaBaseDir(createFile(catalinaBaseDir)); } /**
public File findOpenEJBJar(String namePrefix) { return findJar(getOpenEJBLibDir(), namePrefix); }
@Override public File findOpenEJBWebJar(final String namePrefix) { return findJar(getOpenEJBWebLibDir(), namePrefix); }
public boolean verify() { if (openejbWarDir == null) { addError("OpenEJB war is not unpacked"); if (getCatalinaHomeDir() == null) { addError("Catalina home directory is not defined"); if (getCatalinaBaseDir() == null) { addError("Catalina base directory is not defined"); verifyDirectory("Catalina home", getCatalinaHomeDir()); verifyDirectory("Catalina base", getCatalinaBaseDir()); if (hasErrors()) { return false; verifyWritableDirectory("Catalina lib", getCatalinaLibDir()); verifyWritableDirectory("Catalina conf", getCatalinaConfDir()); verifyDirectory("Catalina bin", getCatalinaBinDir()); verifyWritableFile("Catalina server.xml", getServerXmlFile()); verifyWritableFile("Catalina catalina.sh", getCatalinaShFile()); verifyWritableFile("Catalina catalina.bat", getCatalinaBatFile()); verifyDirectory("OpenEJB lib", getOpenEJBLibDir()); final File openejbLoaderJar = getOpenEJBTomcatLoaderJar(); if (openejbLoaderJar == null) { addError("OpenEJB loader jar was not found in the OpenEJB lib dir");
public void dump(ServletOutputStream out) throws IOException { printFile(out, "Catalina home: ", paths.getCatalinaHomeDir()); printFile(out, "Catalina base: ", paths.getCatalinaBaseDir()); printFile(out, "Catalina server.xml: ", paths.getServerXmlFile()); printFile(out, "Catalina conf: ", paths.getCatalinaConfDir()); printFile(out, "Catalina lib: ", paths.getCatalinaLibDir()); printFile(out, "Catalina bin: ", paths.getCatalinaBinDir()); printFile(out, "Catalina catalina.sh: ", paths.getCatalinaShFile()); printFile(out, "Catalina catalina.bat: ", paths.getCatalinaBatFile()); printFile(out, "OpenEJB lib: ", paths.getOpenEJBLibDir()); printFile(out, "OpenEJB loader jar: ", paths.getOpenEJBTomcatLoaderJar()); printFile(out, "OpenEJB javaagent jar: ", paths.getOpenEJBJavaagentJar()); }
File javaagentJar = new File(paths.getCatalinaLibDir(), "openejb-javaagent.jar"); if (javaagentJar.exists()) { if (paths.getOpenEJBJavaagentJar().length() != javaagentJar.length()) { Installers.copyFile(paths.getOpenEJBJavaagentJar(), javaagentJar); alerts.addInfo("Copy " + paths.getOpenEJBJavaagentJar().getName() + " to lib"); } catch (IOException e) { alerts.addError("Unable to copy OpenEJB javaagent jar to Tomcat lib directory. This will need to be performed manually.", e); String catalinaShOriginal = Installers.readAll(paths.getCatalinaShFile(), alerts); if (!Installers.backup(paths.getCatalinaShFile(), alerts)) { return; String openejbJavaagentPath = paths.getCatalinaHomeDir().toURI().relativize(javaagentJar.toURI()).getPath(); String newCatalinaSh = catalinaShOriginal.replace("# ----- Execute The Requested Command", "# Add OpenEJB javaagent\n" + if (Installers.writeAll(paths.getCatalinaShFile(), newCatalinaSh, alerts)) { alerts.addInfo("Add OpenEJB JavaAgent to catalina.sh"); String catalinaBatOriginal = Installers.readAll(paths.getCatalinaBatFile(), alerts); if (!Installers.backup(paths.getCatalinaBatFile(), alerts)) { return; if (Installers.writeAll(paths.getCatalinaBatFile(), newCatalinaBat, alerts)) { alerts.addInfo("Add OpenEJB JavaAgent to catalina.bat");
protected void doIt(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { // if they clicked the install button... if ("install".equalsIgnoreCase(req.getParameter("action"))) { // If not already installed, try to install if (installer.getStatus() == NONE) { attempts++; paths.reset(); installer.reset(); paths.setCatalinaHomeDir(req.getParameter("catalinaHome")); paths.setCatalinaBaseDir(req.getParameter("catalinaBase")); paths.setServerXmlFile(req.getParameter("serverXml")); if (paths.verify()) { installer.installAll(); } } // send redirect to avoid double post lameness res.sendRedirect(req.getRequestURI()); } else { req.setAttribute("installer", installer); req.setAttribute("paths", paths); RequestDispatcher rd = servletConfig.getServletContext().getRequestDispatcher("/installer-view.jsp"); rd.forward(req,res); } }
final File openejbCoreJar = paths.getOpenEJBCoreJar(); final File confDir = paths.getCatalinaConfDir(); final Alerts alerts = this.alerts; openejbTomcatCommonJar = new JarFile(paths.geOpenEJBTomcatCommonJar()); } catch (IOException e) { return;
/** * Returns the tomee-loader.jar file * @return the tomee-loader.jar file */ @Override public File getOpenEJBTomcatLoaderJar() { return findOpenEJBJar("tomee-loader"); }
@Override public File findTomEELibJar(final String prefix) { File jar = findJar(getCatalinaLibDir(), prefix); if (jar == null) { // maybe tomcat/openejb integration final String tomeeWar = System.getProperty("tomee.war"); if (tomeeWar != null) { jar = findJar(new File(tomeeWar, "lib"), prefix); } if ((jar == null || !jar.exists()) && prefix.equals("openejb-jpa-integration")) { jar = JarLocation.jarLocation(MakeTxLookup.class); } } return jar; }
private void addTomEEJuli() { final File original = new File(paths.getCatalinaBinDir(), "tomcat-juli.jar"); final File juli = paths.findOpenEJBJar("tomee-juli"); try { Installers.copyFile(juli, new File(original.getAbsolutePath())); if (!juli.delete()) { // remove original juli.deleteOnExit(); } } catch (final IOException e) { alerts.addInfo("Add tomee user to tomcat-users.xml"); } }
/** * Returns the {@link #getCatalinaBinDir()}/catalina.sh file * @return the {@link #getCatalinaBinDir()}/catalina.sh file */ public File getCatalinaShFile() { File binDir = getCatalinaBinDir(); if (binDir == null) return null; return new File(binDir, "catalina.sh"); } /**
final Paths paths = new Paths(new File(System.getProperty("openejb.home"))); // parameter is useless for (final String prefix : PREFIXES_TO_ADD) { final File file = paths.findTomEELibJar(prefix); if (file != null) { try {
public void init(ServletConfig servletConfig) throws ServletException { this.servletConfig = servletConfig; String path = servletConfig.getServletContext().getRealPath("/"); File openejbWarDir = null; if (path != null) { openejbWarDir = new File(path); } paths = new Paths(openejbWarDir); installer = new Installer(paths); }
/** * Sets the catalina home directory * @param catalinaHomeDir the absolute path of the catalina home directory */ @Override public void setCatalinaHomeDir(final String catalinaHomeDir) { this.catalinaHomeDir = createFile(catalinaHomeDir); } /**
@Override public File getHome() { return new File(getCatalinaBaseDir(), "webapps/ROOT/index.jsp"); }
addError("OpenEJB war is not unpacked"); if (getCatalinaHomeDir() == null) { addError("Catalina home directory is not defined"); if (getCatalinaBaseDir() == null) { addError("Catalina base directory is not defined"); verifyDirectory("Catalina home", getCatalinaHomeDir()); verifyDirectory("Catalina base", getCatalinaBaseDir()); if (hasErrors()) { return false; verifyWritableDirectory("Catalina lib", getCatalinaLibDir()); verifyWritableDirectory("Catalina conf", getCatalinaConfDir()); verifyDirectory("Catalina bin", getCatalinaBinDir()); verifyWritableFile("Catalina server.xml", getServerXmlFile()); verifyWritableFile("Catalina catalina.sh", getCatalinaShFile()); verifyWritableFile("Catalina catalina.bat", getCatalinaBatFile()); verifyDirectory("OpenEJB lib", getOpenEJBLibDir()); File openejbLoaderJar = getOpenEJBTomcatLoaderJar(); if (openejbLoaderJar == null) { addError("OpenEJB loader jar was not found in the OpenEJB lib dir"); verifyFile("OpenEJB loader jar", openejbLoaderJar);
final File javaagentJar = new File(paths.getCatalinaLibDir(), "openejb-javaagent.jar"); if (javaagentJar.exists()) { if (paths.getOpenEJBJavaagentJar().length() == javaagentJar.length()) { copyJavaagentJar = false; Installers.copyFile(paths.getOpenEJBJavaagentJar(), javaagentJar); alerts.addInfo("Copy " + paths.getOpenEJBJavaagentJar().getName() + " to lib"); } catch (final IOException e) { alerts.addError("Unable to copy OpenEJB javaagent jar to Tomcat lib directory. This will need to be performed manually.", e); final String catalinaShOriginal = Installers.readAll(paths.getCatalinaShFile(), alerts); if (!Installers.backup(paths.getCatalinaShFile(), alerts)) { return; String openejbJavaagentPath = paths.getCatalinaHomeDir().toURI().relativize(javaagentJar.toURI()).getPath(); final String newCatalinaSh = catalinaShOriginal.replace("# ----- Execute The Requested Command", "# Add OpenEJB javaagent\n" + if (Installers.writeAll(paths.getCatalinaShFile(), newCatalinaSh, alerts)) { alerts.addInfo("Add OpenEJB JavaAgent to catalina.sh"); boolean isCatalinaShExecutable = paths.getCatalinaShFile().canExecute(); if(!isCatalinaShExecutable) { try { isCatalinaShExecutable = paths.getCatalinaShFile().setExecutable(true); } catch (final SecurityException e) { alerts.addWarning("Cannot change CatalinaSh executable attribute.");