appclientdeploycontroller.java
来自「RESIN 3.2 最新源码」· Java 代码 · 共 332 行
JAVA
332 行
/* * Copyright (c) 1998-2008 Caucho Technology -- all rights reserved * * This file is part of Resin(R) Open Source * * Each copy or derived work must preserve the copyright notice and this * notice unmodified. * * Resin Open Source is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Resin Open Source is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty * of NON-INFRINGEMENT. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with Resin Open Source; if not, write to the * Free SoftwareFoundation, Inc. * 59 Temple Place, Suite 330 * Boston, MA 02111-1307 USA * * @author Scott Ferguson */package com.caucho.server.e_app;import com.caucho.config.Config;import com.caucho.log.Log;import com.caucho.server.deploy.ExpandDeployController;import com.caucho.util.L10N;import com.caucho.vfs.JarPath;import com.caucho.vfs.Path;import com.caucho.vfs.Vfs;import java.util.ArrayList;import java.util.Iterator;import java.util.logging.Logger;/** * A configuration entry for Enterprise Application clients */public class AppClientDeployController extends ExpandDeployController<EntAppClient> { private static final Logger log = Log.open(AppClientDeployController.class); private static final L10N L = new L10N(AppClientDeployController.class); // The ear name private String _name = ""; // private Var _hostVar = new Var(); private JarPath _clientJar; private ArrayList<Path> _configList = new ArrayList<Path>(); private boolean _isInit; public AppClientDeployController() { super("client"); } /** * Sets the root. */ public void setRootDirectory(Path path) { super.setRootDirectory(path); } /** * Adds a config file. */ public void addConfig(Path path) { _configList.add(path); } /** * Adds a config file. */ public void addEar(Path path) { System.out.println("ADD EAR: " + path); JarPath jar = JarPath.create(path); Path app = jar.lookup("META-INF/application.xml"); System.out.println(" APP: " + app + " " + app.exists()); if (app.exists()) addConfig(app); app = jar.lookup("META-INF/resin-application.xml"); System.out.println(" APP: " + app + " " + app.exists()); if (app.exists()) addConfig(app); } /** * Executes the main. */ public void main(String []args) throws Throwable { System.out.println("MAIN()"); init(); start(); EntAppClient appClient = request(); if (appClient != null) appClient.main(args); } /** * Executes the main. */ public void main(String mainClass, String []args) throws Throwable { System.out.println("MAIN: " + mainClass); init(); start(); EntAppClient appClient = request(); System.out.println("MAIN: " + appClient + " " + mainClass); if (appClient != null) appClient.main(mainClass, args); } // XXX: temp public ClassLoader getLoader() { init(); start(); EntAppClient appClient = request(); if (appClient != null) return appClient.getClassLoader(); else return null; } /** * Returns the application object. */ protected EntAppClient instantiateDeployInstance() { return new EntAppClient(this, getId()); } /** * Creates the application. */ protected void configureInstance(EntAppClient appClient) throws Throwable { Thread thread = Thread.currentThread(); ClassLoader oldLoader = thread.getContextClassLoader(); Path rootDir = null; try { thread.setContextClassLoader(getParentClassLoader()); appClient.setArchivePath(getArchivePath()); rootDir = getRootDirectory(); if (rootDir == null) throw new NullPointerException("Null root-directory"); /* if (! rootDir.isDirectory()) { throw new ConfigException(L.l("root-directory `{0}' must specify a directory.", rootDir.getPath())); } */ appClient.setRootDirectory(rootDir); thread.setContextClassLoader(appClient.getClassLoader()); Vfs.setPwd(rootDir); addManifestClassPath(); configApplication(appClient); // configClientApplication(appClient); Path curr = rootDir; Iterator<String> it = curr.iterator(); while (it.hasNext()) { String s = it.next(); Path path = curr.lookup(s); if (path.isDirectory()) { } else if (s.endsWith(".jar")) { appClient.getClassLoader().addJar(path); _clientJar = JarPath.create(path); configClientApplication(appClient); } } for (int i = 0; i < _configList.size(); i++) configClientConfig(appClient, _configList.get(i)); appClient.init(); } finally { thread.setContextClassLoader(oldLoader); } } private void configApplication(EntAppClient appClient) throws Exception { Path rootDir = getRootDirectory(); Path xml = rootDir.lookup("META-INF/application.xml"); if (xml.canRead()) new Config().configureBean(appClient, xml); xml = rootDir.lookup("META-INF/resin-application.xml"); if (xml.canRead()) new Config().configureBean(appClient, xml); /* * XXX: config = EnterpriseApplication.parseApplicationConfig(rootDir, xml); */ /* ArrayList<Path> ejbModules = config.getEjbModules(); EJBClientInterface ejbClient = null; if (ejbModules.size() > 0) { Class cl = Class.forName("com.caucho.iiop.IiopClient"); ejbClient = (EJBClientInterface) cl.newInstance(); } */ /* for (int i = 0; i < ejbModules.size(); i++) { Path path = ejbModules.get(i); appClient.getClassLoader().addJar(path); if (ejbClient != null) ejbClient.addEJBJar(path); } if (ejbClient != null) ejbClient.initEJBs(); ArrayList<Path> javaModules = config.getJavaModules(); for (int i = 0; i < javaModules.size(); i++) { Path path = javaModules.get(i); appClient.getClassLoader().addJar(path); _clientJar = JarPath.create(path); Manifest manifest = _clientJar.getManifest(); String mainClass = manifest.getMainAttributes().getValue("Main-Class"); appClient.setMainClass(mainClass); } */ } private void configClientApplication(EntAppClient appClient) throws Exception { if (_clientJar == null) return; Path xml = _clientJar.lookup("META-INF/application-client.xml"); if (! xml.canRead()) return; new Config().configureBean(appClient, xml, "com/caucho/server/e_app/app-client.rnc"); } private void configClientConfig(EntAppClient appClient, Path xml) throws Exception { if (! xml.canRead()) return; new Config().configureBean(appClient, xml); } /** * Returns equality. */ public boolean equals(Object o) { if (! (o instanceof AppClientDeployController)) return false; AppClientDeployController controller = (AppClientDeployController) o; return getId().equals(controller.getId()); } /** * Returns a printable view. */ public String toString() { return "AppClientDeployController[" + getId() + "]"; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?