r173 - in trunk: . src/site src/site/rst wikitty-api/src/main/java/org/nuiton/wikitty wikitty-hessian-server wikitty-hessian-server/src wikitty-hessian-server/src/main wikitty-hessian-server/src/main/java wikitty-hessian-server/src/main/java/org wikitty-hessian-server/src/main/java/org/nuiton wikitty-hessian-server/src/main/java/org/nuiton/wikitty wikitty-hessian-server/src/main/java/org/nuiton/wikitty/hessian wikitty-hessian-server/src/main/webapp wikitty-hessian-server/src/main/webapp/WE
Author: echatellier Date: 2010-06-29 18:47:37 +0200 (Tue, 29 Jun 2010) New Revision: 173 Url: http://nuiton.org/repositories/revision/wikitty/173 Log: Add hessian server webapp (first draft) Added: trunk/src/site/rst/hessian.rst trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceDelegator.java trunk/wikitty-hessian-server/ trunk/wikitty-hessian-server/LICENSE.txt trunk/wikitty-hessian-server/README.txt trunk/wikitty-hessian-server/changelog.txt trunk/wikitty-hessian-server/pom.xml trunk/wikitty-hessian-server/src/ trunk/wikitty-hessian-server/src/main/ trunk/wikitty-hessian-server/src/main/java/ trunk/wikitty-hessian-server/src/main/java/org/ trunk/wikitty-hessian-server/src/main/java/org/nuiton/ trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/ trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/hessian/ trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/hessian/WikittyServiceHessianDelegator.java trunk/wikitty-hessian-server/src/main/webapp/ trunk/wikitty-hessian-server/src/main/webapp/WEB-INF/ trunk/wikitty-hessian-server/src/main/webapp/WEB-INF/web.xml trunk/wikitty-hessian-server/src/main/webapp/index.jsp trunk/wikitty-hessian-server/src/test/ trunk/wikitty-hessian-server/src/test/java/ Modified: trunk/pom.xml trunk/src/site/site.xml Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2010-06-29 15:03:14 UTC (rev 172) +++ trunk/pom.xml 2010-06-29 16:47:37 UTC (rev 173) @@ -28,7 +28,7 @@ <module>wikitty-jms-impl</module> <module>wikitty-ui-zk</module> <module>wikitty-hessian-client</module> - <!-- module>wikitty-hessian-server</module--> + <module>wikitty-hessian-server</module> </modules> <dependencyManagement> Added: trunk/src/site/rst/hessian.rst =================================================================== --- trunk/src/site/rst/hessian.rst (rev 0) +++ trunk/src/site/rst/hessian.rst 2010-06-29 16:47:37 UTC (rev 173) @@ -0,0 +1,69 @@ +Hessian +======= + +Wikitty fournit de base les modules nécéssaires à une utilisation de type +client serveur basé sur hessian. + +Il est composé : + * d'une application war qui, en lisant une configuration, est capable de + fournir un service sur n'importe quel type de stockage wikitty + * d'une factory revoyant un proxy sur un service distant + +Serveur +------- + +Le serveur est disponible sous forme d'une application web (war) prete à +l'emploi. Vous pouvez la télécharger à l'adresse suivante : +http://www.nuiton.org/projects/list_files/wikitty + +Par défaut, cette application web se base sur le fichier de configuration +``/etc/wikitty-hessian.properties`` (sous linux). Ce fichier de configuration +contient 3 options de configuration spécifique à hessian: + + * wikitty.hessian.usecache : ajout du cache + * wikitty.hessian.usenotification : ajout de la notification + * wikitty.hessian.usesecurity : ajout de la securité + +Ensuite, le fichier de configuration contient la configuration specifique +à l'implementation du stockage à utiliser. + +Voici un exemple de configuration:: + + # security + wikitty.hessian.usesecurity=true + wikitty.service.login=xxxx + wikitty.service.password=zzzz + + # notification + wikitty.hessian.usenotification=true + wikitty.service.event.jgroupschannelname=myjgroupchannel + wikitty.service.event.propagateEvent=false + + # cache + wikitty.hessian.usecache=true + wikitty.service.cache.listenevents=true + + # jdbc configuration + jdbc.con.driver=org.h2.Driver + jdbc.con.host=jdbc:h2:file:/var/lib/myapp/h2db + jdbc.con.userName=sa + jdbc.con.password= + + # solr configuration + solr.data.dir=/var/lib/myapp/solr + +L'application est ensuite accessible sur l'uri "/wikitty" suivant le contexte +de déploiement. +Par exemple : http://localhost:8080/myapp/wikitty + +Client +------ + +L'interface sur le service s'obtient en utilisant la factory disponible +dans le modules ``wikitty-hessian-client``. + +Example:: + + WikittyService service = getWikittyService("http://localhost/wikitty"); + +Le ``service`` s'utilise ensuite comme un service local. \ No newline at end of file Modified: trunk/src/site/site.xml =================================================================== --- trunk/src/site/site.xml 2010-06-29 15:03:14 UTC (rev 172) +++ trunk/src/site/site.xml 2010-06-29 16:47:37 UTC (rev 173) @@ -12,6 +12,7 @@ <menu name="Overview"> <item name="Accueil" href="index.html"/> <item name="Migration" href="migration.html"/> + <item name="Hessian" href="hessian.html"/> <item name="GWT problem" href="gwt.html"/> <item name="TODO" href="todo.html"/> </menu> Added: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceDelegator.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceDelegator.java (rev 0) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceDelegator.java 2010-06-29 16:47:37 UTC (rev 173) @@ -0,0 +1,283 @@ +/* *##% + * Copyright (C) 2010 Code Lutin, Chatellier Eric + * + * This program 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. + * + * This program 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. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package org.nuiton.wikitty; + +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.PagedResult; +import org.nuiton.wikitty.Tree; +import org.nuiton.wikitty.TreeNode; +import org.nuiton.wikitty.UpdateResponse; +import org.nuiton.wikitty.Wikitty; +import org.nuiton.wikitty.WikittyExtension; +import org.nuiton.wikitty.WikittyService; +import org.nuiton.wikitty.WikittyServiceListener; +import org.nuiton.wikitty.WikittyTransaction; + +/** + * Wikitty service delegator. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class WikittyServiceDelegator implements WikittyService { + + /** Delegated wikitty service. */ + protected WikittyService delegate; + + /** + * Get delegated service. + * + * @return delegate service + */ + public WikittyService getDelegate() { + return delegate; + } + + /** + * Set delegated service. + * + * @param delegate delegate + */ + public void setDelegate(WikittyService delegate) { + this.delegate = delegate; + } + + @Override + public void addWikittyServiceListener(WikittyServiceListener listener, + ServiceListenerType type) { + delegate.addWikittyServiceListener(listener, type); + } + + @Override + public void removeWikittyServiceListener(WikittyServiceListener listener, + ServiceListenerType type) { + delegate.removeWikittyServiceListener(listener, type); + } + + @Override + public String login(String login, String password) { + return delegate.login(login, password); + } + + @Override + public void logout(String securityToken) { + delegate.logout(securityToken); + } + + @Override + public void clear(String securityToken) { + delegate.clear(securityToken); + } + + @Override + public UpdateResponse store(String securityToken, Wikitty wikitty) { + return delegate.store(securityToken, wikitty); + } + + @Override + public UpdateResponse store(String securityToken, + Collection<Wikitty> wikitties) { + return delegate.store(securityToken, wikitties); + } + + @Override + public UpdateResponse store(String securityToken, + Collection<Wikitty> wikitties, boolean disableAutoVersionIncrement) { + return delegate.store(securityToken, wikitties, + disableAutoVersionIncrement); + } + + @Override + public UpdateResponse store(String securityToken, + WikittyTransaction transaction, Collection<Wikitty> wikitties, + boolean disableAutoVersionIncrement) { + return delegate.store(securityToken, transaction, wikitties, + disableAutoVersionIncrement); + } + + @Override + public List<String> getAllExtensionIds(String securityToken) { + return delegate.getAllExtensionIds(securityToken); + } + + @Override + public List<String> getAllExtensionsRequires(String securityToken, + String extensionName) { + return delegate.getAllExtensionsRequires(securityToken, extensionName); + } + + @Override + public UpdateResponse storeExtension(String securityToken, + WikittyExtension ext) { + return delegate.storeExtension(securityToken, ext); + } + + @Override + public UpdateResponse storeExtension(String securityToken, + Collection<WikittyExtension> exts) { + return delegate.storeExtension(securityToken, exts); + } + + @Override + public UpdateResponse storeExtension(String securityToken, + WikittyTransaction transaction, Collection<WikittyExtension> exts) { + return delegate.storeExtension(securityToken, transaction, exts); + } + + @Override + public WikittyExtension restoreExtension(String securityToken, String id) { + return delegate.restoreExtension(securityToken, id); + } + + @Override + public WikittyExtension restoreExtension(String securityToken, + WikittyTransaction transaction, String id) { + return delegate.restoreExtension(securityToken, transaction, id); + } + + @Override + public WikittyExtension restoreExtensionLastVersion(String securityToken, + String name) { + return delegate.restoreExtensionLastVersion(securityToken, name); + } + + @Override + public WikittyExtension restoreExtensionLastVersion(String securityToken, + WikittyTransaction transaction, String name) { + return delegate.restoreExtensionLastVersion(securityToken, transaction, + name); + } + + @Override + public Wikitty restore(String securityToken, String id) { + return delegate.restore(securityToken, id); + } + + @Override + public List<Wikitty> restore(String securityToken, List<String> id) { + return delegate.restore(securityToken, id); + } + + @Override + public List<Wikitty> restore(String securityToken, WikittyTransaction transaction, List<String> id) { + return delegate.restore(securityToken, transaction, id); + } + + @Override + public void delete(String securityToken, String id) { + delegate.delete(securityToken, id); + } + + @Override + public void delete(String securityToken, Collection<String> ids) { + delegate.delete(securityToken, ids); + } + + @Override + public PagedResult<String> findAllByCriteria(String securityToken, + Criteria criteria) { + return delegate.findAllByCriteria(securityToken, criteria); + } + + @Override + public PagedResult<String> findAllByCriteria(String securityToken, + WikittyTransaction transaction, Criteria criteria) { + return delegate.findAllByCriteria(securityToken, transaction, criteria); + } + + @Override + public Wikitty findByCriteria(String securityToken, Criteria criteria) { + return delegate.findByCriteria(securityToken, criteria); + } + + @Override + public void addLabel(String securityToken, String wikittyId, String label) { + delegate.addLabel(securityToken, wikittyId, label); + } + + @Override + public PagedResult<String> findAllByLabel(String securityToken, + String label, int firstIndex, int endIndex) { + return delegate.findAllByLabel(securityToken, label, firstIndex, + endIndex); + } + + @Override + public Wikitty findByLabel(String securityToken, String label) { + return delegate.findByLabel(securityToken, label); + } + + @Override + public Set<String> findAllAppliedLabels(String securityToken, + String wikittyId) { + return delegate.findAllAppliedLabels(securityToken, wikittyId); + } + + @Override + public Tree restoreTree(String securityToken, String wikittyId) { + return delegate.restoreTree(securityToken, wikittyId); + } + + @Override + public Entry<TreeNode, Integer> restoreNode(String securityToken, + String wikittyId, Criteria filter) { + return delegate.restoreNode(securityToken, wikittyId, filter); + } + + @Override + public Map<TreeNode, Integer> restoreChildren(String securityToken, + String wikittyId, Criteria filter) { + return delegate.restoreChildren(securityToken, wikittyId, filter); + } + + @Override + public Wikitty restoreVersion(String securityToken, String wikittyId, + String version) { + return delegate.restoreVersion(securityToken, wikittyId, version); + } + + @Override + public UpdateResponse syncEngin(String securityToken) { + return delegate.syncEngin(securityToken); + } + + @Override + public boolean canWrite(String securityToken, Wikitty wikitty) { + return delegate.canWrite(securityToken, wikitty); + } + + @Override + public boolean canDelete(String securityToken, String wikittyId) { + return delegate.canDelete(securityToken, wikittyId); + } + + @Override + public boolean canRead(String securityToken, String wikittyId) { + return delegate.canRead(securityToken, wikittyId); + } +} Property changes on: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceDelegator.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: trunk/wikitty-hessian-server/pom.xml =================================================================== --- trunk/wikitty-hessian-server/pom.xml (rev 0) +++ trunk/wikitty-hessian-server/pom.xml 2010-06-29 16:47:37 UTC (rev 173) @@ -0,0 +1,80 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.nuiton</groupId> + <artifactId>wikitty</artifactId> + <version>2.0-SNAPSHOT</version> + </parent> + + <!-- ************************************************************* --> + <!-- *** POM Relationships *************************************** --> + <!-- ************************************************************* --> + <groupId>org.nuiton.wikitty</groupId> + <artifactId>wikitty-hessian-server</artifactId> + + <dependencies> + <dependency> + <groupId>org.nuiton.wikitty</groupId> + <artifactId>wikitty-api</artifactId> + <version>${project.version}</version> + <scope>compile</scope> + </dependency> + + <!-- webapp can manage every things --> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>wikitty-jdbc-impl</artifactId> + <version>${project.version}</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.nuiton.wikitty</groupId> + <artifactId>wikitty-multistorage-impl</artifactId> + <version>${project.version}</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.nuiton.wikitty</groupId> + <artifactId>wikitty-solr-impl</artifactId> + <version>${project.version}</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>com.caucho</groupId> + <artifactId>hessian</artifactId> + <version>3.1.5</version> + <scope>compile</scope> + </dependency> + </dependencies> + + <!-- ************************************************************* --> + <!-- *** Project Information ************************************* --> + <!-- ************************************************************* --> + + <name>Wikitty :: hessian server</name> + + <description>Wikitty hessian server</description> + <inceptionYear>2010</inceptionYear> + + <!-- ************************************************************* --> + <!-- *** Build Settings ****************************************** --> + <!-- ************************************************************* --> + + <packaging>war</packaging> + + <properties> + + </properties> + + <build> + + </build> + + <!-- ************************************************************* --> + <!-- *** Build Environment ************************************** --> + <!-- ************************************************************* --> + +</project> Added: 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 (rev 0) +++ trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/hessian/WikittyServiceHessianDelegator.java 2010-06-29 16:47:37 UTC (rev 173) @@ -0,0 +1,105 @@ +/* *##% + * Copyright (C) 2010 Code Lutin, Chatellier Eric + * + * This program 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. + * + * This program 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. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package org.nuiton.wikitty.hessian; + +import java.lang.reflect.Method; +import java.util.Properties; + +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; + +/** + * Hesian service delegator. + * + * Based on empty constructor mandatory for some purpose (hessian), and + * wikitty service factory to get delegated service. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class WikittyServiceHessianDelegator extends WikittyServiceDelegator { + + /** Configuration file name for application config. */ + protected static final String WIKITTY_HESSIAN_CONFIGURATION_FILE = "wikitty-hessian.properties"; + + /** + * Unique empty constructor. + * + * @throws WikittyException if delegated service can't be obtained + */ + public WikittyServiceHessianDelegator() throws WikittyException { + + super(); + + try { + // load configuration + 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); + + // 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); + } + catch (Exception eee) { + throw new WikittyException("Can't get delegate proxy", eee); + } + + } +} Property changes on: trunk/wikitty-hessian-server/src/main/java/org/nuiton/wikitty/hessian/WikittyServiceHessianDelegator.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: trunk/wikitty-hessian-server/src/main/webapp/WEB-INF/web.xml =================================================================== --- trunk/wikitty-hessian-server/src/main/webapp/WEB-INF/web.xml (rev 0) +++ trunk/wikitty-hessian-server/src/main/webapp/WEB-INF/web.xml 2010-06-29 16:47:37 UTC (rev 173) @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> + + <display-name>Wikitty</display-name> + + <servlet> + <servlet-name>wikittyServiceServlet</servlet-name> + <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class> + <init-param> + <param-name>home-api</param-name> + <param-value>org.nuiton.wikitty.WikittyService</param-value> + </init-param> + <init-param> + <param-name>home-class</param-name> + <param-value>org.nuiton.wikitty.hessian.WikittyServiceHessianDelegator</param-value> + </init-param> + <load-on-startup>2</load-on-startup> + </servlet> + + <servlet-mapping> + <servlet-name>wikittyServiceServlet</servlet-name> + <url-pattern>/wikitty</url-pattern> + </servlet-mapping> + +</web-app> Added: trunk/wikitty-hessian-server/src/main/webapp/index.jsp =================================================================== --- trunk/wikitty-hessian-server/src/main/webapp/index.jsp (rev 0) +++ trunk/wikitty-hessian-server/src/main/webapp/index.jsp 2010-06-29 16:47:37 UTC (rev 173) @@ -0,0 +1,11 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<%@page contentType="text/html" pageEncoding="UTF-8"%> +<html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>Vradi services</title> + </head> + <body> + Wikiity service is running... + </body> +</html> \ No newline at end of file
participants (1)
-
echatellier@users.nuiton.org