r476 - in trunk/wikitty-hessian-server: . src/main src/main/java/org/nuiton/wikitty src/main/java/org/nuiton/wikitty/hessian src/main/java/org/nuiton/wikitty/services
Author: bpoussin Date: 2010-11-17 18:54:13 +0100 (Wed, 17 Nov 2010) New Revision: 476 Url: http://nuiton.org/repositories/revision/wikitty/476 Log: - refactor WikittyServiceHessianDelegator to use WikittyServiceFactory - add WikittyServiceHessianServer, this can be used as WikittyService and start jetty container Added: trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/services/ trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/services/WikittyServiceHessianServer.java trunk/wikitty-hessian-server/src/main/resources/ Modified: trunk/wikitty-hessian-server/pom.xml trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/hessian/WikittyServiceHessianDelegator.java Modified: trunk/wikitty-hessian-server/pom.xml =================================================================== --- trunk/wikitty-hessian-server/pom.xml 2010-11-16 15:47:41 UTC (rev 475) +++ trunk/wikitty-hessian-server/pom.xml 2010-11-17 17:54:13 UTC (rev 476) @@ -6,7 +6,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>wikitty</artifactId> - <version>2.3-SNAPSHOT</version> + <version>3.0-SNAPSHOT</version> </parent> <!-- ************************************************************* --> @@ -29,16 +29,33 @@ <groupId>${project.groupId}</groupId> <artifactId>wikitty-jdbc-impl</artifactId> <version>${project.version}</version> - <scope>compile</scope> + <scope>runtime</scope> </dependency> <dependency> <groupId>${project.groupId}</groupId> <artifactId>wikitty-solr-impl</artifactId> <version>${project.version}</version> - <scope>compile</scope> + <scope>runtime</scope> </dependency> <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-servlet</artifactId> + </dependency> + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-server</artifactId> + </dependency> + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-util</artifactId> + </dependency> + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-xml</artifactId> + </dependency> + + <dependency> <groupId>org.nuiton</groupId> <artifactId>nuiton-utils</artifactId> </dependency> Modified: trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/hessian/WikittyServiceHessianDelegator.java =================================================================== --- trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/hessian/WikittyServiceHessianDelegator.java 2010-11-16 15:47:41 UTC (rev 475) +++ trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/hessian/WikittyServiceHessianDelegator.java 2010-11-17 17:54:13 UTC (rev 476) @@ -25,22 +25,12 @@ package org.nuiton.wikitty.hessian; -import java.util.Properties; - +import com.caucho.hessian.server.HessianServlet; import org.nuiton.util.ApplicationConfig; import org.nuiton.wikitty.WikittyException; -import org.nuiton.wikitty.WikittyExtensionStorage; -import org.nuiton.wikitty.WikittySearchEngin; import org.nuiton.wikitty.WikittyService; -import org.nuiton.wikitty.WikittyServiceCached; -import org.nuiton.wikitty.WikittyServiceDelegator; -import org.nuiton.wikitty.WikittyServiceImpl; -import org.nuiton.wikitty.WikittyServiceNotifier; -import org.nuiton.wikitty.WikittyServiceSecurity; -import org.nuiton.wikitty.WikittyStorage; -import org.nuiton.wikitty.jdbc.WikittyExtensionStorageJDBC; -import org.nuiton.wikitty.jdbc.WikittyStorageJDBC; -import org.nuiton.wikitty.solr.WikittySearchEnginSolr; +import org.nuiton.wikitty.WikittyServiceFactory; +import org.nuiton.wikitty.services.WikittyServiceDelegator; /** * Hesian service delegator. @@ -73,33 +63,9 @@ ApplicationConfig config = new ApplicationConfig(); config.setConfigFileName(WIKITTY_HESSIAN_CONFIGURATION_FILE); config.parse(new String[0]); - - // get configuration as properties - Properties properties = config.getFlatOptions(); - // make impl instance of wikitty service - WikittyExtensionStorage extensionStorage = new WikittyExtensionStorageJDBC(properties); - WikittyStorage wikittyStorage = new WikittyStorageJDBC(extensionStorage, properties); - WikittySearchEngin searchEngin = new WikittySearchEnginSolr(extensionStorage, properties); - - // make the chosen one IMPL - WikittyService service = new WikittyServiceImpl(extensionStorage, wikittyStorage, searchEngin); + WikittyService service = WikittyServiceFactory.buildWikittyService(config); - // add security - if (config.getOptionAsBoolean("wikitty.hessian.usesecurity")) { - service = new WikittyServiceSecurity(service); - } - - // add cache ? - if (config.getOptionAsBoolean("wikitty.hessian.usecache")) { - service = new WikittyServiceCached(service, properties); - } - - // add notification - if (config.getOptionAsBoolean("wikitty.hessian.usenotification")) { - service = new WikittyServiceNotifier(service, properties); - } - // set delegate service setDelegate(service); } Added: trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/services/WikittyServiceHessianServer.java =================================================================== --- trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/services/WikittyServiceHessianServer.java (rev 0) +++ trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/services/WikittyServiceHessianServer.java 2010-11-17 17:54:13 UTC (rev 476) @@ -0,0 +1,106 @@ +package org.nuiton.wikitty.services; + + +import com.caucho.hessian.server.HessianServlet; +import java.net.URL; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.eclipse.jetty.server.Connector; +import org.nuiton.util.ApplicationConfig; +import org.nuiton.wikitty.WikittyException; +import org.nuiton.wikitty.WikittyService; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.nio.SelectChannelConnector; +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jetty.servlet.ServletHolder; +import org.eclipse.jetty.util.resource.Resource; +import org.eclipse.jetty.xml.XmlConfiguration; +import org.nuiton.wikitty.WikittyConfig; + +/** + * + * @author poussin + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + */ +public class WikittyServiceHessianServer extends WikittyServiceDelegator { + + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog(WikittyServiceHessianServer.class); + + public WikittyServiceHessianServer(ApplicationConfig config, WikittyService ws) { + try { + setDelegate(ws); + + // create and configure hessian servlet + HessianServlet servlet = new HessianServlet(); + servlet.setHomeAPI(WikittyService.class); + servlet.setHome(this); + + // create servlet container + String jettyConfig = config.getOption(WikittyConfig.Option. + WIKITTY_SERVER_CONFIG.getKey()); + // port and path from hessian server url in config + String urlString = config.getOption(WikittyConfig.Option. + WIKITTY_SERVER_URL.getKey()); + + int port = 80; + String path = "/"; + if (urlString != null && !"".equals(urlString)) { + URL url = new URL(urlString); + if (-1 != url.getPort()) { + port = url.getPort(); + } + if (null != url.getPath()) { + path = url.getPath(); + if (!path.endsWith("/")) { + path += "/"; + } + } + } + + Server server; + if (jettyConfig != null && !"".equals(jettyConfig)) { + // use config file + Resource fileserver_xml = Resource.newSystemResource(jettyConfig); + XmlConfiguration configuration = new XmlConfiguration(fileserver_xml.getInputStream()); + server = (Server) configuration.configure(); + + // change port as asked in wikitty url server + boolean connectorPortFound = false; + for (Connector connector : server.getConnectors()) { + if (connector instanceof SelectChannelConnector) { + connectorPortFound = true; + connector.setPort(port); + } + } + if (!connectorPortFound) { + Connector connector = new SelectChannelConnector(); + connector.setPort(port); + server.addConnector(connector); + } + } else { + // no config file + server = new Server(port); + } + + // put servlet in container + ServletContextHandler context = new ServletContextHandler(ServletContextHandler.NO_SESSIONS); + context.setContextPath("/"); + server.setHandler(context); + context.addServlet(new ServletHolder(servlet), path + "*"); + + // start server + server.start(); + server.join(); + + log.info("Web server are running on port: " + port); + } catch (Exception eee) { + throw new WikittyException("Can't start wikitty server", eee); + } + } + + +}
participants (1)
-
bpoussin@users.nuiton.org