You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomee.apache.org by Kevan Miller <ke...@gmail.com> on 2010/07/20 17:12:32 UTC
Re: svn commit: r964353 - in /openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server: Main.java Server.java SimpleServiceManager.java admin/AdminDaemon.java
Jean-Louis,
This change breaks compilation on a Java 5 JDK (but works fine with a Java 6 JDK). Here are the errors on Java 5:
[INFO] Compiling 33 source files to /Users/kevan/openejb/branches/openejb-3.1.x/server/openejb-server/target/classes
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
/Users/kevan/openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/admin/AdminDaemon.java:[33,5] method does not override a method from its superclass
/Users/kevan/openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/admin/AdminDaemon.java:[37,5] method does not override a method from its superclass
/Users/kevan/openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/admin/AdminDaemon.java:[83,5] method does not override a method from its superclass
/Users/kevan/openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/admin/AdminDaemon.java:[88,5] method does not override a method from its superclass
/Users/kevan/openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/admin/AdminDaemon.java:[92,5] method does not override a method from its superclass
/Users/kevan/openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/admin/AdminDaemon.java:[96,5] method does not override a method from its superclass
/Users/kevan/openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/admin/AdminDaemon.java:[101,5] method does not override a method from its superclass
/Users/kevan/openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/admin/AdminDaemon.java:[106,5] method does not override a method from its superclass
/Users/kevan/openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java:[54,5] method does not override a method from its superclass
On Java 5, @Override is not supported on interface methods.
--kevan
On Jul 15, 2010, at 5:37 AM, jlmonteiro@apache.org wrote:
> Author: jlmonteiro
> Date: Thu Jul 15 09:37:38 2010
> New Revision: 964353
>
> URL: http://svn.apache.org/viewvc?rev=964353&view=rev
> Log:
> OPENEJB-1305: patch from Andy. Hook standalone shutdown process.
> Cool patch! Thanks Andy
>
> Modified:
> openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/Main.java
> openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java
> openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/SimpleServiceManager.java
> openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/admin/AdminDaemon.java
>
> Modified: openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/Main.java
> URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/Main.java?rev=964353&r1=964352&r2=964353&view=diff
> ==============================================================================
> --- openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/Main.java (original)
> +++ openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/Main.java Thu Jul 15 09:37:38 2010
> @@ -64,8 +64,8 @@ public class Main {
> Map<String, Properties> serviceEntries = finder.mapAvailableProperties(ServerService.class.getName());
> services = serviceEntries.keySet();
> for (String service : services) {
> - options.addOption(option(null, service+"-port", "int", "cmd.start.opt.port", service));
> - options.addOption(option(null, service+"-bind", "host", "cmd.start.opt.bind", service));
> + options.addOption(option(null, service + "-port", "int", "cmd.start.opt.port", service));
> + options.addOption(option(null, service + "-bind", "host", "cmd.start.opt.bind", service));
> }
> } catch (IOException e) {
> services = Collections.EMPTY_SET;
> @@ -115,17 +115,17 @@ public class Main {
> String[] opts = {"port", "bind"};
> for (String opt : opts) {
> String option = service + "-" + opt;
> - if (line.hasOption(option)){
> - props.setProperty(service+"."+opt, line.getOptionValue(option));
> + if (line.hasOption(option)) {
> + props.setProperty(service + "." + opt, line.getOptionValue(option));
> }
> }
> }
>
> try {
> - SystemInstance system = SystemInstance.get();
> + final SystemInstance system = SystemInstance.get();
> File libs = system.getHome().getDirectory("lib");
> system.getClassPath().addJarsToPath(libs);
> - initServer();
> + initServer(system);
> } catch (DontStartServerException ignored) {
> } catch (Exception e) {
> e.printStackTrace();
> @@ -134,7 +134,7 @@ public class Main {
>
> private static void help(Options options) {
> HelpFormatter formatter = new HelpFormatter();
> - formatter.printHelp("start [options]", "\n"+i18n("cmd.start.description"), options, "\n");
> + formatter.printHelp("start [options]", "\n" + i18n("cmd.start.description"), options, "\n");
> }
>
> private static Option option(String shortOpt, String longOpt, String description) {
> @@ -142,21 +142,23 @@ public class Main {
> }
>
> private static Option option(String shortOpt, String longOpt, String argName, String description, Object... details) {
> - return OptionBuilder.withLongOpt(longOpt).withArgName(argName).hasArg().withDescription(i18n(description,details)).create(shortOpt);
> + return OptionBuilder.withLongOpt(longOpt).withArgName(argName).hasArg().withDescription(i18n(description, details)).create(shortOpt);
> }
>
> private static String i18n(String key, Object... details) {
> return messages.format(key, details);
> }
>
> + private static void initServer(final SystemInstance system) throws Exception {
> + Server server = Server.getInstance();
> + server.init(system.getProperties());
>
> - private static void initServer() throws Exception {
> - Server server = new Server();
> - server.init(SystemInstance.get().getProperties());
> + system.setComponent(Server.class, server);
> server.start();
> }
> }
>
> class DontStartServerException extends Exception {
> +
> private static final long serialVersionUID = 1L;
> }
>
> Modified: openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java
> URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java?rev=964353&r1=964352&r2=964353&view=diff
> ==============================================================================
> --- openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java (original)
> +++ openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java Thu Jul 15 09:37:38 2010
> @@ -35,14 +35,14 @@ import org.apache.openejb.util.Propertie
> */
> public class Server implements Service {
> // FIXME: Remove it completely once we ensure PropertiesService (below) works well
> +
> Properties props;
> -
> private PropertiesService propertiesService;
> + private static Server server;
> + private static ServiceManager manager;
>
> - static Server server;
> - private ServiceManager manager;
> + public static Server getInstance() {
>
> - public static Server getServer() {
> if (server == null) {
> server = new Server();
> }
> @@ -51,12 +51,13 @@ public class Server implements Service {
> }
>
> // TODO: Remove it once init() suits our (initialisation) needs
> + @Override
> public void init(Properties props) throws Exception {
> this.props = props;
>
> SystemInstance system = SystemInstance.get();
> File home = system.getHome().getDirectory();
> - system.setProperty("openejb.deployments.classpath.include", ".*/"+home.getName()+"/lib/.*");
> + system.setProperty("openejb.deployments.classpath.include", ".*/" + home.getName() + "/lib/.*");
> system.setProperty("openejb.deployments.classpath.require.descriptor", "true");
> system.setProperty("openejb.deployments.classpath.filter.systemapps", "false");
>
> @@ -66,9 +67,10 @@ public class Server implements Service {
> System.out.println("[init] OpenEJB Remote Server");
> }
>
> - if (manager == null){
> + if (manager == null) {
> manager = ServiceManager.getManager();
> }
> +
> manager.init();
> }
>
> @@ -85,7 +87,7 @@ public class Server implements Service {
> System.out.println("[init] OpenEJB Remote Server");
> }
>
> - manager.init();
> + manager.init();
> }
>
> public void start() throws Exception {
> @@ -93,26 +95,25 @@ public class Server implements Service {
> }
>
> public void stop() throws Exception {
> - manager.stop();
> OpenEJB.destroy();
> + manager.stop();
> }
>
> public void addService(URI uri) {
> -
> }
>
> public static class ServerServiceFactory {
> +
> public ServerService createService(URI location) throws IOException {
> return null;
> }
> }
>
> public void setServiceManager(ServiceManager serviceManager) {
> - this.manager = serviceManager;
> + manager = serviceManager;
> }
> -
> +
> public void setPropertiesService(PropertiesService propertiesService) {
> this.propertiesService = propertiesService;
> }
> }
> -
>
> Modified: openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/SimpleServiceManager.java
> URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/SimpleServiceManager.java?rev=964353&r1=964352&r2=964353&view=diff
> ==============================================================================
> --- openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/SimpleServiceManager.java (original)
> +++ openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/SimpleServiceManager.java Thu Jul 15 09:37:38 2010
> @@ -23,13 +23,8 @@ import java.util.List;
> import java.util.Map;
> import java.util.Properties;
>
> -import javax.naming.Binding;
> -import javax.naming.NamingEnumeration;
> -import javax.naming.NamingException;
> -import javax.resource.spi.ResourceAdapter;
>
> import org.apache.openejb.loader.SystemInstance;
> -import org.apache.openejb.spi.ContainerSystem;
> import org.apache.xbean.finder.ResourceFinder;
>
> /**
> @@ -39,7 +34,6 @@ import org.apache.xbean.finder.ResourceF
> public class SimpleServiceManager extends ServiceManager {
>
> private ServerService[] daemons;
> -
> private boolean stop = false;
>
> public SimpleServiceManager() {
> @@ -61,9 +55,9 @@ public class SimpleServiceManager extend
> // Each contains the class name of the daemon implamentation
> // The port to use
> // whether it's turned on
> -
> // May be reusable elsewhere, move if another use occurs
> public static class ServiceFinder {
> +
> private final ResourceFinder resourceFinder;
> private ClassLoader classLoader;
>
> @@ -141,7 +135,7 @@ public class SimpleServiceManager extend
> printRow(d.getName(), d.getIP(), d.getPort() + "");
> }
> } catch (Exception e) {
> - logger.fatal("Service Start Failed: "+d.getName() + " " + d.getIP() + " " + d.getPort() + ": " + e.getMessage());
> + logger.fatal("Service Start Failed: " + d.getName() + " " + d.getIP() + " " + d.getPort() + ": " + e.getMessage());
> if (display) {
> printRow(d.getName(), "----", "FAILED");
> }
> @@ -151,17 +145,19 @@ public class SimpleServiceManager extend
> System.out.println("-------");
> System.out.println("Ready!");
> }
> - if (!block) return;
> + if (!block) {
> + return;
> + }
>
> /*
> - * This will cause the user thread (the thread that keeps the
> - * vm alive) to go into a state of constant waiting.
> - * Each time the thread is woken up, it checks to see if
> - * it should continue waiting.
> - *
> - * To stop the thread (and the VM), just call the stop method
> - * which will set 'stop' to true and notify the user thread.
> - */
> + * This will cause the user thread (the thread that keeps the
> + * vm alive) to go into a state of constant waiting.
> + * Each time the thread is woken up, it checks to see if
> + * it should continue waiting.
> + *
> + * To stop the thread (and the VM), just call the stop method
> + * which will set 'stop' to true and notify the user thread.
> + */
> try {
> while (!stop) {
>
> @@ -175,36 +171,14 @@ public class SimpleServiceManager extend
>
> @Override
> public synchronized void stop() throws ServiceException {
> - logger.info("Received stop signal");
> + logger.info("Stopping server services");
> stop = true;
>
> - try {
> - ContainerSystem containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
> - NamingEnumeration<Binding> namingEnumeration = null;
> - try {
> - namingEnumeration = containerSystem.getJNDIContext().listBindings("openejb/resourceAdapter");
> - } catch (NamingException ignored) {
> - // no resource adapters were created
> - }
> - while (namingEnumeration != null && namingEnumeration.hasMoreElements()) {
> - Binding binding = namingEnumeration.nextElement();
> - Object object = binding.getObject();
> - ResourceAdapter resourceAdapter = (ResourceAdapter) object;
> - try {
> - resourceAdapter.stop();
> - } catch (Exception e) {
> - logger.fatal("ResourceAdapter Shutdown Failed: "+binding.getName(), e);
> - }
> - }
> - } catch (Throwable e) {
> - logger.fatal("Unable to get ResourceAdapters from JNDI. Stop must be called on them for proper vm shutdown.", e);
> - }
> -
> for (int i = 0; i < daemons.length; i++) {
> try {
> daemons[i].stop();
> } catch (ServiceException e) {
> - logger.fatal("Service Shutdown Failed: "+daemons[i].getName()+". Exception: "+e.getMessage(), e);
> + logger.fatal("Service Shutdown Failed: " + daemons[i].getName() + ". Exception: " + e.getMessage(), e);
> }
> }
> notifyAll();
>
> Modified: openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/admin/AdminDaemon.java
> URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/admin/AdminDaemon.java?rev=964353&r1=964352&r2=964353&view=diff
> ==============================================================================
> --- openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/admin/AdminDaemon.java (original)
> +++ openejb/branches/openejb-3.1.x/server/openejb-server/src/main/java/org/apache/openejb/server/admin/AdminDaemon.java Thu Jul 15 09:37:38 2010
> @@ -25,12 +25,16 @@ import org.apache.openejb.server.Service
> import org.apache.openejb.server.Server;
> import org.apache.openejb.client.RequestMethodConstants;
> import org.apache.openejb.loader.SystemInstance;
> +import org.apache.openejb.util.LogCategory;
> +import org.apache.openejb.util.Logger;
>
> public class AdminDaemon implements ServerService {
>
> + @Override
> public void init(Properties props) throws Exception {
> }
>
> + @Override
> public void service(Socket socket) throws ServiceException, IOException {
> InputStream in = null;
>
> @@ -39,54 +43,68 @@ public class AdminDaemon implements Serv
>
> byte requestType = (byte) in.read();
>
> - if (requestType == -1) {
> - return;
> - }
> -
> switch (requestType) {
> + case -1:
> + return;
> case RequestMethodConstants.STOP_REQUEST_Quit:
> case RequestMethodConstants.STOP_REQUEST_quit:
> case RequestMethodConstants.STOP_REQUEST_Stop:
> case RequestMethodConstants.STOP_REQUEST_stop:
> Server server = SystemInstance.get().getComponent(Server.class);
> server.stop();
> -
> + break;
> + default:
> + //If this turns up in the logs then it is time to take action
> + Logger.getInstance(LogCategory.OPENEJB_SERVER, AdminDaemon.class).warning("Invalid Server Socket request: " + requestType);
> + break;
> }
>
> - } catch (SecurityException e) {
> -
> } catch (Throwable e) {
> -
> + Logger.getInstance(LogCategory.OPENEJB_SERVER, AdminDaemon.class).warning("Server Socket request failed", e);
> } finally {
> - try {
> - if (in != null) in.close();
> - if (socket != null) socket.close();
> - } catch (Throwable t) {
> + if (null != in) {
> + try {
> + in.close();
> + } catch (Throwable t) {
> + //Ignore
> + }
> + }
>
> + if (null != socket) {
> + try {
> + socket.close();
> + } catch (Throwable t) {
> + //Ignore
> + }
> }
> }
> }
>
> + @Override
> public void service(InputStream in, OutputStream out) throws ServiceException, IOException {
> throw new UnsupportedOperationException("Method not implemented: service(InputStream in, OutputStream out)");
> }
> -
> +
> + @Override
> public void start() throws ServiceException {
> }
>
> + @Override
> public void stop() throws ServiceException {
> }
>
> + @Override
> public int getPort() {
> return 0;
> }
>
> + @Override
> public String getIP() {
> return "";
> }
>
> + @Override
> public String getName() {
> return "admin thread";
> }
> -
> }
>
>