You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jl...@apache.org on 2006/10/08 23:08:14 UTC
svn commit: r454210 - in /incubator/openejb/trunk/openejb3:
container/openejb-core/src/main/java/org/apache/openejb/util/
server/openejb-server/src/main/java/org/apache/openejb/server/
server/openejb-server/src/main/resources/META-INF/
Author: jlaskowski
Date: Sun Oct 8 14:08:14 2006
New Revision: 454210
URL: http://svn.apache.org/viewvc?view=rev&rev=454210
Log:
More XBean-isation - add PropertiesService that will keep track of (un)setting properties
Added:
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/PropertiesService.java (with props)
Modified:
incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Main.java
incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java
incubator/openejb/trunk/openejb3/server/openejb-server/src/main/resources/META-INF/openejb-server.xml (contents, props changed)
Added: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/PropertiesService.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/PropertiesService.java?view=auto&rev=454210
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/PropertiesService.java (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/PropertiesService.java Sun Oct 8 14:08:14 2006
@@ -0,0 +1,119 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.util;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * Manages properties so any property modifications are handled here.
+ *
+ * It lets us track the properties used and possibly remove some. They are all
+ * scattered in many places and it's so hard to keep track of them.
+ *
+ * The class holds all OpenEJB properties and optionally can amend the
+ * environment.
+ *
+ * The aim of this class is to establish one place to keep the properties and
+ * eventually remove the need to set System properties to communicate between
+ * parts and possibly yet lay out a foundation for setting them up in JNDI or
+ * some other means
+ *
+ * TODO: Should this class be concerned with concurrency issues?
+ *
+ * @org.apache.xbean.XBean element="propertiesService"
+ *
+ * @version $Rev$ $Date$
+ */
+public class PropertiesService {
+ private Properties props = new Properties();
+
+ /**
+ * Should properties be passed on to the environment?
+ */
+ private boolean passOn = true;
+
+ /**
+ * Should the service query environment properties upon initialization?
+ */
+ private boolean queryEnvOnInit = true;
+
+ public PropertiesService() {
+ if (queryEnvOnInit) {
+ props.putAll(System.getProperties());
+ }
+ }
+
+ /**
+ * Set value to a property. Optionally set System property via
+ * {@link System#setProperty(String, String)}
+ *
+ * @param name
+ * property name
+ * @param value
+ * property value
+ * @return previous property value or null if the value hasn't been assigned
+ * yet
+ */
+ public String setProperty(String name, String value) {
+ if (passOn) {
+ System.setProperty(name, value);
+ }
+ return (String) props.setProperty(name, value);
+ }
+
+ public String getProperty(String name) {
+ return (String) props.get(name);
+ }
+
+ /**
+ * ISSUE: It might be of help to differentiate between unavailable property
+ * and boolean property set to false
+ *
+ * @param name
+ * property name
+ * @return true if property keyed by name is set; false otherwise
+ */
+ public boolean isSet(String name) {
+ return props.containsKey(name);
+ }
+
+ public void putAll(Properties props) {
+ props.putAll(props);
+ }
+
+ public Properties getProperties() {
+ return props;
+ }
+
+ public boolean isPassOn() {
+ return passOn;
+ }
+
+ public void setPassOn(boolean passOn) {
+ this.passOn = passOn;
+ }
+
+ public boolean isQueryEnvOnInit() {
+ return queryEnvOnInit;
+ }
+
+ public void setQueryEnvOnInit(boolean queryEnvOnInit) {
+ this.queryEnvOnInit = queryEnvOnInit;
+ }
+}
Propchange: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/PropertiesService.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/PropertiesService.java
------------------------------------------------------------------------------
svn:keywords = Date Rev Author Id Revision HeadURL
Modified: incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Main.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Main.java?view=diff&rev=454210&r1=454209&r2=454210
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Main.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Main.java Sun Oct 8 14:08:14 2006
@@ -23,28 +23,41 @@
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.util.JarUtils;
+import org.apache.openejb.util.PropertiesService;
import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
import org.apache.xbean.spring.context.SpringApplicationContext;
-import org.apache.xbean.spring.context.v2.XBeanXmlBeanFactory;
-import org.springframework.context.support.AbstractXmlApplicationContext;
-import org.springframework.core.io.ClassPathResource;
/**
- * Assemble OpenEJB instance and boot it up
+ * Assemble OpenEJB instance and boot it up
*/
public class Main {
private static final String helpBase = "META-INF/org.apache.openejb.cli/";
+ // TODO: Remove the static initializer once Main is fully XBean-ized
+ private static final SpringApplicationContext factory;
+ static {
+ factory = new ClassPathXmlApplicationContext("META-INF/openejb-server.xml");
+ }
+
public static void main(String args[]) {
try {
+ PropertiesService propertiesService = (PropertiesService) factory.getBean("propertiesService");
Properties props = parseArguments(args);
- SystemInstance.init(props);
+ // FIXME: Remove parseArguments and let propertiesService take care of properties mgmt
+ propertiesService.putAll(props);
+
+ // FIXME: Enable XBean-ized SystemInstance
+ //SystemInstance system = (SystemInstance) factory.getBean("system");
+
+ SystemInstance.init(propertiesService.getProperties());
SystemInstance system = SystemInstance.get();
File libs = system.getHome().getDirectory("lib");
system.getClassPath().addJarsToPath(libs);
- initServer(props);
+
+ Server server = (Server) factory.getBean("server");
+ server.start();
} catch (DontStartServerException e) {
} catch (Exception e) {
@@ -53,11 +66,15 @@
}
/**
- * Parse arguments and override any {@link System} properties returned via {@link System#getProperties()}.
- *
- * @param args command line arguments
+ * Parse arguments and override any {@link System} properties returned via
+ * {@link System#getProperties()}.
+ *
+ * @param args
+ * command line arguments
* @return properties as defined in System and on the command line
- * @throws DontStartServerException thrown as an indication to not boot up OpenEJB instance, e.g. after printing out properties, help, etc.
+ * @throws DontStartServerException
+ * thrown as an indication to not boot up OpenEJB instance, e.g.
+ * after printing out properties, help, etc.
*/
private static Properties parseArguments(String args[]) throws DontStartServerException {
Properties props = new Properties();
@@ -99,10 +116,8 @@
props.setProperty("openejb.server.admin-ip", args[++i]);
}
} else if (args[i].startsWith("--local-copy")) {
- if (args[i].endsWith("false") ||
- args[i].endsWith("FALSE") ||
- args[i].endsWith("no") ||
- args[i].endsWith("NO")) {
+ if (args[i].endsWith("false") || args[i].endsWith("FALSE") || args[i].endsWith("no")
+ || args[i].endsWith("NO")) {
props.setProperty("openejb.localcopy", "false");
} else {
props.setProperty("openejb.localcopy", "true");
@@ -133,9 +148,9 @@
try {
JarUtils.setHandlerSystemProperty();
versionInfo.load(new URL("resource:/openejb-version.properties").openConnection().getInputStream());
- } catch (java.io.IOException e) {
- }
- System.out.println("OpenEJB Remote Server " + versionInfo.get("version") + " build: " + versionInfo.get("date") + "-" + versionInfo.get("time"));
+ } catch (java.io.IOException e) {}
+ System.out.println("OpenEJB Remote Server " + versionInfo.get("version") + " build: "
+ + versionInfo.get("date") + "-" + versionInfo.get("time"));
System.out.println("" + versionInfo.get("url"));
}
@@ -146,8 +161,7 @@
Properties versionInfo = new Properties();
versionInfo.load(new URL("resource:/openejb-version.properties").openConnection().getInputStream());
header += versionInfo.get("version");
- } catch (java.io.IOException e) {
- }
+ } catch (java.io.IOException e) {}
System.out.println(header);
@@ -159,8 +173,7 @@
System.out.write(b);
b = in.read();
}
- } catch (java.io.IOException e) {
- }
+ } catch (java.io.IOException e) {}
}
private static void printExamples() {
@@ -170,8 +183,7 @@
Properties versionInfo = new Properties();
versionInfo.load(new URL("resource:/openejb-version.properties").openConnection().getInputStream());
header += versionInfo.get("version");
- } catch (java.io.IOException e) {
- }
+ } catch (java.io.IOException e) {}
System.out.println(header);
@@ -183,22 +195,8 @@
System.out.write(b);
b = in.read();
}
- } catch (java.io.IOException e) {
- }
- }
-
- private static void initServer(Properties props) throws Exception {
- //Server server = new Server();
-// FIXME: XBeanXmlBeanFactory vs AbstractXmlApplicationContext
-// XBeanXmlBeanFactory factory = new XBeanXmlBeanFactory(new ClassPathResource("META-INF/openejb-server.xml"));
-// Server server = (Server) factory.getBean("server");
- SpringApplicationContext factory = new ClassPathXmlApplicationContext("META-INF/openejb-server.xml");
- Server server = (Server) factory.getBean("server");
- server.init(props);
- server.start();
+ } catch (java.io.IOException e) {}
}
}
-class DontStartServerException extends Exception {
-}
-
+class DontStartServerException extends Exception {}
Modified: incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java?view=diff&rev=454210&r1=454209&r2=454210
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java Sun Oct 8 14:08:14 2006
@@ -23,6 +23,7 @@
import org.apache.openejb.OpenEJB;
import org.apache.openejb.util.Logger;
import org.apache.openejb.util.Messages;
+import org.apache.openejb.util.PropertiesService;
import org.apache.openejb.util.SafeToolkit;
/**
@@ -37,7 +38,10 @@
private Messages _messages = new Messages("org.apache.openejb.server");
private Logger logger = Logger.getInstance("OpenEJB.server.remote", "org.apache.openejb.server");
+ // FIXME: Remove it completely once we ensure PropertiesService (below) works well
Properties props;
+
+ private PropertiesService propertiesService;
static Server server;
private ServiceManager manager;
@@ -50,19 +54,32 @@
return server;
}
+ // TODO: Remove it once init() suits our (initialisation) needs
public void init(java.util.Properties props) throws Exception {
this.props = props;
- OpenEJB.init(props, new ServerFederation());
+ OpenEJB.init(propertiesService.getProperties(), new ServerFederation());
if (System.getProperty("openejb.nobanner") == null) {
System.out.println("[init] OpenEJB Remote Server");
}
- // it's injected by XBean
- // @see openejb-server.xml
- // FIXME: Remove it once we're certain it works well (which should be in a couple of commits)
- //manager = ServiceManager.getManager();
+ manager.init();
+ }
+
+ /**
+ * Copy of {@link #init(Properties)} to XBean-ize it
+ *
+ * @throws Exception
+ */
+ public void init() throws Exception {
+
+ OpenEJB.init(propertiesService.getProperties(), new ServerFederation());
+
+ if (!propertiesService.isSet("openejb.nobanner")) {
+ System.out.println("[init] OpenEJB Remote Server");
+ }
+
manager.init();
}
@@ -88,6 +105,10 @@
public void setServiceManager(ServiceManager serviceManager) {
this.manager = serviceManager;
+ }
+
+ public void setPropertiesService(PropertiesService propertiesService) {
+ this.propertiesService = propertiesService;
}
}
Modified: incubator/openejb/trunk/openejb3/server/openejb-server/src/main/resources/META-INF/openejb-server.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-server/src/main/resources/META-INF/openejb-server.xml?view=diff&rev=454210&r1=454209&r2=454210
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-server/src/main/resources/META-INF/openejb-server.xml (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-server/src/main/resources/META-INF/openejb-server.xml Sun Oct 8 14:08:14 2006
@@ -1,5 +1,5 @@
<!--
-
+
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
@@ -7,7 +7,7 @@
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
+ http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
@@ -19,9 +19,17 @@
<!-- $Rev$ $Date$ -->
-<beans xmlns:o="http://openejb.apache.org/schemas/server">
- <o:server id="server">
+<beans xmlns:s="http://openejb.apache.org/schemas/server" xmlns:c="http://openejb.apache.org/schemas/core"
+ xmlns:l="http://openejb.apache.org/schemas/loader">
+ <s:server id="server" init-method="init">
<property name="serviceManager" ref="serviceManager" />
- </o:server>
+ <property name="propertiesService" ref="propertiesService" />
+ </s:server>
+ <c:propertiesService id="propertiesService" />
<bean id="serviceManager" class="org.apache.openejb.server.ServiceManager" factory-method="getManager" />
+ <!--
+ - FIXME: The only singleton class with lots of static code - really hard to get it XBean-ized properly
+ -
+ <l:system factory-method="get" init-method="init" />
+ -->
</beans>
Propchange: incubator/openejb/trunk/openejb3/server/openejb-server/src/main/resources/META-INF/openejb-server.xml
------------------------------------------------------------------------------
svn:keywords = Date Rev Author Id Revision HeadURL
Re: svn commit: r454210 - in /incubator/openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/util/ server/openejb-server/src/main/java/org/apache/openejb/server/ server/openejb-server/src/main/resources/META-INF/
Posted by Jacek Laskowski <ja...@laskowski.net.pl>.
On 10/9/06, David Blevins <da...@visi.com> wrote:
> Actually, everything that's using System.getProperty or
> System.getProperties should be instead using SystemInstance.get
> ().getProperty/getProperties
>
> Perhaps I didn't describe the intention of it clearly, but it's
> basically mean to be exactly how you describe PropertiesService --
> i.e. the one and only place where properties are retrieved.
Let me then yank the PropertiesService and replace it with
SystemInstance. I had an enormous trouble getting my head around
SystemInstance and thus likely my misunderstanding of its use. Thanks
for pointing it out.
The less code to maintain the better.
Jacek
--
Jacek Laskowski
http://www.laskowski.net.pl
Re: svn commit: r454210 - in /incubator/openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/util/ server/openejb-server/src/main/java/org/apache/openejb/server/ server/openejb-server/src/main/resources/META-INF/
Posted by David Blevins <da...@visi.com>.
Actually, everything that's using System.getProperty or
System.getProperties should be instead using SystemInstance.get
().getProperty/getProperties
Perhaps I didn't describe the intention of it clearly, but it's
basically mean to be exactly how you describe PropertiesService --
i.e. the one and only place where properties are retrieved.
I swear at one point in February I yanked all usage of
System.getProperties for systemInstance.getProperties(), but it
doesn't look like it made it into svn :( I recall it being a big
issue for the tomcat "one openejb per webapp" scenario where usage of
System.getProperties was a real problem.
-David
On Oct 8, 2006, at 2:08 PM, jlaskowski@apache.org wrote:
> Author: jlaskowski
> Date: Sun Oct 8 14:08:14 2006
> New Revision: 454210
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=454210
> Log:
> More XBean-isation - add PropertiesService that will keep track of
> (un)setting properties
>
> Added:
> incubator/openejb/trunk/openejb3/container/openejb-core/src/
> main/java/org/apache/openejb/util/PropertiesService.java (with
> props)
> Modified:
> incubator/openejb/trunk/openejb3/server/openejb-server/src/main/
> java/org/apache/openejb/server/Main.java
> incubator/openejb/trunk/openejb3/server/openejb-server/src/main/
> java/org/apache/openejb/server/Server.java
> incubator/openejb/trunk/openejb3/server/openejb-server/src/main/
> resources/META-INF/openejb-server.xml (contents, props changed)
>
> Added: incubator/openejb/trunk/openejb3/container/openejb-core/src/
> main/java/org/apache/openejb/util/PropertiesService.java
> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/
> container/openejb-core/src/main/java/org/apache/openejb/util/
> PropertiesService.java?view=auto&rev=454210
> ======================================================================
> ========
> --- incubator/openejb/trunk/openejb3/container/openejb-core/src/
> main/java/org/apache/openejb/util/PropertiesService.java (added)
> +++ incubator/openejb/trunk/openejb3/container/openejb-core/src/
> main/java/org/apache/openejb/util/PropertiesService.java Sun Oct 8
> 14:08:14 2006
> @@ -0,0 +1,119 @@
> +/**
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements. See the NOTICE file
> distributed with
> + * this work for additional information regarding copyright
> ownership.
> + * The ASF licenses this file to You under the Apache License,
> Version 2.0
> + * (the "License"); you may not use this file except in compliance
> with
> + * the License. You may obtain a copy of the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> + * See the License for the specific language governing permissions
> and
> + * limitations under the License.
> + */
> +package org.apache.openejb.util;
> +
> +import java.util.HashMap;
> +import java.util.Map;
> +import java.util.Properties;
> +
> +/**
> + * Manages properties so any property modifications are handled here.
> + *
> + * It lets us track the properties used and possibly remove some.
> They are all
> + * scattered in many places and it's so hard to keep track of them.
> + *
> + * The class holds all OpenEJB properties and optionally can amend
> the
> + * environment.
> + *
> + * The aim of this class is to establish one place to keep the
> properties and
> + * eventually remove the need to set System properties to
> communicate between
> + * parts and possibly yet lay out a foundation for setting them up
> in JNDI or
> + * some other means
> + *
> + * TODO: Should this class be concerned with concurrency issues?
> + *
> + * @org.apache.xbean.XBean element="propertiesService"
> + *
> + * @version $Rev$ $Date$
> + */
> +public class PropertiesService {
> + private Properties props = new Properties();
> +
> + /**
> + * Should properties be passed on to the environment?
> + */
> + private boolean passOn = true;
> +
> + /**
> + * Should the service query environment properties upon
> initialization?
> + */
> + private boolean queryEnvOnInit = true;
> +
> + public PropertiesService() {
> + if (queryEnvOnInit) {
> + props.putAll(System.getProperties());
> + }
> + }
> +
> + /**
> + * Set value to a property. Optionally set System property via
> + * {@link System#setProperty(String, String)}
> + *
> + * @param name
> + * property name
> + * @param value
> + * property value
> + * @return previous property value or null if the value hasn't
> been assigned
> + * yet
> + */
> + public String setProperty(String name, String value) {
> + if (passOn) {
> + System.setProperty(name, value);
> + }
> + return (String) props.setProperty(name, value);
> + }
> +
> + public String getProperty(String name) {
> + return (String) props.get(name);
> + }
> +
> + /**
> + * ISSUE: It might be of help to differentiate between
> unavailable property
> + * and boolean property set to false
> + *
> + * @param name
> + * property name
> + * @return true if property keyed by name is set; false otherwise
> + */
> + public boolean isSet(String name) {
> + return props.containsKey(name);
> + }
> +
> + public void putAll(Properties props) {
> + props.putAll(props);
> + }
> +
> + public Properties getProperties() {
> + return props;
> + }
> +
> + public boolean isPassOn() {
> + return passOn;
> + }
> +
> + public void setPassOn(boolean passOn) {
> + this.passOn = passOn;
> + }
> +
> + public boolean isQueryEnvOnInit() {
> + return queryEnvOnInit;
> + }
> +
> + public void setQueryEnvOnInit(boolean queryEnvOnInit) {
> + this.queryEnvOnInit = queryEnvOnInit;
> + }
> +}
>
> Propchange: incubator/openejb/trunk/openejb3/container/openejb-core/
> src/main/java/org/apache/openejb/util/PropertiesService.java
> ----------------------------------------------------------------------
> --------
> svn:executable = *
>
> Propchange: incubator/openejb/trunk/openejb3/container/openejb-core/
> src/main/java/org/apache/openejb/util/PropertiesService.java
> ----------------------------------------------------------------------
> --------
> svn:keywords = Date Rev Author Id Revision HeadURL
>
> Modified: incubator/openejb/trunk/openejb3/server/openejb-server/
> src/main/java/org/apache/openejb/server/Main.java
> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/
> server/openejb-server/src/main/java/org/apache/openejb/server/
> Main.java?view=diff&rev=454210&r1=454209&r2=454210
> ======================================================================
> ========
> --- incubator/openejb/trunk/openejb3/server/openejb-server/src/main/
> java/org/apache/openejb/server/Main.java (original)
> +++ incubator/openejb/trunk/openejb3/server/openejb-server/src/main/
> java/org/apache/openejb/server/Main.java Sun Oct 8 14:08:14 2006
> @@ -23,28 +23,41 @@
>
> import org.apache.openejb.loader.SystemInstance;
> import org.apache.openejb.util.JarUtils;
> +import org.apache.openejb.util.PropertiesService;
> import
> org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
> import org.apache.xbean.spring.context.SpringApplicationContext;
> -import org.apache.xbean.spring.context.v2.XBeanXmlBeanFactory;
> -import
> org.springframework.context.support.AbstractXmlApplicationContext;
> -import org.springframework.core.io.ClassPathResource;
>
> /**
> - * Assemble OpenEJB instance and boot it up
> + * Assemble OpenEJB instance and boot it up
> */
> public class Main {
>
> private static final String helpBase = "META-INF/
> org.apache.openejb.cli/";
>
> + // TODO: Remove the static initializer once Main is fully
> XBean-ized
> + private static final SpringApplicationContext factory;
> + static {
> + factory = new ClassPathXmlApplicationContext("META-INF/
> openejb-server.xml");
> + }
> +
> public static void main(String args[]) {
>
> try {
> + PropertiesService propertiesService =
> (PropertiesService) factory.getBean("propertiesService");
> Properties props = parseArguments(args);
> - SystemInstance.init(props);
> + // FIXME: Remove parseArguments and let
> propertiesService take care of properties mgmt
> + propertiesService.putAll(props);
> +
> + // FIXME: Enable XBean-ized SystemInstance
> + //SystemInstance system = (SystemInstance)
> factory.getBean("system");
> +
> + SystemInstance.init(propertiesService.getProperties());
> SystemInstance system = SystemInstance.get();
> File libs = system.getHome().getDirectory("lib");
> system.getClassPath().addJarsToPath(libs);
> - initServer(props);
> +
> + Server server = (Server) factory.getBean("server");
> + server.start();
> } catch (DontStartServerException e) {
>
> } catch (Exception e) {
> @@ -53,11 +66,15 @@
> }
>
> /**
> - * Parse arguments and override any {@link System} properties
> returned via {@link System#getProperties()}.
> - *
> - * @param args command line arguments
> + * Parse arguments and override any {@link System} properties
> returned via
> + * {@link System#getProperties()}.
> + *
> + * @param args
> + * command line arguments
> * @return properties as defined in System and on the command
> line
> - * @throws DontStartServerException thrown as an indication to
> not boot up OpenEJB instance, e.g. after printing out properties,
> help, etc.
> + * @throws DontStartServerException
> + * thrown as an indication to not boot up OpenEJB
> instance, e.g.
> + * after printing out properties, help, etc.
> */
> private static Properties parseArguments(String args[]) throws
> DontStartServerException {
> Properties props = new Properties();
> @@ -99,10 +116,8 @@
> props.setProperty("openejb.server.admin-ip",
> args[++i]);
> }
> } else if (args[i].startsWith("--local-copy")) {
> - if (args[i].endsWith("false") ||
> - args[i].endsWith("FALSE") ||
> - args[i].endsWith("no") ||
> - args[i].endsWith("NO")) {
> + if (args[i].endsWith("false") || args[i].endsWith
> ("FALSE") || args[i].endsWith("no")
> + || args[i].endsWith("NO")) {
> props.setProperty("openejb.localcopy", "false");
> } else {
> props.setProperty("openejb.localcopy", "true");
> @@ -133,9 +148,9 @@
> try {
> JarUtils.setHandlerSystemProperty();
> versionInfo.load(new URL("resource:/openejb-
> version.properties").openConnection().getInputStream());
> - } catch (java.io.IOException e) {
> - }
> - System.out.println("OpenEJB Remote Server " +
> versionInfo.get("version") + " build: " + versionInfo.get
> ("date") + "-" + versionInfo.get("time"));
> + } catch (java.io.IOException e) {}
> + System.out.println("OpenEJB Remote Server " +
> versionInfo.get("version") + " build: "
> + + versionInfo.get("date") + "-" + versionInfo.get
> ("time"));
> System.out.println("" + versionInfo.get("url"));
> }
>
> @@ -146,8 +161,7 @@
> Properties versionInfo = new Properties();
> versionInfo.load(new URL("resource:/openejb-
> version.properties").openConnection().getInputStream());
> header += versionInfo.get("version");
> - } catch (java.io.IOException e) {
> - }
> + } catch (java.io.IOException e) {}
>
> System.out.println(header);
>
> @@ -159,8 +173,7 @@
> System.out.write(b);
> b = in.read();
> }
> - } catch (java.io.IOException e) {
> - }
> + } catch (java.io.IOException e) {}
> }
>
> private static void printExamples() {
> @@ -170,8 +183,7 @@
> Properties versionInfo = new Properties();
> versionInfo.load(new URL("resource:/openejb-
> version.properties").openConnection().getInputStream());
> header += versionInfo.get("version");
> - } catch (java.io.IOException e) {
> - }
> + } catch (java.io.IOException e) {}
>
> System.out.println(header);
>
> @@ -183,22 +195,8 @@
> System.out.write(b);
> b = in.read();
> }
> - } catch (java.io.IOException e) {
> - }
> - }
> -
> - private static void initServer(Properties props) throws
> Exception {
> - //Server server = new Server();
> -// FIXME: XBeanXmlBeanFactory vs AbstractXmlApplicationContext
> -// XBeanXmlBeanFactory factory = new XBeanXmlBeanFactory
> (new ClassPathResource("META-INF/openejb-server.xml"));
> -// Server server = (Server) factory.getBean("server");
> - SpringApplicationContext factory = new
> ClassPathXmlApplicationContext("META-INF/openejb-server.xml");
> - Server server = (Server) factory.getBean("server");
> - server.init(props);
> - server.start();
> + } catch (java.io.IOException e) {}
> }
> }
>
> -class DontStartServerException extends Exception {
> -}
> -
> +class DontStartServerException extends Exception {}
>
> Modified: incubator/openejb/trunk/openejb3/server/openejb-server/
> src/main/java/org/apache/openejb/server/Server.java
> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/
> server/openejb-server/src/main/java/org/apache/openejb/server/
> Server.java?view=diff&rev=454210&r1=454209&r2=454210
> ======================================================================
> ========
> --- incubator/openejb/trunk/openejb3/server/openejb-server/src/main/
> java/org/apache/openejb/server/Server.java (original)
> +++ incubator/openejb/trunk/openejb3/server/openejb-server/src/main/
> java/org/apache/openejb/server/Server.java Sun Oct 8 14:08:14 2006
> @@ -23,6 +23,7 @@
> import org.apache.openejb.OpenEJB;
> import org.apache.openejb.util.Logger;
> import org.apache.openejb.util.Messages;
> +import org.apache.openejb.util.PropertiesService;
> import org.apache.openejb.util.SafeToolkit;
>
> /**
> @@ -37,7 +38,10 @@
> private Messages _messages = new Messages
> ("org.apache.openejb.server");
> private Logger logger = Logger.getInstance
> ("OpenEJB.server.remote", "org.apache.openejb.server");
>
> + // FIXME: Remove it completely once we ensure
> PropertiesService (below) works well
> Properties props;
> +
> + private PropertiesService propertiesService;
>
> static Server server;
> private ServiceManager manager;
> @@ -50,19 +54,32 @@
> return server;
> }
>
> + // TODO: Remove it once init() suits our (initialisation) needs
> public void init(java.util.Properties props) throws Exception {
> this.props = props;
>
> - OpenEJB.init(props, new ServerFederation());
> + OpenEJB.init(propertiesService.getProperties(), new
> ServerFederation());
>
> if (System.getProperty("openejb.nobanner") == null) {
> System.out.println("[init] OpenEJB Remote Server");
> }
>
> - // it's injected by XBean
> - // @see openejb-server.xml
> - // FIXME: Remove it once we're certain it works well
> (which should be in a couple of commits)
> - //manager = ServiceManager.getManager();
> + manager.init();
> + }
> +
> + /**
> + * Copy of {@link #init(Properties)} to XBean-ize it
> + *
> + * @throws Exception
> + */
> + public void init() throws Exception {
> +
> + OpenEJB.init(propertiesService.getProperties(), new
> ServerFederation());
> +
> + if (!propertiesService.isSet("openejb.nobanner")) {
> + System.out.println("[init] OpenEJB Remote Server");
> + }
> +
> manager.init();
> }
>
> @@ -88,6 +105,10 @@
>
> public void setServiceManager(ServiceManager serviceManager) {
> this.manager = serviceManager;
> + }
> +
> + public void setPropertiesService(PropertiesService
> propertiesService) {
> + this.propertiesService = propertiesService;
> }
> }
>
>
> Modified: incubator/openejb/trunk/openejb3/server/openejb-server/
> src/main/resources/META-INF/openejb-server.xml
> URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/
> server/openejb-server/src/main/resources/META-INF/openejb-
> server.xml?view=diff&rev=454210&r1=454209&r2=454210
> ======================================================================
> ========
> --- incubator/openejb/trunk/openejb3/server/openejb-server/src/main/
> resources/META-INF/openejb-server.xml (original)
> +++ incubator/openejb/trunk/openejb3/server/openejb-server/src/main/
> resources/META-INF/openejb-server.xml Sun Oct 8 14:08:14 2006
> @@ -1,5 +1,5 @@
> <!--
> -
> +
> Licensed to the Apache Software Foundation (ASF) under one or
> more
> contributor license agreements. See the NOTICE file
> distributed with
> this work for additional information regarding copyright
> ownership.
> @@ -7,7 +7,7 @@
> (the "License"); you may not use this file except in
> compliance with
> the License. You may obtain a copy of the License at
>
> - http://www.apache.org/licenses/LICENSE-2.0
> + http://www.apache.org/licenses/LICENSE-2.0
>
> Unless required by applicable law or agreed to in writing,
> software
> distributed under the License is distributed on an "AS IS" BASIS,
> @@ -19,9 +19,17 @@
>
> <!-- $Rev$ $Date$ -->
>
> -<beans xmlns:o="http://openejb.apache.org/schemas/server">
> - <o:server id="server">
> +<beans xmlns:s="http://openejb.apache.org/schemas/server"
> xmlns:c="http://openejb.apache.org/schemas/core"
> + xmlns:l="http://openejb.apache.org/schemas/loader">
> + <s:server id="server" init-method="init">
> <property name="serviceManager" ref="serviceManager" />
> - </o:server>
> + <property name="propertiesService" ref="propertiesService" />
> + </s:server>
> + <c:propertiesService id="propertiesService" />
> <bean id="serviceManager"
> class="org.apache.openejb.server.ServiceManager" factory-
> method="getManager" />
> + <!--
> + - FIXME: The only singleton class with lots of static code
> - really hard to get it XBean-ized properly
> + -
> + <l:system factory-method="get" init-method="init" />
> + -->
> </beans>
>
> Propchange: incubator/openejb/trunk/openejb3/server/openejb-server/
> src/main/resources/META-INF/openejb-server.xml
> ----------------------------------------------------------------------
> --------
> svn:keywords = Date Rev Author Id Revision HeadURL
>
>