You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by da...@apache.org on 2008/01/03 21:27:02 UTC
svn commit: r608621 - in /openejb/trunk/openejb3/server/openejb-http/src:
main/java/org/apache/openejb/server/httpd/
test/java/org/apache/openejb/server/httpd/
Author: dain
Date: Thu Jan 3 12:27:02 2008
New Revision: 608621
URL: http://svn.apache.org/viewvc?rev=608621&view=rev
Log:
When jetty classes are present use it instead of the OpenEJBHttpSever
Added:
openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpServer.java
openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java (contents, props changed)
- copied, changed from r608268, openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpServer.java
openejb/trunk/openejb3/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/JettyTest.java
Modified:
openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpEjbServer.java
openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/JettyHttpServer.java
openejb/trunk/openejb3/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/HttpEjbServerTest.java
Modified: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpEjbServer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpEjbServer.java?rev=608621&r1=608620&r2=608621&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpEjbServer.java (original)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpEjbServer.java Thu Jan 3 12:27:02 2008
@@ -49,7 +49,28 @@
registry.addHttpListener(adapter, "/ejb/?.*");
- httpServer = new HttpServer(registry);
+ // props can name an implementation
+ // if implementation is not named, use jetty if jetty classes are present; otherwise use openejb
+ String impl = props.getProperty("impl");
+ if ("Jetty".equalsIgnoreCase(impl)) {
+ httpServer = (HttpServer) getClass().getClassLoader().loadClass("org.apache.openejb.server.httpd.JettyHttpServer").newInstance();
+ } else if ("OpenEJB".equalsIgnoreCase(impl)) {
+ httpServer = new OpenEJBHttpServer(registry);
+ } else if (impl == null) {
+ try {
+ getClass().getClassLoader().loadClass("org.mortbay.jetty.Server");
+ httpServer = (HttpServer) getClass().getClassLoader().loadClass("org.apache.openejb.server.httpd.JettyHttpServer").newInstance();
+ } catch (Exception ignored) {
+ // Jetty classes not available
+ httpServer = new OpenEJBHttpServer(registry);
+ }
+ } else {
+ throw new IllegalArgumentException("Unknown HTTP server impl '" + impl + "'. Valid implementation are OpenEJB and Jetty.");
+ }
+
+ // register the http server
+ systemInstance.setComponent(HttpServer.class, httpServer);
+
httpServer.init(props);
ejbServer.init(props);
}
Added: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpServer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpServer.java?rev=608621&view=auto
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpServer.java (added)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpServer.java Thu Jan 3 12:27:02 2008
@@ -0,0 +1,24 @@
+/**
+ *
+ * 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.server.httpd;
+
+import org.apache.openejb.server.ServerService;
+
+public interface HttpServer extends ServerService {
+ HttpListener getListener();
+}
Modified: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/JettyHttpServer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/JettyHttpServer.java?rev=608621&r1=608620&r2=608621&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/JettyHttpServer.java (original)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/JettyHttpServer.java Thu Jan 3 12:27:02 2008
@@ -17,7 +17,6 @@
package org.apache.openejb.server.httpd;
import org.apache.openejb.server.SelfManaging;
-import org.apache.openejb.server.ServerService;
import org.apache.openejb.server.ServiceException;
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Handler;
@@ -40,7 +39,7 @@
/**
* Jetty based http server implementation
*/
-public class JettyHttpServer implements ServerService, SelfManaging {
+public class JettyHttpServer implements HttpServer, SelfManaging {
private final HttpListener listener;
private Server server;
private int port;
@@ -53,6 +52,10 @@
this.listener = listener;
}
+ public HttpListener getListener() {
+ return listener;
+ }
+
public void service(Socket socket) throws ServiceException, IOException {
throw new UnsupportedOperationException();
}
@@ -74,7 +77,7 @@
}
public void init(Properties props) throws Exception {
- port = Integer.parseInt(props.getProperty("port"));
+ port = Integer.parseInt(props.getProperty("port", "8080"));
// Create all the Jetty objects but dont' start them
server = new Server();
Copied: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java (from r608268, openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpServer.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java?p2=openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java&p1=openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpServer.java&r1=608268&r2=608621&rev=608621&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpServer.java (original)
+++ openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java Thu Jan 3 12:27:02 2008
@@ -17,7 +17,6 @@
package org.apache.openejb.server.httpd;
import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.server.ServerService;
import org.apache.openejb.server.ServiceException;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
@@ -35,16 +34,20 @@
*
* @since 11/25/2001
*/
-public class HttpServer implements ServerService {
+public class OpenEJBHttpServer implements HttpServer {
private static final Logger log = Logger.getInstance(LogCategory.HTTPSERVER, "org.apache.openejb.util.resources");
private HttpListener listener;
- public HttpServer() {
+ public OpenEJBHttpServer() {
}
- public HttpServer(HttpListener listener) {
+ public OpenEJBHttpServer(HttpListener listener) {
this.listener = listener;
+ }
+
+ public HttpListener getListener() {
+ return listener;
}
public void service(Socket socket) throws ServiceException, IOException {
Propchange: openejb/trunk/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java
------------------------------------------------------------------------------
svn:keywords = Date Rev Author Id Revision HeadURL
Modified: openejb/trunk/openejb3/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/HttpEjbServerTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/HttpEjbServerTest.java?rev=608621&r1=608620&r2=608621&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/HttpEjbServerTest.java (original)
+++ openejb/trunk/openejb3/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/HttpEjbServerTest.java Thu Jan 3 12:27:02 2008
@@ -77,7 +77,7 @@
try {
EjbServer ejbServer = new EjbServer();
ServerServiceAdapter adapter = new ServerServiceAdapter(ejbServer);
- HttpServer httpServer = new HttpServer(adapter);
+ HttpServer httpServer = new OpenEJBHttpServer(adapter);
props.put("openejb.deployments.classpath", "true");
OpenEJB.init(props, new ServerFederation());
Added: openejb/trunk/openejb3/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/JettyTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/JettyTest.java?rev=608621&view=auto
==============================================================================
--- openejb/trunk/openejb3/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/JettyTest.java (added)
+++ openejb/trunk/openejb3/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/JettyTest.java Thu Jan 3 12:27:02 2008
@@ -0,0 +1,79 @@
+/**
+ *
+ * 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.server.httpd;
+
+import java.util.Properties;
+
+import junit.framework.TestCase;
+import org.apache.openejb.core.CoreContainerSystem;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
+
+public class JettyTest extends TestCase {
+ public void testJettyImpl() throws Exception {
+ SystemInstance.get().setComponent(ContainerSystem.class, new CoreContainerSystem());
+
+ Properties props = new Properties();
+ props.setProperty("impl", "Jetty");
+
+ HttpEjbServer server = new HttpEjbServer();
+ server.init(props);
+
+ assertTrue("SystemInstance.get().getComponent(HttpServer.class) should be an instance of JettyHttpServer",
+ SystemInstance.get().getComponent(HttpServer.class) instanceof JettyHttpServer);
+ }
+
+ public void testOpenEJBImpl() throws Exception {
+ SystemInstance.get().setComponent(ContainerSystem.class, new CoreContainerSystem());
+
+ Properties props = new Properties();
+ props.setProperty("impl", "openejb");
+
+ HttpEjbServer server = new HttpEjbServer();
+ server.init(props);
+
+ assertTrue("SystemInstance.get().getComponent(HttpServer.class) should be an instance of OpenEJBHttpServer",
+ SystemInstance.get().getComponent(HttpServer.class) instanceof OpenEJBHttpServer);
+ }
+
+ public void testJettyClassCheck() throws Exception {
+ SystemInstance.get().setComponent(ContainerSystem.class, new CoreContainerSystem());
+
+ Properties props = new Properties();
+
+ HttpEjbServer server = new HttpEjbServer();
+ server.init(props);
+
+ assertTrue("SystemInstance.get().getComponent(HttpServer.class) should be an instance of JettyHttpServer",
+ SystemInstance.get().getComponent(HttpServer.class) instanceof JettyHttpServer);
+ }
+
+ public void testUnknownImpl() throws Exception {
+ SystemInstance.get().setComponent(ContainerSystem.class, new CoreContainerSystem());
+
+ Properties props = new Properties();
+ props.setProperty("impl", "fake");
+
+ try {
+ HttpEjbServer server = new HttpEjbServer();
+ server.init(props);
+ fail("expected IllegalArgumentException");
+ } catch (IllegalArgumentException expected) {
+ }
+ }
+}