esdoc/ 0040775 0000764 0000764 00000000000 10137672057 012015 5 ustar gibello gibello esdoc/FR/ 0040775 0000764 0000764 00000000000 10137672057 012324 5 ustar gibello gibello esdoc/FR/Appservers/ 0040775 0000764 0000764 00000000000 10137672057 014456 5 ustar gibello gibello esdoc/FR/Appservers/enhydra3.html 0100664 0000764 0000764 00000037354 10137672045 017067 0 ustar gibello gibello
#!/bin/sh export CLASSPATH=/usr/local/expershop/WEB-INF/lib/expershop.jar:/usr/local/expershop/WEB-INF/lib/openeas.jar:/usr/local/expershop/WEB-INF/lib/xapool.jar:/usr/local/expershop/WEB-INF/lib/log4j.jar:/usr/local/expershop/WEB-INF/lib/hsqldb.jar /usr/local/enhydra3.1/bin/multiserver ## exemple plus complexe - avec variable d'environnement supplementaire ## export CMKEYDIR=/usr/local/CYBERMUT ## /usr/local/enhydra3.1/bin/multiserver -java-arg -Djava.library.path=/usr/local/ExperSHOP/etc/cmut/linux-intel
# Enhydra Multiserver Config File # ================================== # This file contains the configuration options for the # Enhydra Multiserver. Typically it is manipulated # through the Multiserver Admin application, however, # power users may wish to edit it by hand. # # Notes: # * The Multiserver only reads this file on startup. # It is thus necessary to stop and restart the server if # changes are made by hand. # * The order of the parameters in this file is not significant. # * Quotes are not required to delimit strings but are advised. # * Array parameters are specified as a comma separated list. # The parameter name is identified as an array with a "[]" # suffix. # # Server Section ----------------------------------------------------- # ============== # These options configure server-wide attributes. # # Server.ConfDir # -------------- # This is where the application's config files are stored. # Each Enhydra application has a configuration # file that must be placed in this directory in order for the # application to be visible by the Multiserver and the Multiserver # admin application. # # Server.LogFile # -------------- # This is the file where the server log is written. # # Server.LogToFile[] # ------------------ # This is a comma separated list of message types to send to the log # file specified in server.logFile. # # Server.LogToStderr[] # -------------------- # This is a comma separated list of message types to send to standard error. # # Possible logger levels: # ----------------------- # These levels will be familiar to anyone that has used the UNIX # syslog functionality: # # EMERGENCY # Panic condition. # ALERT # A condition that should be corrected immediately, such as # database corruption. # CRITICAL # Critical conditions such as had device errors. # ERROR # General errors that are not usually fatal, but must be # resolved. # WARNING # Warning condition that may need attention, although the # need is not immediate. # NOTICE # Conditions that are not error conditions, but may require # special handling such as infrequent conditions. # INFO # General informational conditions, knowledge of which will # help to keep the server in good order. # DEBUG # Messages that contain information normally of use only when # debugging an application. # CLASSLOAD # Information about the loading of application classes. Very # useful debugging class path problems. # REQUEST # The StandardLoggingFilter logs hits to this facility if # this is specified (normally it writes to it's own file). # XMLC # Information about auto-compiling XMLC pages. # XMLC_DEBUG # Debug information about auto-compiling XMLC pages. # # Server.ConfDir = "/usr/local/enhydra3.1/apps" Server.LogFile = "/usr/local/enhydra3.1/logs/multiserver.log" Server.LogToFile[] = EMERGENCY, ALERT, CRITICAL, ERROR, WARNING, INFO Server.LogToStderr[] = EMERGENCY, ALERT, CRITICAL, ERROR, WARNING, INFO # # The above setting is for verbose output. When running as a daemon # process you may want to print out only emergencies, for example: # Server.LogToStderr[] = EMERGENCY # # Enhydra Application Section ----------------------------------------- # ========================== # Each Enhydra application is added to the Multiserver with the # following syntax. Note that multiple applications can be # defined, the only restriction is that the [APPLICATION_ID] must # be unique. # # Application.[APPLICATION_ID].ConfFile # ------------------------------------- # This is set to "filename.conf", which must exist in the directory # defined by "Server.ConfDir". # # Application.[APPLICATION_ID].Description # ---------------------------------------- # A description of the application. This is visible in the # management console. # # Application.[APPLICATION_ID].Running = yes | no # ----------------------------------------------- # This is basically the same as the start/stop buttons in the admin # app. If the server has running = no, then it will not be instantiated, # until the user of the admin app clicks on the "start" button. # Application.MultiserverAdmin.ConfFile = multiserverAdmin.conf Application.MultiserverAdmin.Description = "Multiserver Management Console." Application.MultiserverAdmin.Running = yes # Servlet Section ---------------------------------------------------- # =============== # The Multiserver is able to run standard servlets in addition to # Enhydra applications. The following syntax is # used to define a servlet. Note that multiple servlets # can be defined, the only restriction is that the [SERVLET_ID] # must be unique. # # Each servlet is defined with: # # Servlet.[SERVLET_ID].ClassName = entryClass # Servlet.[SERVLET_ID].DocRoot = Document root for servlet. # Servlet.[SERVLET_ID].Description = "A description of servlet" # Servlet.[SERVLET_ID].Running = yes | no # # where the ".classname" parameter defines the class with the # service() method and ".description" defines a description used # by the admin tool. The ".docRoot" is the full path to the # directory used as the document root for this servlet and # ".running" indicated whether to automatically start the # servlet when the Multiserver is started. # # Optionally a servlet can be further specified with the following # options: # # Servlet.[SERVLET_ID].InitArgs # ----------------------------- # This is a collection of name-value pairs that are passed to the # servlet and initial arguments. Refer to the servlet documentation # for more information. # For example: # Servlet.[SERVLET_ID].InitArgs.LogFile = /tmp/log # Servlet.[SERVLET_ID].InitArgs.Max = 256 # Servlet.[SERVLET_ID].InitArgs.Names[] = "Joe Bob", "Jane Bee" # # Servlet.[SERVLET_ID].ClassPath[] # -------------------------------- # This is set to a comma-separated list of classpath elements. The # class loader will be extended with these paths so that the # servlet can successfully load any required classes. # # Application.[APPLICATION_ID].Running # ------------------------------------ # This is basically the same as the start/stop buttons in the admin # app. If the server has running = no, then it will not be instantiated, # until the user of the admin app clicks on the "start" button. # # ExperShop main servlet Servlet.ExperSHOP.ClassName = com.expershop.lite.ExperSHOP Servlet.ExperSHOP.DocRoot = /home/httpd/html Servlet.ExperSHOP.Description = "ExperSHOP servlet." Servlet.ExperSHOP.ClassPath[] = /usr/local/expershop/WEB-INF/lib/expershop.jar,/usr/local/expershop/WEB-INF/lib/openeas.jar,/usr/local/expershop/WEB-INF/lib/xapool.jar,/usr/local/expershop/WEB-INF/lib/log4j.jar,/usr/local/expershop/WEB-INF/lib/hsqldb.jar Servlet.ExperSHOP.Running = yes Servlet.ExperSHOP.InitArgs.SHOPCONFIG = /usr/local/ExperSHOP/EShop.cfg # ExperShop admin servlet Servlet.ESAdminServlet.ClassName = com.expershop.lite.ESAdminServlet Servlet.ESAdminServlet.DocRoot = /tmp Servlet.ESAdminServlet.Description = "ESAdminServlet servlet." Servlet.ESAdminServlet.ClassPath[] = /usr/local/expershop/WEB-INF/lib/expershop.jar,/usr/local/expershop/WEB-INF/lib/openeas.jar,/usr/local/expershop/WEB-INF/lib/xapool.jar,/usr/local/expershop/WEB-INF/lib/log4j.jar,/usr/local/expershop/WEB-INF/lib/hsqldb.jar Servlet.ESAdminServlet.Running = yes Servlet.ESAdminServlet.InitArgs.SHOPCONFIG = /usr/local/ExperSHOP/EShop.cfg # Document root for all static HTML content Servlet.HTML.ClassName = org.enhydra.servlet.servlets.FileServerServlet Servlet.HTML.DocRoot = "/home/httpd/html" Servlet.HTML.Running = yes # Pour le paiement securise CyberMut # Ceci est un exemple: inutile si vous n'utilisez pas Cybermut Servlet.CyberMut.ClassName = com.expershop.pay.cmut.ESCgi2Servlet Servlet.CyberMut.DocRoot = /home/httpd/html Servlet.CyberMut.Description = "CyberMut return servlet." Servlet.CyberMut.ClassPath[] = /usr/local/expershop/WEB-INF/lib/expershop.jar,/usr/local/expershop/WEB-INF/lib/openeas.jar,/usr/local/expershop/WEB-INF/lib/xapool.jar,/usr/local/expershop/WEB-INF/lib/log4j.jar,/usr/local/expershop/WEB-INF/lib/hsqldb.jar Servlet.CyberMut.Running = yes Servlet.CyberMut.InitArgs.SHOPCONFIG = /usr/local/ExperSHOP/EShop.cfg # Connection Methods Section ----------------------------------------- # ========================== # This section defines all the possible ways that the Multiserver will # accept requests. Any number of connection methods are allowable # so long as the [CONNECTION_ID] is unique. The [CONNECTION_ID] # is used when associated with an application/servlet by defining # a channel. # # Connection.[CONNECTION_ID].Type # ------------------------------- # The connection type is set to any supported connection method. # Possible types are: # # "http" # This instructs the Multiserver to directly listen for http requests on the # specified port. The port is specified with: # Connection.[CONNECTION_ID].Port = [port] # The number of handler threads my be specified with: # Connection.[CONNECTION_ID].NumThreads = [num] (optional) # The number of socket requests to queue (after accept, before processing) # may be specified with: # Connection.[CONNECTION_ID].QueueSize = [num] (optional) # The idle timeout period for a client connection, in seconds. This is the # amount of time to block without activity. # Connection.[CONNECTION_ID].ClientTimeout = [num] (optional) # The idle timeout period for a handler thread, in seconds. Shorter timeouts # minimize the number of threads (memory) while slowing response time for # bursts of activity. # Connection.[CONNECTION_ID].ThreadTimeout = [num] (optional) # # "https" # This instructs the Multiserver to directly listen for secure-http requests # on the specified port. The port is specified with: # Connection.[CONNECTION_ID].Port = [port] # The number of handler threads my be specified with: # Connection.[CONNECTION_ID].NumThreads = [num] (optional) # The number of socket requests to queue (after accept, before processing) # may be specified with: # Connection.[CONNECTION_ID].QueueSize = [num] (optional) # Connection.HttpConn8001.Type = http Connection.HttpConn8001.Port = 8001 Connection.HttpConn8002.Type = http Connection.HttpConn8002.Port = 8002 # Channel Section ---------------------------------------------------- # =============== # This section defines how applications/servlets are connected with # connection methods. Each channel entry represents an entry point # to an application than can be individually controlled. Note that # like other IDs, each [CHANNEL_ID] must by unique. # # Each channel is defined with: # # Channel.[CONNECTION_ID].[CHANNEL_ID].Servlet = [APPLICATION_ID] # or # Channel.[CONNECTION_ID].[CHANNEL_ID].Servlet = [SERVLET_ID] # # and # Channel.[CONNECTION_ID].[CHANNEL_ID].Url = [url prefix] # and # Channel.[CONNECTION_ID].[CHANNEL_ID].Filters = [FILTER_ID],[FILTER_ID] # and # Channel.[CONNECTION_ID].[CHANNEL_ID].Enabled = yes | no # # # where the ".Servlet" parameter defines the application/servlet # to connect to and the [CONNECTION_ID].[CHANNEL_ID] path defines # the connection method to connect to. # The Url should generally begin and end with a '/'. # The ".Filters" is optional and defines a # list of [FILTER_ID] that a channel is subject to. Filters are # executed in the order that they are defined. The most common use # of a filter is for logging purposes. In general, filters are an # advanced topic that is discussed in the developers guide. Channel.HttpConn8001.AdminChannel.Servlet = MultiserverAdmin Channel.HttpConn8001.AdminChannel.Url = / Channel.HttpConn8001.AdminChannel.Enabled = yes Channel.HttpConn8002.ExperSHOPChannel.Servlet = ExperSHOP Channel.HttpConn8002.ExperSHOPChannel.Url = /servlet/com.expershop.lite.ExperSHOP Channel.HttpConn8002.ExperSHOPChannel.Filters[] = StandardLogger Channel.HttpConn8002.ExperSHOPChannel.Enabled = yes Channel.HttpConn8002.ESAdminServletChannel.Servlet = ESAdminServlet Channel.HttpConn8002.ESAdminServletChannel.Url = /servlet/com.expershop.lite.ESAdminServlet Channel.HttpConn8002.ESAdminServletChannel.Filters[] = StandardLogger Channel.HttpConn8002.ESAdminServletChannel.Enabled = yes Channel.HttpConn8002.HTML.Enabled = yes Channel.HttpConn8002.HTML.Servlet = HTML Channel.HttpConn8002.HTML.Url = / # For CyberMut secure payment return servlet # This is just an example - forget this if not using CyberMut Channel.HttpConn8002.CyberMutChannel.Servlet = CyberMut Channel.HttpConn8002.CyberMutChannel.Url = /servlet/com.expershop.pay.cmut.ESCgi2Servlet Channel.HttpConn8002.CyberMutChannel.Filters[] = StandardLogger Channel.HttpConn8002.CyberMutChannel.Enabled = yes # Filter Section ----------------------------------------------------- # ============== # This section is allows filters to be defined and subsequently used # on a channel declaration. Note that each [FILTER_ID] must be unique. # # WARNING: It is the responsability of the administrator to ensure that # the CLASPATH is set up prior to running the Multiserver such that the filter # (and any classes it needs) will be found. The location of the filter # class on disk is not specified. # # Each filter is defined with: # # Filter.[FILTER_ID].ClassName = entryClass # Filter.[FILTER_ID].Description = "A description of filter" # # where the ".classname" parameter defines the class with the # service() method and ".description" defines a description used # by the admin tool. # # Optionally a filter can be further specified with the following option: # # Filter.[FILTER_ID].InitArgs # ----------------------- # This is a collection of name-value pairs that are passed to the # servlet and initial arguments. Refer to the developers guide # for more information. # For example: # Filter.[FILTER_ID].InitArgs.configFile = /tmp/filter_config # Filter.[FILTER_ID].InitArgs.myParam = myValue # # # This filter is used to log the requests as they are made to the server # (aka "hits"). If the key REQUEST is present in Server.LogToFile or # Server.LogToStderr (above), then a simple summary of the request and # response will be sent to the standard logging facility. This kind of # logging is usefull for quick debugging of an application. If the key # REQUEST is not present, then data is not sent to the standard logging # facility. # If the initial argument "logFile" (optional, below) is set, then this filter # will append data about the requests to the specified file, in a standard # format that tools like Web Analyzer can read. If no logFile is specified, # then data is not written to the file. # This filter is applied to individual channels, so only the channels # that need logging pay the overhead. # Filter.StandardLogger.ClassName = org.enhydra.servlet.filter.StandardLoggingFilter Filter.StandardLogger.Description = "Standard Enhydra Logging." Filter.StandardLogger.InitArgs.logFile = "/usr/local/enhydra3.1/logs/access.log"esdoc/FR/Appservers/enhydra5.html 0100664 0000764 0000764 00000003443 10137672045 017061 0 ustar gibello gibello
Dans la section "Webapp" (WebApp Section) :
Exemple Unix:
Application.expershop.Description = "ExperShop WebApp" Application.expershop.DocRoot = "/usr/local/enhydra5.0/webapps/expershop" Application.expershop.Running = yes
Application.expershop.Description = "ExperShop WebApp" Application.expershop.DocRoot = "C:/enhydra5.0/webapps/expershop" Application.expershop.Running = yes
Channel.HttpConn8004.expershopChannel.Enabled = yes Channel.HttpConn8004.expershopChannel.Servlet = expershop Channel.HttpConn8004.expershopChannel.Url = "/expershop"
http://votremachine:8004/expershop
esdoc/FR/Appservers/tomcat32.html 0100664 0000764 0000764 00000005616 10137672045 017002 0 ustar gibello gibello
<servlet> <servlet-name> com.expershop.lite.ExperSHOP </servlet-name> <servlet-class> com.expershop.lite.ExperSHOP </servlet-class> <init-param> <param-name>SHOPCONFIG</param-name> <param-value>/usr/local/ExperSHOP/EShop.cfg</param-value> </init-param> <load-on-startup> -2147483646 </load-on-startup> </servlet>
<Context path="/expershop" docBase="webapps/expershop" crossContext="false" debug="0" reloadable="true"/>
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app> <servlet> <servlet-name> com.expershop.lite.ExperSHOP </servlet-name> <servlet-class> com.expershop.lite.ExperSHOP </servlet-class> <init-param> <param-name>SHOPCONFIG</param-name> <param-value>/usr/local/ExperSHOP/EShop.cfg</param-value> </init-param> <load-on-startup> -2147483646 </load-on-startup> </servlet> </web-app>esdoc/FR/Appservers/tomcat33.html 0100664 0000764 0000764 00000005161 10137672045 016776 0 ustar gibello gibello
c:\\ExperSHOP\\EShopWin.cfgExemple de fichier web.xml :
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app> <servlet> <servlet-name> com.expershop.lite.ExperSHOP </servlet-name> <servlet-class> com.expershop.lite.ExperSHOP </servlet-class> <init-param> <param-name>SHOPCONFIG</param-name> <param-value>/usr/local/expershop/EShop.cfg</param-value> </init-param> <load-on-startup> 1 </load-on-startup> </servlet> </web-app>
http://yourhost:8080/servlet/com.expershop.lite.ExperSHOP http://yourhost:8080/servlet/com.expershop.lite.ESAdminServletesdoc/FR/Appservers/weblogic51.html 0100664 0000764 0000764 00000003360 10137672045 017301 0 ustar gibello gibello
Les principales étapes d'une configuration Weblogic sont :
weblogic.httpd.servlet.classpath=C:/weblogic/myserver/servletclasses;C:/expershop/WEB-INF/lib/expershop.jar;C:/expershop/WEB-INF/lib/openeas.jar;C:/expershop/WEB-INF/lib/xapool.jar;C:/expershop/WEB-INF/lib/log4j.jar;C:/expershop/WEB-INF/lib/hsqldb.jarEnregistrer les servlets ExperSHOP, avec leurs paramètres d'initialisation; Exemple, sous Windows:
weblogic.httpd.register.com.expershop.lite.ExperSHOP=com.expershop.lite.ExperSHOP weblogic.httpd.initArgs.com.expershop.lite.ExperSHOP=SHOPCONFIG=c:\\ExperSHOP\\EShopWin.cfg weblogic.httpd.register.com.expershop.lite.ESAdminServlet=com.expershop.lite.ESAdminServlet weblogic.httpd.initArgs.com.expershop.lite.ESAdminServlet=SHOPCONFIG=c:\\ExperSHOP\\EShopWin.cfg
http://votreserveur:7001/com.expershop.lite.ExperSHOP http://votreserveur:7001/com.expershop.lite.ESAdminServletesdoc/FR/api.html 0100664 0000764 0000764 00000004341 10137672045 013757 0 ustar gibello gibello
ExperSHOP - Java APIHome Contents Please email any bug reports, comments or suggestions to ExperLog's Online Support OverviewExperSHOP proposes a set of Java classes so the user can easily extend ExperShop's behaviour.This includes :
|
ExperSHOP - ChangesHome Contents Please email any bug reports, comments or suggestions to ExperLog's Online Support ExperShop version: 4.1 Version date: October 25, 2004. List of changes* Performance/Scalability enhancements: - New database cnx pool policy (no more multiplexing of sessions on the same cnx). - Single garbage collection thread for all sessions * Admin console GUI changed, and new functions (max number of used cnx, max cnx open failures, trace of pending SQL requests) * Enhancements + bug fixes, including: New (XmlEncode) format, Multiple ContentType support... ExperShop version: 3.5 beta Version date: September 1, 2003. List of changes- Bug fix in the management console (to the end of the client) - Bug fix in multiplexing of JDBC connections - Bug fix in $AppendSQL when used with $LoopOnEnum - Validated PayBox online payment List of new functionalities- Added stored procedure management for Oracle system. You can find here a complete description of the new mechanism, how it works, and how you have to use it. - Integration of the XAPool project to use pooled connections. With this new version, the Enhydra pool is used as is, and is became a maintained product. See the XAPool project. - cookie part from PY - Now the cart can have options. Items are bind to product (only one level). - Added a new action, to send e-mail with multiple attachment files. ExperShop version: 3.0 Version date: September 4, 2002. List of changes- Changed the administration console. The look has changed with some functionnalities. Now you can sort by date the clients which enter in your application. - Modified the debug level, now we used the log4j level: DEBUG, INFO, WARN, ERROR, FATAL. List of new functionalities- Added multiple datasources in a single application, and these datasources are manageable with the administration console. ExperShop version: 2.0.1 . Version date: November 16, 2001. List of changes- Bug fix in the endswitch element. List of new functionalities- Added a "Save configuration" button in the administration console, to save to a file the current configuration. ExperShop version: 2.0 (beta 2). Version date: June 30, 2001. List of changes- Bug fix in the connection pooling - Fixed some locks in the trace configuration - Added jar files from Sun. It's no need to download these packages from the web site from Sun. List of new functionalities- Added multiplexing in the connection pooling. - Added the administration console to administrate the ExperSHOP applications. Now, no need to restart your server when you change the configuration of an application. The administration console help you to manage properties dynamically. Just a simple example, you want to increase the number of jdbc connections, now with the console, you have two ways to do the work. You can increase the number of physical connections, or increase the multiplex property, in this case, many connections to the clients will be managed by the same physical connection. - Added an upload servlet. You give the source file, the destination directory, and the return URL. - Added new payment modules: Lebonkado, PayBox,and new version of SIPS payment. - Added a Switch/Case element for the DynHtml language. ExperShop version: 2.0 (beta 1). Version date: Mars 1, 2001. List of new functionalities- ExperSHOP uses now the new JDBC service from Enhydra to manage the JDBC connections to the database. Now, the administrator can manage the pool of connections. - A new tracing system is now in place, more precise (see the documentation). - This new version integrates some bugs fixing. - Added a new DynHtml tag : $EXITLOOP, to exit from a loop - Added new behavior for $LOOPONRESULTS tag, you can now loop on a tuple and indicate the begin index and the end index: $LoopOnResults nomRequete nomTuple[(i,j)] ExperShop version: 1.1. Version date: November 27, 2000.
List of changesYou are concerned by these changes if you are using an old ExperSHOP version (download before November 27, 2000).Some bugs were fixed, mainly concerning high-traffic sites: - A memory leak when releasing user sessions. - A file descriptor that was sometimes not closed. These bugs had little impact on low and medium-traffic sites, but it is recommended to migrate to the new version. If you have an old expershop, you may have some minor problems to migrate: In case of trouble during the migration phase, e-mail us. List of new functionalitiesFor the french and european users, the ATOS sips secure payment is now supported (but not yet documented! this will be done soon, contact us if you don't find the doc on our site). And also, the DynHtml syntax improvements I described above can be helpful... |
Documentation ExperShopTable des Matières Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog Tout d'abord, ExperShop est un produit Français, développé par ExperLog à Grenoble: ceci pour répondre à tous ceux qui me disent chaque jour "encore un truc Américain, hein ?" Cette documentation a pour but de vous donner tous les éléments nécessaires pour comprendre le fonctionnement d'ExperShop, et l'utiliser pour créer votre propre application en ligne. Le menu dans la frame de gauche vous guidera pas à pas dans votre découverte du produit. ExperShop est utilisé par des entreprises de toutes tailles, de la petite boutique hébergée par un ISP local à l'application d'entreprise interfacée avec le système d'information.
|
ExperSHOP Lite - TéléchargementPour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog Enregistrez vousEntrez vos coordonnées avant de télécharger ExperSHOP Lite ; Tous les champs sont obligatoires.ExperSHOP gardera ces informations confidentielles.
|
ExperSHOP - DynHtmlPage Principale Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog Vue généraleDynHtml est une technologie permettant d'inclure des données provenant d'une base de données, ou d'autres données dynamiques, dans des pages HTML.Les pages DynHtml sont interprétées à la volée par ExperSHOP, et les résultats des requêtes à la base de données sont inclus dans le texte HTML (ainsi que d'autres informations dynamiques comme par exemple des valeurs de paramètres HTTP). Les fichiers sources DynHtml sont des fichiers ASCII, qui mélangent du HTML avec des tags spécifiques DynHtml: ceux-ci sont interprétés à l'exécution, afin d'afficher de l'information dynamique.
Comment écrire une page DynHtmlVoici un exemple de page DynHtml:
<html><body> <b>Liste des Clients</b><p> $DefineSql ListeClients SELECT Prenom, Nom FROM Client $IfPresent AgeMin $AppendSql ListeClients WHERE Age>AgeMin $Endif $ExecSql ListeClients $IfNoResult ListeClients Il n'y a pas de client. $Else $LoopOnResults ListeClients client Nom du client: $client:Nom$, $client:Prenom$<br> $EndLoop $EndIf </body></html> Les valeurs
de "Nom" et "Prenom" retournées dans le résultat de la requête
apparaîtront dans le navigateur web, à la place de $client:Nom$
et $client:Prenom$; Liste des Clients Nom du client:
Durand, Paul Remarquez l'instruction "$IfPresent... $Endif": si la page DynHtml est appelée avec un paramètre HTTP nommé "AgeMin", une clause WHERE est ajoutée à la requête SQL.
Comment s'interprète une page DynHtmlLes pages DynHtml sont interprétées par les servlets ExperSHOP Lite:l'utilisateur n'a rien de particulier à faire.
Instructions DynHtml$# $Action $Add $Append $AppendSql $AppendSql2 $Assign $Case $CheckNumber $ClearError $Cookie $Debug $Default $Defvar $Div $Else (voir les instructions If...) $EndCase $Endif (voir les instructions If...) $EndLoop (voir LoopOnEnum, LoopOnFiles, LoopOnResults) $EndSwitch $ExecSql $Exit $ExitLoop $ExpandFile $IfEe $If $IfEqual $IfError $IfFilePresent $IfGe $IfGt $IfLe $IfLt $IfNoResult $IfPresent $Include $Invoke $LoopOnEnum $LoopOnFiles $LoopOnResults $Mul $NewObject $SetCookie $Sub $Switch $System Variables et paramètresVariables, paramètres, colonnes dans la base de donnée, etc... sont désignés par un nom de variable: pour afficher la valeur correspondant à un nom de variable, mettez un caractère "$" de chaque côté du nom de variable:$nom-de-variable$
Il est possible d'utiliser des formats d'affichage, par exemple pour
les valeurs numériques:
le format doit être mis entre parenthèses juste après
le caractère "$" qui délimite la variable (par exemple,
Formats numériques:
Tous formats supportés par la classe java java.text.DecimalFormat. $(.00)Prix$ $(##.##)Total$ Notez que les formats numériques n'ont pas pour but d'arrondir des nombres: leur effet lorsqu'il sont utilisés dans ce but n'est pas garanti, en particulier les formats (0) et (00) peuvent réserver des surprises si on les applique à des réels.
Si vous avez besoin d'arrondis, utilisez les formats (Round), (Ceil) ou
(Floor).
String.sub - Sous-chaine. Par exemple, $(String.sub5,8)chaine$
retourne les caractères entre les positions 5 (incluse) et 8 (exclue), et
$(String.sub5)chaine$ retourne tous les caractères après la position 5
(incluse). La première position est 0, pas 1.
Formats de dates : Autres formats:
Upper - Passage en majuscules (exemple:
Variables DynHtml prédéfinies$COOKIE$
Le numéro de session client ExperShop, sous forme de paramètre HTTP, à
inclure dans les URL ExperSHOP (dans les liens HTTP utilisant le tag HTML
<A HREF=...> tag). Voir aussi: instruction $Cookie, pour les URLs invoquées via des "FORM" HTML. $\$
Affiche un caractère "$".
Data sets et data objectsUn "data object" est equivalent à un n-uplet de base de données, avec des attributs équivalents aux colonnes du n-uplet.
Un "data set" est un ensemble de "data objects": par exemple, le résultat
d'une requête à une base de données, ou le panier
d'achats d'un client vu comme un ensemble d'articles. Il y a deux types de "data sets": les "data sets" prédéfinis d'ExperSHOP (comme le panier d'achats ou le fichier de configuration de la boutique), et les "data sets" transitoires générés à l'exécution (comme les résultats de requêtes à une base de données, ou les énumérations).
Par exemple, ExperShop fournit un "data set" prédéfini appelé
Le panier d'achats, "ShoppingCart", est aussi un "data set": vous pouvez
boucler sur les articles du panier, pour afficher leurs caractéristiques
(chaque article étant un "data object").
Les requêtes SQL sont elles aussi des "data sets", dès leur
exécution:
Un paramètre est une variable vue comme un paramètre HTTP: en
particulier, il sera transmis aux actions si $Action est utilisé.
(par contre, il ne sera pas transmis si la page courante est soumise en
tant que "form" HTML: c'est un paramètre de la page courante).
Pour ajouter du texte à la fin d'une variable ou d'un paramètre,
utilisez l'instruction
Une variable peut être calculée : $DefVar jour (24 * 60 * 60) EnumérationsUne énumération est une liste de valeurs separées par des virgules, ou une série continue d'entiers, ou les deux; par exemple, vous pouvez définir des énumérations comme ceci:$DefVar mois Jan,Fev,Mar,Avr,Mai,Jun,Jul,Sep,Oct,Nov,Dec $DefVar jourssemaine 1->7 Le premier exemple liste les mois, le second est équivalent à 1,2,3,4,5,6,7. La combinaison des deux syntaxes est valide: par exemple, $DefVar intervalles 1->5,10->20
Il est possible de boucler sur les valeurs d'une énumération, en
utilisant l'instruction $LoopOnEnum mois mm Le mois courant est: $mm:value$ $EndLoop $LoopOnEnum jourssemaine jj Le jour courant est: $jj:value$ $EndLoopEn fait, une énumération est un "data set", dont chaque valeur "data object" comporte une seule colonne, nommée "value" (c'est pourquoi mm:value est utilisé dans la boucle ci-dessus).
Il est possible de traîter les erreurs d'exécution en utilisant
l'instruction
Exemple (dans une page DynHtml, la plupart des "FORM" doiven commemcer ainsi):
<FORM METHOD=POST ACTION="com.expershop.lite.ExperSHOP"> $Cookie Stocker des informations liées à la session$Cookie permet d'accéder à toute information liée à la session client: par exemple, $Cookie:CustId$ est le numéro de client lorsqu'un client est loggé.Notez qu'ExperShop n'utilise pas de "vrais" cookies: dans ce document, "cookie" fait référence à des informations relatives à la session, et disponibles pendant toute sa durée. Il est possible de stocker des informations dans le "cookie":
Requêtes SQLIl est possible de définir des requêtes SQL, de les exécuter, et de boucler sur leurs résultats pour afficher le contenu des n-uplets.
Définir une requête SQL $DefineSql nomRequete instruction-sql Ajouter du texte à une requête SQL $AppendSql nomRequete texte $AppendSql2 nomRequete texte$AppendSql et $AppendSql2 permettent d'ajouter du texte à une requête SQL. $AppendSql2 évalue la requête tout de suite (toutes les variables connues sont remplacées par leur valeur), alors que $AppendSql laisse les variables telles quelles (la requête sera évaluée par $ExecSql, dont elle peut être paramétré). $AppendSql ou $AppendSql2 peuvent être utilisés avec une instruction "If... Else", pour compléter le texte d'une requête. Note: Si "texte" commence par "AND" ou "OR", la chaîne AND ou OR sera supprimée si "texte" est la première condition d'une clause WHERE. Par exemple, ajouter "AND Prix>10" à la requête "SELECT * FROM Articles WHERE" produira "SELECT * FROM Articles WHERE Prix>10". Ensuite, ajouter "AND Prix<100" produira "SELECT * FROM Articles WHERE Prix>10 AND Prix<100".
Exécuter une requête SQL $ExecSql nomRequete [nomBase]Si la requête contient des variables, celles-ci sont évaluées avant exécution de la requête. Le nom de la base est optionnel dans le cas de la base de données définie par défaut dans le fichier de configuration de l'application, sinon la base de données doit être définie sous forme d'une datasource dans le fichier de configuration de l'application.
Boucler sur les résultats d'une requête $LoopOnResults nomRequete nomTuple [i j] ... $EndLoopIl est possible de rajouter au nom du tuple les bornes de la requête, pour pouvoir boucler de l'élément i, jusqu'à l'élément j. Attention, cette option ne guarantit en rien l'ordre des éléments provenant de la base (contrainte SGBD). exemple : $LoopOnResults MyREQ myTuple 11 20 ... $EndLoop Afficher la valeur d'une colonne (dans une boucle)
Cas où il n'y a pas de résultat $IfNoResult nomRequete ... $Else ... $Endif Gestion d'erreur $IfError ... $Else ... $Endif ActionsVous pouvez exécuter une Action ExperSHOP depuis une page DynHtml, en utilisant l'instruction$Action (pour en savoir plus sur
les Actions ExperSHOP, voir la
page web des actions DynHtml).
Syntaxe: Exemple: vider le panier d'achats. $Action com.expershop.actions.ESEmptyCart Tester la présence d'une variable$IfPresent nomVariable ... $Else ... $EndifExemples: $IfPresent Prenom $IfPresent client:Prenom (dans une boucle)
$IfFilePresent nomFichier ... $Else ... $EndifExemples: $IfFilePresent fichierLocal.txt
(dans le répertoire local)$IfFilePresent /tmp/fichier.txt (chemin absolu)$IfFilePresent f:NomFich (dans une boucle)
$LoopOnFiles repertoire fich Nom: $fich:name$, Extension: $fich:ext$, Date: $(DateFormat.dd/MM/yyyy)file:lastmodified$, FichierOuRepertoire: $file:isfile$ <br> ... $EndLoopLe nom du répertoire est soit relatif à ESRootDir, soit absolu (par exemple, s'il commence par / sous Unix). Le champ "isfile" vaut 1 s'il s'agit d'un fichier, 0 sinon (répertoire, lien...)
$DefVar x 2.3 $CheckNumber $x$ $IfError ERREUR: $x$ n'est pas un nombre<br> $Else Ok<br> $Endif $ClearError Opérateurs de calcul simplesIl est possible de faire des additions, soustractions, multiplications et divisions, en utilisant $Add, $Sub, $Mul and $Div.Les variables utilisées doivent avoir été préalablement déclarées; exemple: $DefVar a 1 $Add a 1 $DefVar b 2 $Div a $b$Dans cet exemple, a=1, puis on ajoute 1 (a=2), et on divise par la valeur de b (à la fin, a=1).
$IfEqual nomvariable valeur ... $Else ... $EndifExemples: $IfEqual Ville Paris $IfEqual Prenom "" $IfEqual Prenom $nom$ $IfEqual client:Prenom Jean (dans une boucle)
Comparaisons de valeurs numériques $IfEe variable 0 Zero! $Endif $IfLe variable 10 $variable$ <= 10 $Endif $IfLt variable $unNombre$ $variable$ < $unNombre$ $Endif $IfGe variable 10 $variable$ >= 10 $Endif $IfGt variable $unNombre$ $variable$ > $unNombre$ $Endif Comparer et évaluer des expressions$If permet d'utiliser des expressions à l'intérieur d'une syntaxe conditionnelle :$If ( expression opérateur expression) ... $Else ... $Endif"expression" peut être un calcul : ($var1$ + 14)*3 + $var2$ "opérateur" peut être un opérateur de comparaison, ou un opérateur logique. Les opérateurs de comparaison sont : < > <= >= = <> !=Les opérateurs logiques sont : && ("et" logique) || ("ou" logique) ! ("not" logique)Il est possible d'utiliser des parenthèses pour regrouper des expressions. Par exemple, la syntaxe suivante est valide : $If $courant$ >= $min$ && ! ($courant$ > $max$) La valeur courante semble correcte. $Else La valeur courante est en dehors des bornes. $Endif Exit$ExitQuitter la page immédiatement. $ExitLoopQuitter la boucle courante immédiatement.
$Switch var $Case val_1 ... ... $EndCase $Case val_2 ... ... $EndCase $Default ... ... $EndCase $EndSwitchSelon la valeur de l'expression le cas approprié est exécuté. Dans le cas où aucune expression ne convient, il est possible de rajouter un cas "attrape-tout" ("$Default").
$ExpandFile chemin $ExpandFile est différent de $Include: par exemple, une variable ou une requête définie dans le fichier expansé ne sera pas accessible au retour dans le fichier d'origine. chemin est relatif au répertoire où se trouve la page courante.
$Include chemin $Include est différent de $ExpandFile: par exemple, une variable ou une requête définie dans le fichier expansé sera accessible au retour dans le fichier d'origine. chemin est relatif au répertoire où se trouve la page courante.
$System command $System exécute une commande du système d'exploitation: les résultats de la commandes sont affichés sur le flux HTML de sortie. Par exemple, pour lister les fichiers dans /tmp sur un système Unix: <pre> $System ls -l /tmp </pre> $Debug texteAffiche du texte sur la sortie standard, dans un but de debug. Exemples: $Debug Bonjour les gars! $Debug Nom = $Nom$
$# Ceci est un Commentaire |
Working with DatesHome Contents Please email any bug reports, comments or suggestions to ExperLog's Online Support OverviewIn most cases, ExperShop uses long integers to store date/time informations: the main reason is that every database has its own Date formats, but every database can store long integers!This way of handling dates is y2k compliant, of course, as ExperShop has been designed in 1999 (with current integer formats, a problem might occur in year... 2037, but in 2037 Integers should be wider than today ;)
Displaying dates in DynHtml templatesDynHtml includes a predefined data object, called "CurrentDate", that gives access to dates relative to the currend day.For example, $CurrentDate:Now$ is the current day. CurrentDate has the following attributes:
Formats are those defined in the java.text.DateFormat class, so you can also use the predefined DateFormat.SHORT, DateFormat.MEDIUM, DateFormat.LONG and DateFormat.FULL formats; Example, $(DateFormat.SHORT)CurrentDate:Now$ will display the current date in short format. Dates can also be shifted, relative to the current time; for example, the following constructs are valid:
Converting text to date valuesThe (DateVal) modifier can be used to convert a date text to an ExperShop date value (a long integer); the date text must be of the following format: yyyy:MM:dd (yyyy is the year, MM the month and dd the day).
For example, if the "dt" variable is defined as such:
Date formatsA date can be formatted for display using the Dateformat format. For example, the current date can be displayed in yyyy/mm/dd format as follows (eg. 2001/10/25 representing October 25th, 2001):$Defvar today $CurrentDate:Now$ $(DateFormat.yyyy/MM/dd)today$The format that follows "DateFormat." corresponds to the format supported by the java.text.SimpleDateFormat java class (Java 2 SDK): the description below is an excerpt from Sun's documentation concerning the java.text.SimpleDateFormat class, and is applicable to ExperShop's date formats. (----- Sun documentation excerpt starts here -----) Format Syntax: To specify the time format use a time pattern string. In this pattern, all ASCII letters are reserved as pattern letters, which are defined as the following: The count of pattern letters determine the format.Symbol Meaning Presentation Example ------ ------- ------------ ------- G era designator (Text) AD y year (Number) 1996 M month in year (Text & Number) July & 07 d day in month (Number) 10 h hour in am/pm (1~12) (Number) 12 H hour in day (0~23) (Number) 0 m minute in hour (Number) 30 s second in minute (Number) 55 S millisecond (Number) 978 E day in week (Text) Tuesday D day in year (Number) 189 F day of week in month (Number) 2 (2nd Wed in July) w week in year (Number) 27 W week in month (Number) 2 a am/pm marker (Text) PM k hour in day (1~24) (Number) 24 K hour in am/pm (0~11) (Number) 0 z time zone (Text) Pacific Standard Time ' escape for text (Delimiter) '' single quote (Literal) '
(Text): 4 or more pattern letters--use full form, < 4--use short or abbreviated form if one exists. (Number): the minimum number of digits. Shorter numbers are zero-padded to this amount. Year is handled specially; that is, if the count of 'y' is 2, the Year will be truncated to 2 digits. (Text & Number): 3 or over, use text, otherwise use number. Any characters in the pattern that are not in the ranges of ['a'..'z'] and ['A'..'Z'] will be treated as quoted text. For instance, characters like ':', '.', ' ', '#' and '@' will appear in the resulting time text even they are not embraced within single quotes. (------ Sun documentation excerpt ends here ------)
|
Pricing ExperShop LiteIMPORTANT Les prix
proposés s'appliqueront à la version 1.x, jusqu'à fin
2000.
Téléchargement gratuit ExperShop Lite peut être téléchargé gratuitement: vous pouvez l'utiliser à des fins de développement, sans garantie ni support. Quand devez-vous payer ? Vous devez payer:
Niveaux de licence:
Les prix sont exprimés en Euros, hors taxes (pour les utilisateurs Européens, TVA France: 19,6 %)
Prix spéciaux (gros hébergeurs, revendeurs) Si vous avez besoins de termes de licence spécifiques (ex. plus de support) ou si vous avez des besoins particuliers (ex. revente du produit), contactez-nous. Vous souhaitez acquérir une licence ExperShop Lite ? Contactez nous ! |
ExperSHOP - Current version and statusHome Contents Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog WARNINGThe current ExperSHOP release is a beta version.Any feedback is welcome!
|
Actions ExperSHOPPage Principale Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog Les Actions, c'est quoi ?Les Actions sont des classes Java, invoquées à la demande par ExperSHOP pour exécuter certaines tâches.
ExperSHOP est livré avec un certain nombre d'actions prédéfinies:
par exemple, l'action Les actions peuvent être invoquées :
Les Actions peuvent recevoir des paramètres (également passés
au servlet comme paramètres HTTP), et peuvent aussi retourner des
paramètres comme résultat (ces nouveaux paramètres
seront visibles du servlet comme des paramètres HTTP).
Une action peut s'exécuter avec succès, ou échouer; il est possible
de récupérer l'erreur et de l'afficher grace à un template:
le paramètre HTTP "ActionFailed" définit quelle page afficher si
l'action échoue. Actions ExperSHOP prédéfiniesLes actions suivantes sont prédéfinies:Actions à usage général:
Actions d'administration :
Actions réservées au paiement sécurisé:
com.expershop.actions.ESAddToCartAjouter un article au panier d'achats.Paramètres d'entrée:
Paramètres en sortie:
com.expershop.actions.ESUpdateCartMettre à jour le contenu du panier d'achats. Paramètres d'entrée:
com.expershop.actions.ESEmptyCartVider le panier d'achats.Cette action peut être utilisée lors de l'interfaçage d'ExperSHOP avec un système de paiement sécurisé incluant des fonctions de back-office: dans ce cas, le marchand peut ne pas souhaiter utiliser le back-office d'ExperSHOP, et simplement vider le panier d'achats lorsqu'une commande client est confirmée.
com.expershop.actions.ESConfigureCartConfigurer le panier d'achats - en particulier, pour changer la table utilisée pour les produits.Cette action est réservée à des utilisations avancées du panier d'achats. Action "Server-side". Paramètres en entrée :
Tout paramètre qui commence par CONFIG_ .
Paramètres en sortie : aucun. com.expershop.actions.ESSaveCartSauvegarder le contenu du panier d'achats.Paramètres en entrée :
Paramètres en sortie:
com.expershop.actions.ESRestoreCartRestaurer un panier d'achats précédemment sauvegardé: le contenu du panier sera remplacé.Paramètres d'entrée:
com.expershop.actions.ESCustomerLoginConnecter un client existant (log-in).Paramètres d'entrée:
com.expershop.actions.ESNewCustomerCréer un nouveau client dans la base de données.Paramètres d'entrée:
com.expershop.actions.ESUpdateCustomerMettre à jour un client existant dans la base de données.Paramètres d'entrée:
com.expershop.actions.ESOrderActPasser commande du contenu du panier d'achat (le panier d'achats est ensuite vidé).L'état de la nouvelle commande sera égal à "WAITING" (en attente de paiement), car cette action est destinée au paiement par chèque ou fax.
ESOrderAct crée une nouvelle entrée dans la table ECustOrder de la
base de données: vous pouvez mettre à jour les colonnes
de votre choix dans votre commande, en spécifiant dans votre FORM
HTML des paramètres HTTP portant le même nom que les colonnes
à mettre à jour dans la table ECustOrder. Paramètres d'entrée:
com.expershop.actions.ESCheckParamsContrôle des paramètres obligatoires: par exemple, lors de la soumission d'une forme de saisie, peut servir à vérifier que le nom du client est bien présent.Paramètres d'entrée:
com.expershop.actions.ESSendMailEnvoi d'e-mail.Paramètres de configuration:
com.expershop.actions.ESSendMailMPEnvoi d'e-mail avec fichiers attachés.Paramètres d'entrée:
Attention: les packages mail.jar et activation.jar sont requis pour cette action (Ils sont livrés en standard dans Tomcat). Exemple pour envoyer en attachement une liste de fichiers qui proviennent de la servlet ESUploaderServlet. Les noms des fichiers sont stockés dans des paramètres 'uploadfile[n]' avec n commençant à 1. remove=1, les fichiers seront ensuite supprimés du serveur. $Assign Template ESTemplates/Mail/custom.tmpl $Assign To his_name@his_company.com $Assign From my_name@my_company.com $Assign Subject a new version $Assign remove 1 $Assign Attachment "" $DefVar nf 1->$nbfiles$ $LoopOnEnum nf bf $Append Attachment " " $Defvar pname uploadfile$bf:value$ $Append Attachment $(Eval)pname$ $EndLoop $Action com.expershop.actions.ESSendMailMP com.expershop.actions.ESWriteFileEcrire un fichier sur le disque, par expansion d'un modèle de page DynHtml.Action "server-side" pour des raisons de sécurité: ne peut être invoquée que via $Action .Exemple (Unix):
$Assign Template ESTemplates/xml/toxml.tmpl
Paramètres d'entrée:
|
Actions d'administration boutique ExperSHOPPage Principale Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog Les actions, c'est quoi ?Les Actions sont des classes Java, invoquées à la demande par ExperSHOP pour exécuter certaines tâches.
ExperSHOP est livré avec un certain nombre d'actions prédéfinies:
par exemple, l'action Pour plus de détails, voir la documentation des actions ExperShop.
Actions d'administrationLes actions d'administration sont des actions qui ne peuvent être invoquées que depuis le servlet d'administration (com.expershop.lite.ESAdminServlet ).
Essayer de les exécuter via le servlet ExperSHOP provoque une erreur
"Access denied" - accès refusé (pour raison de sécurité).
ExperSHOP fournit des actions d'administration prédéfinies :
com.expershop.admin.ESNewDepartmentCréer un nouveau rayon. La table correspondante dans la base de données est EDepartment, et doit contenir au moins les colonnes "DeptId" (référence rayon) et "Name" (nom du rayon).Paramètres en entrée :
Paramètres en sortie : En cas de succès: aucun. En cas d'erreur:
com.expershop.admin.ESUpdateDepartmentMettre à jour un rayon existant. La table correspondante dans la base de données est EDepartment.Paramètres en entrée :
Paramètres en sortie : aucun com.expershop.admin.ESDropDepartmentSupprimer un rayon existant. La table correspondante dans la base de données est EDepartment.Paramètres en entrée :
Paramètres en sortie : aucun com.expershop.admin.ESNewProductCréer un nouveau produit. La table correspondante dans la base de données est EProduct, et doit contenir au moins les colonnes "ProdId" (référence produit), "Name" (nom du produit) et "Price" (prix du produit).Paramètres en entrée :
Paramètres en sortie : En cas de succès: aucun. En cas d'erreur:
com.expershop.admin.ESUpdateProductMettre à jour un produit existant. La table correspondante dans la base de données est EProduct.Paramètres en entrée :
Paramètres en sortie : aucun com.expershop.admin.ESDropProductSupprimer un produit existant. La table correspondante dans la base de données est EProduct.Paramètres en entrée :
Paramètres en sortie : aucun com.expershop.admin.ESDropCustomerSupprimer un client existant. La table correspondante dans la base de données est ECustomer.Paramètres en entrée :
Paramètres en sortie : aucun com.expershop.admin.ESUpdateOrderMettre à jour l'état d'une commande existante. La table correspondante dans la base de données est ECustOrder, et seuls l'état de la commande et son état de paiement (respectivement "Status" et "PayStatus") peuvent être affectés.Paramètres en entrée :
Paramètres en sortie : aucun com.expershop.admin.ESDropOrderSupprimer une commande existante, inclus la liste des articles commandés et l'en-tête de commande. Les tables concernées dans la base de données sont ECustOrder et EProdOrder.Paramètres en entrée :
Paramètres en sortie : aucun com.expershop.admin.ESRemoveCanceledOrdersSupprimer toutes les commandes annulées - état=CANCELED, inclus la liste des articles commandés et l'en-tête de commande. Les tables concernées dans la base de données sont ECustOrder et EProdOrder.Paramètres en entrée : aucun Paramètres en sortie : aucun com.expershop.admin.ESRemoveProcessedOrdersSupprimer toutes les commandes traitées - état=PROCESSED, inclus la liste des articles commandés et l'en-tête de commande. Les tables concernées dans la base de données sont ECustOrder et EProdOrder.Paramètres en entrée : aucun Paramètres en sortie : aucun |
Administration ExperShopPage Principale Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog ExperSHOP Lite est livré avec un servlet spécifique, dédié à l'administration de la boutique:
Se connecter à l'outil d'administrationUne fois que votre ExperShop est installé et que la boutique d'exemple fonctionne, accédez simplement àhttp://your-shop-url/servlet/com.expershop.lite.ESAdminServlet
pour vous connecter à l'outil d'administration.
Un mot de passe vous sera demandé pour vous connecter comme Administrateur :
tant que vous ne l'avez pas modifié, sa valeur par défaut
est Entrez le mot de passe, et cliquez sur le bouton Ok: vous êtes maintenant connecté comme Administrateur, suivez les liens HTML!
Gestion des commandes clientLorsqu'un client passe commande, la commande est créée dans la base de données avec un état égal à NEW (nouveau).Les outils de gestion de commandes vous permettent de modifier l'état de la commande au cours de son traitement: un état PROCESSING signifie que le traitement de la commande est en cours, et un état PROCESSED signifie que cette commande est terminée et livrée au client. Les commandes en état PROCESSED peuvent être supprimées à la demande par l'Administrateur de la boutique. La plupart des opérations de mise à jour sont effectuées via les actions d'administration ExperSHOP, par exemple pour modifier l'état des commandes ou supprimer certaines commandes. Mises à jour du catalogueL'outil de mise à jour du catalogue permet à l'Administrateur de créer/mettre à jour/supprimer des rayons et des articles dans la boutique.La plupart des opérations de mise à jour sont effectuées via les actions d'administration ExperSHOP, par exemple la création, mise à jour ou suppression des rayons et des produits. Remarque: ces opérations peuvent aussi être directement réalisées en SQL sur la base de données, cette méthode étant plus rapide pour insérer des articles en grand nombre.
|
Le panier d'achats d'ExperShopPage Principale Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog IntroductionExperShop Lite inclut un panier d'achats: des articles peuvent y être ajoutés ou supprimés, et le contenu du panier peut être affiché dans une page DynHtml ExperShop.Le panier d'achats intègre des fonctions de calcul de taxes et de frais de port.
Afficher le contenu du panier d'achatsLe panier d'achats est accessible depuis les modèles de page DynHtml à travers un "DataSet" prédéfini, appeléShoppingCart .
Par exemple, vous pouvez à tout instant boucler sur le contenu du panier d'achats : $LoopOnResults ShoppingCart article Ref. article : $article:ProdId$ - Prix : $article:Price$<br> $EndLoopChaque ligne (article) du panier d'achats contient les informations suivantes :
$ShoppingCart:TotalPrice$ est le prix total du
contenu du panier, taxes et frais de port inclus.Les informations suivantes sont accessibles :
Ajouter / Supprimer des articlesLes actions suivantes peuvent affecter le contenu du panier d'achats :
Pour supprimer un article du panier, utilisez l'action ESUpdateCart (soit en spécifiant un paramètre DEL_[ItemId] égal à "y" comme "yes", soit en mettant la quantité (QTY_[ItemId]) à "0").
Gestion des produits avec options (couleurs, tailles...)Lorsque vous ajoutez un article au panier d'achats (avec l'action ESAddToCart), vous pouvez définir des paramètres supplémentaires pour gérer des options produit :OptionNames est la liste des noms d'options (séparés par des virgules): par example, <input type="hidden" name="OptionNames" value="Couleur,Taille">Pour chaque option, vous devez définir un paramètre - généralement via un "contrôle" dans une "form" de saisie (le nom du paramètre est le nom de l'option, sa valeur est la valeur de l'option). Par exemple : <select size="1" name="Couleur"> <option>Rouge <option>Bleu </select> <select size="1" name="Taille"> <option>10 <option>20 </select>Lorsque la "form" HTML sera validée, l'article sera ajouté au panier avec les options positionnées selon le choix de l'utilisateur.
Dans la page qui affiche le contenu du panier, vous pouvez accéder aux valeurs
des options comme suit : $LoopOnResults ShoppingCart art Nom=$art:Name$, Couleur=$art:Options.Couleur$, Taille=$art:Options.Taille$ <br> $EndLoopRemarque: du côté de l'administration boutique, les options pourront être affichées d'une manière comparable (en bouclant sur les articles de la commande), ou directement en tant que $article:Options$ (qui affichera une chaîne de caractères de la forme { Couleur=Bleu, Taille=10 } - suffisante pour être comprise de l'utilisateur).
Stocker des informations utilisateur dans le panierLe panier peut conserver en mémoire des informations utilisateur : elles seront conservées aussi longtemps que le panier ne sera pas vidé.
Pour stocker des information utilisateur dans le panier, utilisez les actions
ESUpdateCart ou ESAddToCart, avec des paramètres de la forme UINFO_[nom]. <input type=text name="UINFO_Prenom">provoquera le stockage d'une information appelée "Prenom" dans le panier au moment où la "form" HTML sera validée.
Pour accéder à des informations utilisateur préalablement stockées,
utilisez $ShoppingCart:UInfo.
Il est possible de modifier dynamiquement les zones taxe et frais de port du
panier, en utilisant l'action
Différents algorithmes de calcul des frais de port peuvent être utilisés :
Exemple : deux zones de frais de port
Par exemple, nous pouvons définir une zone "Magasin" pour les clients
qui viennent prendre livraison de leur commande sur place (avec des frais de
port gratuits), et une zone "Maison" pour ceux qui veulent être livrés
chez eux (avec un frais de port constant, par exemple 10 Euros).
Pour cela, il faudra inclure les informations suivantes dans le fichier de
configuration boutique:
Remarque: les tarifs sont généralement des nombres, mais il est aussi possible
de définir des intervalles: par exemple,
Exemple en syntaxe PostgreSQL :
Créez un fichier texte qui contient les valeurs suivantes :
Lancez le chargeur :
Cette commande va générer les commandes SQL INSERT nécessaires pour
remplir votre table : sauvegardez les dans un fichier, et exécutez-le en tant
que script SQL pour charger votre base.
Par exemple, 2 codes remise (une remise "gold" de 10%, et une remise "silver"
de 5%) peuvent être définies comme suit :
Le code remise est passé en paramètre à l'action
Par exemple, vous pourriez souhaiter utiliser la table suivante :
Deux étapes sont nécessaires pour ajouter un tel produit au panier d'achats :
Par exemple, voici le code pour configurer le panier comme décrit ci-dessus :
Etape 2: ajouter un article au panier d'achats
Si vous utilisez l'action
|
Configuration de l'applicationPage principale Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog Vue généraleExperShop peut supporter des boutiques multiples: Chaque boutique a son fichier de configuration, qui définit un ensemble de propriétés: comment accéder à la base de données (pilote JDBC, nom d'utilisateur, mot de passe...), unité monétaire, etc...Un fichier de configuration global définit, pour chaque boutique, le chemin vers son fichier de configuration spécifique. Fichier de configuration global ExperShopCe fichier associe des noms de boutique à des chemins vers des fichiers de configuration : il contient une entrée pour chaque boutique, plus une entrée "default" qui spécifie la boutique par défaut (celle qui sera choisie si ExperShop est appelé sans nom de boutique précis).Si vous avez une seule boutique, vous pouvez directement utiliser ce fichier de configuration comme celui de la boutique: voir le chapitre suivant pour le format du fichier. Par défaut, le fichier de configuration s'appelle EShop.cfg sous Unix, EShopWin.cfg sous Windows, et se trouve dans le répertoire des fichiers utilisateurs du serveur Web. Ces nom et localisation par défaut peuvent être modifiés, en spécifiant des propriétés d'initialisation ("init properties") pour les servlets ExperSHOP:
Format de fichier:
default: cheminParDefaut Boutique1: cheminBoutique1 ... BoutiqueN: cheminBoutiqueNL'entrée "default" est facultative. Exemple (Windows):
default: c:\\SurfShop\\surf.cfg SurfShop: c:\\SurfShop\\surf.cfg Supermarche: c:\\Supermarche\\super.cfgRemarque: sous windows, les caractères "\" dans les chemins doivent être dupliqués (sous Unix, un chemin ressemble à ceci: /users/SurfShop/surf.cfg). Fichier de configuration de boutiqueChaque boutique nécessite un fichier de configuration. Le fichier
de configuration définit les propriétés suivantes
:
NotesSous Windows, si vous spécifiez des chemins qui comportent des caractères "\", dupliquez-les dans le fichier de configuration (exemple:C:\ExperSHOP\Mystore.cfg
apparaîtra comme C:\\ExperSHOP\\Mystore.cfg dans le
fichier de configuration).
Exemple (Windows): jdbc.Driver: sun.jdbc.odbc.JdbcOdbcDriver jdbc.Url: jdbc:odbc:ma_boutique jdbc.User: jean jdbc.Password: anouilh jdbc.MaxConn: 1 shop.Name: MaBoutique shop.OrderEmail: jean@maboutique.fr shop.AdminPassword: admin shop.Currency: EUR shop.Timeout: 7200 shop.RootDir: C:\\ExperSHOP\\shops\\lite\\ESRootDir
|
Console d'administrationPage Principale Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog
Installation Utilisation Connection pool Trace configuration Application configuration Trace output Statistics on | off Save configuration Qu'est-ce que la Console d'Administration ?Une console d'administration est maintenant disponible pour administrer les applications ExperShop. Cette console est une application ExperShop, et peut donc être administrée de la même façon. Elle permet aujourd'hui de démarrer et d'arrêter une application, de configurer les connexions vers la base de données, de gérer les traces provenant de l'application, de gérer les connexions des clients qui se connectent à l'application, ainsi que de nombreux outils d'analyse.InstallationTout d'abord, vous avez besoin du package ExperShop.Si vous ne l'avez pas encore, téléchargez-le sur le Site Web ExperLog. La console d'administration est normalement installée avec ExperSHOP, et vous pouvez y accéder à l'URL suivante (remplecaz "localhost" par le nom ou l'IP de la machine où ExperSHOP est installé) : http://localhost:8080/expershop/com.expershop.lite.ESConsoleServlet Le mot de passe est "admin". Attention, il est fortement conseillé de changer le mot de passe de l'administrateur, avant même d'utiliser la console. En effet, un utilisateur mal intentionné, pourrait modifier le fonctionnement de votre serveur d'application. Ce mot de passe est stocké dans le fichier de configuration de la console d'administration. Pour activer ou désactiver la console d'administration, agissez comme suit :
Utilisation
[Connection pool]Ce panneau permet de gérer le pool de connexions vers la base de données, ainsi que d'autres paramètres de connexion. En haut du panneau, est indiqué le nombre de connexions physiques présentement utilisées.
[Trace configuration]Ce panneau permet de gérer le "Trace Manager". Il existe 5 niveaux de debug, :
[Application configuration]Ce panneau permet d'administrer la configuration générale de l'application.
[Trace output]Ce panneau permet de visionner le fichier d'erreurs et de messages de l'application. Ces logs sont visibles uniquement dans le cas où un fichier de logs a été positionné dans la partie "Trace configuration".[Statistics]Tous les clients présentement connectés à l'application sont listés. Lorsqu'on clique sur un client, les informations suivantes sont affichées, certaines sont modifiables.
Un lien vers le caddie est proposé ("[cart]"), et permet de visionner son contenu. Le fichier de configuration de la console d'administration est presque similaire à celui d'une application ExperShop normale. Les propriétés suivantes sont définies: [on | off]Ces panneaux permettent de démarrer et d'arrêter une application. Par défaut, une application est démarrée.
[Save configuration]Ce bouton permet de sauvegarder la configuration dans un fichier, ce fichier est défini dans le fichier de configuration de l'application. Si le fichier n'est pas défini, un fichier par défaut sera créé (/tmp/tmp-delegatefile.cfg). |
La base de donnéesPage Principale Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog A quoi sert la base de données ?ExperSHOP Lite s'appuie sur une base de données SQL.La base de données sert à stocker toutes les informations concernant:
Quelle base de données utiliser ?N'importe quelle base de données qui dispose d'un driver JDBC.Notez que toute base de données accessible via ODBC est dans ce cas. Comment configurer votre base de données ?Pour qu'ExperSHOP Lite puisse fonctionner, certaines tables doivent être créées dans la base de données: le paragraphe suivant décrit le schéma SQL correspondant.
Schéma SQL de la base de donnéesLe schéma SQL définit les tables de la base de données, avec leurs colonnes (par exemple, une table "Produit" comportera une colonne pour le nom du produit, une autre pour le prix, etc...)Vous pouvez modifier le schéma de la base en fonction de vos besoins, par exemple pour rajouter des champs spécifiques dans la table "EProduct" (les produits qui vous vendez). Les noms des tables, ainsi que certains champs particuliers (les champs "Id", par exemple "ProdId", la référence produit dans la table "EProduct"), ne doivent pas être supprimés ni renommés. Par défaut, ExperSHOP Lite utilise le schéma SQL suivant:
create table EDepartment ( DeptId varchar(20) primary key, Name varchar(64) NOT NULL, DeptImage varchar(128)); create table EProduct ( ProdId varchar(20) primary key, Category varchar(20), Name text NOT NULL, Brand varchar(32), Model varchar(32), Descrip text, Price double NOT NULL, InStock integer, StockLimit integer, ProdImage varchar(80), LargeImage varchar(80), DeptId varchar(20), Publish varchar(1)); create table ECustomer ( CustId varchar(20) primary key, LastName varchar(30) NOT NULL, FirstName varchar(30) NOT NULL, Password varchar(20), Address varchar(120), City varchar(32), ZipCode varchar(20), State varchar(32), Country varchar(32), Fax varchar(32), Tel varchar(32), Email varchar(64)); create table ECustOrder ( OrdId varchar(20) primary key, CustId varchar(20), AffId varchar(20), WlId varchar(20), OrderTime long, TotalPrice double NOT NULL, Tax double NOT NULL, ShippingCost double NOT NULL, ShipName varchar(64), ShipAddress varchar(120), ShipCity varchar(32), ShipZipCode varchar(20), ShipState varchar(32), ShipCountry varchar(32), ShipOptions text, Message text, Status varchar(10), PayStatus varchar(10), PayInfo varchar(32), CcNum varchar(20), CcExpDate varchar(12), CcName varchar(32)); create table EProdOrder ( OrdId varchar(20), ProdId varchar(20), Name text, Price double NOT NULL, Qty integer NOT NULL, Options varchar(80), Config varchar(128), primary key (OrdId, ProdId)); create table ECartSaver ( CartId varchar(32), Item text, ExpDate long); create table EAffiliate ( AffId varchar(32), Name varchar(64), Password varchar(16), Email varchar(64), Miles double );Recopiez simplement le schéma dans un fichier texte, et créez les tables dans votre base de données: cette opération peut nécessiter quelques modifications mineures dans le schéma, parce que la syntaxe de SQL peut varier quelque peu d'une base à une autre.
|
Guide ExperSHOP DynHtml Page Principale Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog Instructions DynHtmlPour une liste complète des instructions DynHtml, Cliquez Ici.
Guide d'utilisation DynHtmlDynHtml est le moyen qu'ExperShop Lite met à votre disposition pour inclure des données en provenance d'une base de données dans des pages HTML:L'essentiel du travail à effectuer pour créer et mettre à jour une boutique ExperShop consiste à écrire et maintenir des pages DynHtml. Dans la
boutique de démo ExperSHOP Lite, les pages DynHtml sont dans le
répertoire Ce guide détaille étape par étape une page DynHtml. Liste des produits dans un rayon de la boutiqueLa page DynHtml prise pour exemple permet d'afficher la liste des produits disponibles dans un rayon de la boutique. Voici à quoi ressemble l'affichage:
Maintenant, regardons le code source DynHtml interprété par ExperSHOP pour générer cet écran. Code source DynHtmlDynHtml est un mélange de HTML et d'instructions ExperSHOP, interprétées lors du chargement de la page.Regardez le code source: vous y verrez des tags HTML, et des instructions comme $ExecSql , $LoopOnResults ... $EndLoop , etc...
Ces instructions
permettent d'interroger la base de données, et d'inclure les résultats
de la requête dans la page HTML générée.
$DefineSql LISTPROD SELECT ProdId, Name, ProdImage, Price FROM Comment ça marche ?Regardons le code DynHtml, étape par étape: D'abord,
nous définissons une requête SQL pour lister tous les produits
disponibles dans un rayon de la boutique; pour cela, nous utilisons l'instruction
ExperSHOP
$DefineSql LISTPROD SELECT ProdId, Name, ProdImage,Revenons maintenant au HTML : <HTML> <HEAD> <TITLE>List Products</TITLE> </HEAD> <BODY BGCOLOR=#ffffff> <CENTER>Maintenant, éxécutons la requête que nous avons définie: $ExecSql LISTPRODSi la requête ne produit aucun résultat (s'il n'y a aucun produit dans le rayon), affichons "No Product Available" ("Aucun produit disponible") dans le navigateur du client:
$IfNoResult LISTPROD <h2>No Product Available</h2>Sinon, affichons la liste des produits; d'abord, insérons un en-tête de tableau:
$Else <TABLE BORDER> <TR> <TD ALIGN="CENTER"> <B><FONT SIZE=-1>Product Name</FONT></B> </TD> <TD ALIGN="CENTER"> <B><FONT SIZE=-1>Price</FONT></B> </TD> <TD ALIGN="CENTER"> <B><FONT SIZE=-1>Add to cart</FONT></B> </TD> </TR>... ensuite, insérons une ligne de tableau pour chaque produit du rayon choisi:
Pour cela, nous utiliserons l'instruction ExperSHOP $LoopOnResults
... $EndLoop , pour boucler sur les tuples retournés par la
requête sur la base de données:
$LoopOnResults LISTPROD prod <TR>Cette instruction signifie que l'on boucle sur la requête LISTPROD en utilisant une variable appelée "prod" ("prod" est le nom que nous donnons au tuple de données obtenu à chaque itération). Voyez le
lien HTTP ci-dessous: si le client clique dessus, le servlet
<TD ALIGN=CENTER> <A HREF="com.expershop.lite.ExperSHOP?$COOKIE$&Page=Maintenant, affichons le prix du produit:
<TD ALIGN="CENTER">$(.00)prod:Price$</TD>(.00) est un format d'affichage, qui signifie "2 chiffres après la virgule, avec 0 par défaut". Affichons
le lien "Add to cart" ("Ajouter au panier"): si le client clique dessus,
le Servlet
<TD ALIGN="CENTER"> <FONT SIZE="-1"> <A HREF="com.expershop.lite.ESCartServlet?$COOKIE$&Page= $EndLoopMaintenant, la boucle sur les produits est terminée, fermons le tableau : </TABLE>Le tableau ressemble à ceci :
L'instruction $EndIf marque la fin du groupe d'instructions
$IfNoResult ... $Else ... $Endif :
$EndifMaintenant, terminons la page HTML:
</BODY> </HTML> |
ExperSHOP - Vue GénéralePage Principale Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog Que peut-on faire avec ExperSHOP ?ExperSHOP est un serveur d'applications java léger, basé sur les servlets et JDBC.Il intègre les fonctions de base d'un serveur d'application: pool de connexions vers la base de données, multi-applications, gestion de sessions client, et interface vers des objets métier java. Pour les sites marchands, ExperShop intègre un panier d'achats, un système de prise de commandes et des passerelles vers des systèmes de paiement sécurisé. ExperShop vous permettra de créer des applications très rapidement, tout en ne limitant pas la créativité des web designers : pour cela, il intègre une technologie de "fusion" - modèles de page HTML avec code dynamique intégré, le tout interprété à la volée. Par exemple, pour créer votre site marchand : prenez la boutique de démonstration ExperSHOP, modifiez-la selon vos besoins, c'est prêt!
Quel système, serveur Web et base de données utiliser ?
Nos préférences en termes de serveur Web :
Tomcat, avec ou sans
Apache.
Nos préférences en termes de base de données :
MySQL
ou PostgreSQL. Nos préférences en termes de système : Linux, Unix en général. Quel paiement sécurisé peut-on utiliser ?Plusieurs systèmes sont supportés : CyberMut, SIPS, PayBox (France), Verisign PayFlow Pro (USA).Nous prévoyons d'interfacer d'autres systèmes prochainement : si vous avez un besoin spécifique dans le domaine du paiement, contactez-nous, car nous agirons d'abord en fonction des priorités et des besoins exprimés.
|
ExperSHOP - Démarrer rapidementPage Principale Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog Prérequis
Il y a une base de données HsqlDB dans le package ExperSHOP (la version n'est pas garantie). Installation sous forme d'application webCe chapitre s'applique aux serveurs de servlets qui supportent le déploiement d'applications web (fichiers .war, pour "Web Application aRchive").Ce devrait être le cas de tout serveur supportant au moins la spécification Servlets 2.2 (comme par exemple Tomcat). Si votre serveur de servlets ne SUPPORTE PAS les fichiers .war, veuillez passer au chapitre suivant. Pour déployer ExperSHOP comme une application web:
Pour vérifier que tout fonctionne bien, contactez l'application de démo d'ExperSHOP avec votre navigateur Web.
L'URL devrait ressembler à ceci : Si ExperSHOP fonctionne maintenant, vous pouvez quitter cette page !
Félicitations, l'installation est terminée. Installation sans support des applications webCe chapitre s'applique aux serveur de servlets qui ne supportent pas les applications web (fichiers .war) - supportés depuis la spécification servlets 2.2.Il s'applique aussi aux serveurs qui supportent les fichiers .war, mais ce mode d'installation est plus complexe que le simple déploiement d'une application web.
Tout d'abord, vous avez besoin du package ExperShop.
Pages DynHtmlElles se trouvent dans le répertoireexpershop/shops/lite/ESRootDir/ESTemplates/Shop :allez les consulter, avec l'aide du guide d'utilisation DynHtml.
Faire fonctionner la boutique d'exemple ExperSHOP LiteFaire fonctionner ExperShop avec Enhydra
Enhydra est un serveur d'applications open-source, developpé à
l'origine par Lutris technologies, et maintenu par ObjectWeb. Ensuite, après avoir installé Enhydra sur votre serveur, consultez nos "Release Notes" ExperShop pour Enhydra : Faire fonctionner ExperShop avec Tomcat Tomcat est l'implementation de référence des servlets java, fournie par Apache. Tomcat remplace l'ancien Apache JServ. Vous pouvez télécharger Tomcat sur les pages du projet jakarta d'Apache. Ensuite, après avoir installé Tomcat sur votre serveur, consultez nos "Release Notes" ExperShop pour Tomcat : Faire fonctionner ExperShop avec BEA Weblogic Weblogic est le serveur de servlets de BEA systems. Vous pouvez évaluer ou acheter Weblogic sur le site web de BEA. Ensuite, après avoir installé Weblogic sur votre serveur, consultez nos "Release Notes" ExperShop pour Weblogic:
|
Servlets ExperSHOPPage Principale Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog Servlets ExperSHOPSon rôle principal est d'interpréter des pages DynHtml, pour générer dynamiquement du contenu HTML.Tout ce qui concerne la gestion de la session client (déterminer qui est connecté) et du panier d'achats est transparent pour l'utilisateur. ExperSHOP se compose de plusieurs servlets:
Paramètres HTTPLe servlet ExperShop a besoin des paramètres HTTP suivants :
Exemple:
<a href=com.expershop.lite.ExperSHOP?S_=SurfShop> Surf Shop</a><br> <a href= com.expershop.lite.ExperSHOP?S_=Supermarket> Faites vos courses!</a><br>Exemple de lien HTTP vers une page ExperSHOP, dans une page DynHtml (liste des rayons de la boutique) : <a href= com.expershop.lite.ExperSHOP?$COOKIE$&Page=ESListeRayons.tmpl> Rayons</a>$COOKIE$ sera remplacé par toute l'information nécessaire à ExperSHOP pour savoir qui est connecté. Page dit à ExperSHOP quelle page DynHtml afficher lorsque l'utilisateur clique sur le lien. Voir le Guide DynHtml pour plus de détails.
Panier d'achats, et autres "Data Sets" prédéfinisDans les pages DynHtml, vous pouvez boucler sur des "data sets" (jeux de données, comme par exemple des résultats de requêtes SQL) et afficher leur contenu.Certains "Data Sets" sont prédéfinis, et toujours accessibles:
Paramètres et Data Sets spécifiques du servlet d'AdministrationVoir la documentation du servlet d'administration pour plus de détails.
com.expershop.lite.ESUploaderServletLa servlet com.expershop.lite.ESUploaderServlet permet d'uploader des fichiers textes ou binaires. Il faut préciser le ou les fichiers source qui doivent être uploader, le répertoire de destination, ainsi que l'url de redirection qui sera utilisé une fois que l'upload est terminé. Les paramètres obligatoires sont les suivants:
<form enctype=multipart/form-data method=POST action=com.expershop.lite.ESUploaderServlet> <input type=hidden size=20 name="urles" value="/servlet/com.expershop.lite.ExperSHOP?$Cookie$&Page=MyPage.tmpl"><p> <input type=hidden size=20 name="overwrite" value="on"> file to upload : <input type=file size=20 name=uploadfile value=><p> destination directory : <input type=text size=20 name=uploaddirectory value=unRepertoire/d/upload><p> <input type="submit" name="UPLOADSERVLET" value="UPLOAD"> </form> |
Version
4.1 (Octobre 2004) Liste des évolutions (en anglais) |
Paiement CyberMut ou PaiementCICPage 'Paiement Sécurisé' Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog PrésentationExperShop supporte CyberMut ou PaiementCIC à partir de la version 1.2, (aucun test n'a été effectué avec les versions plus anciennes).CyberMut et PaiementCIC s'apppuient sur la même plateforme technique : dans la suite du document, le terme "CyberMut" sera utilisé, pour CyberMut ou PaiementCIC. Les librairies CyberMut ne sont pas incluses dans la livraison ExperShop: vous les obtiendrez du Crédit Mutuel ou du CIC à l'ouverture de votre compte CyberMut. Pour plus d'information, consultez le site web CyberMut, ou celui de PaiementCIC
PlateformesPour l'instant, nous n'avons testé que sous Linux (intel) et Windows NT...Contactez-nous pour d'autres plateformes possibles. Comment fonctionne CyberMut ?CyberMut est un service de paiement sécurisé Crédit Mutuel.Pour y accéder, vous devez ouvrir un compte bancaire professionnel au Crédit Mutuel, puis vous abonner au service. Une fois remplies ces formalités, vous pourrez facilement configurer votre boutique ExperShop pour utiliser CyberMut. CyberMut dispose d'un serveur de paiement, qui prend le contrôle durant toute la phase de paiement: l'acheteur tape son numéro de Carte Bleue directement sur un serveur du Crédit Mutuel, qui contrôle la validitéde la transaction et accepte ou refuse le paiement; ensuite, le serveur CyberMut prévient le commerçant du succès ou de l'échec de la transaction. Le service est asynchrone: la boutique est rappelée par le serveur de paiement via une requête HTTP contenant les informations relatives à l'état du paiement. Le numéro de Carte Bleue du client est seulement connu de la banque: il n'est pas transmis au commerçant.
Configurer ExperShop pour CyberMutLes propriétés suivantes doivent être précisées dans le fichier de configuration de la boutique:shop.Currency : la devise utilisée (par exemple, USD pour le Dollar, EUR pour l'Euro). pay.cmut.URL
: L'URL du service de paiement CyberMut (fournie par CyberMut).
CyberMut
va vous demander un certain nombre d'informations permettant d'ouvrir
votre compte, parmi lesquelles l'URL utilisée pour la confirmation
des paiements.
Installer CyberMut sur votre systémeLors de l'ouverture de votre compte CyberMut, divers éléments vous seront remis, parmi lesquels les librairies CyberMut à installer sur votre système.Installation sous Linux (intel) La librairie ExperShop s'appelle libESCyberMut.so, et se trouve dans ExperSHOP/etc/cmut/linux-intel.
Principes:
Installation sous Windows NT La librairie CyberMut s'appelle CMSSL.dll; La librairie ExperShop s'appelle ESCyberMut.dll, et se trouve dans ExperSHOP\etc\cmut\win32. Pour cette raison, votre variable systéme PATH doit pointer vers ExperShop\etc\cmut\win32, ainsi que vers le répertoire contenant CMSSL.dll. N'oubliez pas de positionner la variable d'environnement CMKEYDIR de CyberMut : elle doit pointer vers le répertoire qui contient le fichier de "clé commerçant" livré par CyberMut. Pour plus de détails concernant l'installation de CyberMut, voir le manuel CyberMut. Appeler CyberMut depuis les templates ExperShopAppeler CyberMut, cela veut dire afficher une form HTTP, généré par CyberMut : cette form contient uniquement des chanps cachés ("hidden") et un bouton "submit". ExperShop
fournit une Action CyberMut, via la classe Pour afficher la form, vous devez invoquer l'action, puis afficher la valeur de CyberMutFORM; l'exemple suivant, lorsqu'il est copié dans un template DynHtml ExperShop, réalise les opérations nécéssaires :
$Action com.expershop.pay.cmut.ESGenFormAct $CyberMutFORM$La ligne "$Action" invoque l'action "com.expershop.pay.cmut.ESGenFormAct", puis $CyberMutFORM$ affiche la valeur du paramétre "CyberMutFORM". L'action ESGenFormAct reçoit 2 paramètres optionnels:
|
CyberCash PaymentPage 'Paiement Sécurisé' Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog OverviewExperShop supports CyberCash MCK 3.2 and later, but has not been tested against previous versions.Currently, only the credit-card payment is supported.
Quick StartYou can test the CyberCash integration against our CyberCash test account :
SetupThere are different steps to integrate a merchant server with CyberCash :
Installing the ExperShop CyberCash filesIn the ExperShop/etc/cych directory, you will find :
For PERL users : Installing the PERL scripts Go in the perl-scripts directory, then copy the CCMerchantCustom.pm and CCMerchantTest.pm files in the directory that contains the CyberCash MCK CGI scripts (depends on your MCK installation). For C users : Installing the C scripts Go in the c-scripts directory, then copy the CCMerchantCustom.c, CCMerchantCustom.h, CCMerchantTest.c and CCMerchantTest.h files in the c-scripts directory under your CyberCash MCK installation. Before doing that, you may wish to save the previous version of the files : if so, temporarily copy them somewhere else. Go in the
c-scripts/browser directory under your CyberCash MCK installation,
then compile with the makefile : Copy the generated .cgi files in the directory that contains the CyberCash MCK CGI scripts (depends on your MCK installation). Installing the templates Go in the MCK CGI directory (if you installed the MCK for testing, there's a test-mck/mck-cgi directory somewhere). Create an expershop_templates directory there, and copy the files from expershop_csk/expershop_templates in the new directory. Edit the conf/merchant_conf file, and change the "TEMPLATE_DIR=./templates" line to "TEMPLATE_DIR=./expershop_templates".
Invoking CyberCash from ExperShop templatesCyberCash is invoked from ExperShop by invoking thecom.expershop.pay.cych.ESOrderAct
action.
The action invokes the CyberCash services for payment : if the payment is successful, the shopping cart content is ordered.
Action : com.expershop.pay.cych.ESOrderActPlace Order, with CyberCash secure payment : a new order is created upon payment success, the shopping cart is emptied.If the payment fails, no order is placed, and the shopping cart remains unchanged. We recommend that the page that triggers this action be invoked through SSL (for credit-card info encryption). Input parameters
:
|
Paiement SécuriséPage Principale Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog Les systèmes de paiement sécurisé du marchéExperShop s'interface avec différentes solutions de paiement sécurisé disponibles sur le marché.Actuellement, les systèmes suivants sont supportés :
Comment ça marche ?La plupart des systèmes de paiement impliquent :
Pour que ce système fonctionne, le marchand doit s'abonner à un service de paiement, puis l'interfacer avec son site web marchand. ExperShop, en tant qu'outil de développement de serveurs marchands, inclut des interfaces pré-configurées pour supporter facilement certains systèmes de paiement sécurisés bien connus du marché, comme CyberCash aux Etats-Unis ou CyberMut en France.
Comment faire son paiement soi-même...Les petites boutiques, au moins au démarrage, veulent parfois s'abstenir de recourir aux services (payants) d'un prestataire de paiement.Il y a au moins deux moyens de gérer votre paiement vous-même : Le paiement par Chèque ou Fax Demandez simplement à vos clients de payer par Fax (avec leur Carte Bleue) ou par Chèque, avant de traiter la commande (par exemple, affichez un bon de commande en ligne, à imprimer et à vous renvoyer...) Chiffrement SSL Si votre serveur web (ou votre hébergeur) supporte SSL, vous pouvez le configurer pour transmettre un numéro de Carte Bleue préalablement chiffré. Inconvénients :
|
OpenMarket SecureLink PaymentPage 'Paiement Sécurisé' Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog OverviewExperShop supports OpenMarket SecureLink 3.0 and later, but has not been tested against previous versions.OpenMarket SecureLink is the client access to OpenMarket Transact servers : Transact is not only a payment system, it covers all aspects of the commercial transaction, including the shopping cart, the order management, the secure payment, and the shop's back-office. When using OpenMarket SecureLink with ExperShop, you completely override ExperShop's shopping cart, order management and back-office implementation : ExperShop is only used for the shop catalog, and to interface OpenMarket Transact servers.
PlatformsCurrently, only Windows NT is supported.Contact us for needs related to other platforms. SetupThere are different steps to integrate a merchant server with OpenMarket SecureLink :
Invoking OpenMarket SecureLink from ExperShop templatesFor each item sold in your shop, you have to generate an OpenMarket SecureLink "Digital Offer" : a digital offer is an URL with parameters that calls your OpenMarket secure payment provider's server.The Digital Offer is generated by the OpenMarket libraries : it contains some encrypted information for authentication and security checks. To generate
a digital offer from an ExperShop template, you have to invoke the Then, the
Digital Offer value can be retrieved from the As it is an URL, it can be used directly in an HTTP link, example : $Action com.expershop.pay.omkt.A more complete example follows : $DefineSql LISTITEMS select * from EProduct where DeptId='sunglasses' $ExecSql LISTITEMS <ul> $LoopOnResults LISTITEMS item $Action com.expershop.pay.omkt.ESGenDoAct |
Paiement PayboxPage 'Paiement Sécurisé' Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog PrésentationExperShop supporte PayBox à partir de la version 2.0 beta 2, (aucun test n'a été effectué avec les versions plus anciennes).Les scripts CGI PayBox ne sont pas inclus dans la livraison ExperShop: vous les obtiendrez sur le site web de PayBox, ainsi que l'ouverture de votre compte PayBox. Pour plus d'information, consultez le site web PayBox
PlateformesPoure l'instant, nous n'avons testé que sous Linux (intel)...Contactez-nous pour d'autres plateformes possibles, mais rien n'indique que sur d'autres plateformes, le paiement ne marche pas. Comment fonctionne PayBox ?PayBox est un service de paiement sécurisé PAYBOX SERVICE.1 Lorsqu'un acheteur a sélectionné des produits sur une galerie, le serveur du commerce redirige l'acheteur vers le serveur PAYBOX. Ce dernier établit alors une connexion cryptée avec l'acheteur (en SSL), pour que la saisie du numéro de carte bancaire soit effectuée en toute sécurité. PAYBOX vérifie la validité de la carte auprès de la banque du commerçant, et enregistre le paiement si la carte est authentifiée. Un ticket de paiement est ensuite affiché sur l'écran de l'acheteur. Ce même ticket lui sera renvoyé par courrier électronique (e-mail), comme preuve du paiement. L'acheteur a alors la possibilité de revenir sur la galerie marchande pour effectuer d'autres achats. PAYBOX envoie également par courrier électronique un double du ticket de paiement au commerce. C'est ce ticket qui constitue la preuve du paiement par l'acheteur. Le système PAYBOX s'intègre très facilement dans tout système de galerie marchande. Il suffit d'installer sur le serveur, un module CGI fourni par 'PAYBOX SERVICES', et d'ajouter un bouton sur une des pages HTML (ou templates .tmpl) de la galerie. L'utilisation de PAYBOX nécessite la signature préalable d'un contrat VAD/VPC avec l'établissement bancaire du commerçant, et l'abonnement au serveur PAYBOX auprès de la société "PAYBOX SERVICES". Une fois remplies ces formalités, vous pourrez facilement configurer votre boutique ExperShop pour utiliser PayBox.
Configurer ExperShop pour PayBoxLes propriétés suivantes doivent être précisées dans le fichier de configuration de la boutique:
pay.paybox.Url: L'URL du module CGI (ex: http://mon_host/cgi-bin/module.cgi). Défaut : http://localhost/cgi-bin/module.cgi
Installer PayBox sur votre systèmeIci, nous décrivons uniquement la procédure d'installation sous Linux, pour d'autres plateformes, nous contacter, à priori, toutes les plateformes supportées par PayBox fonctionnent.Installation sous Linux (intel) Vous devez tout d'abord télécharger sur le site de PayBox le module CGI pour Linux, copiez ce fichier dans le répertoire cgi-bin de votre serveur http, et donnez les droits d'exécution à ce fichier.
chmod 555 module.cgi Appeler PayBox depuis les templates ExperShopAppeler PayBox, cela veut dire afficher une form HTTP, généré par le module CGI de PayBox. L'appel peut être le suivant:
... <form method="post" action="com.expershop.lite.ExperSHOP"> $Cookie <INPUT type="hidden" name="Page" value="PayBox/ESRedirect.tmpl"> <INPUT TYPE="hidden" name="Mandatory" value="ShipName,ShipAddress,ShipCity,ShipZipCode,ShipCountry,Email"> ... ... ... <input type="submit" value="Order Now!"> </form>Le template PayBox/ESRedirect.tmpl ne contient que les informations suivantes, et ne doit en aucun cas contenir des informations html.
$Action com.expershop.pay.paybox.ESOrderAct $PayBoxFORM$Cette action ExperSHOP appelle le module CGI PayBox, et retourne le résultat de l'appel dans un paramètre de sortie appelé PayBoxFORM .Tous les champs de l'input Mandatory sont obligatoires, ainsi que le mail de la personne. La page générée par le module CGI contient un bouton, inutile d'appuyer sur celui-ci, le client sera redirigé vers le serveur PayBox pour le paiement sécurisé. Une fois le paiement effectué, le client aura la possibilité de revenir sur la boutique avec un lien. Note: l'action ESOrderAct "pré-commande" le contenu du panier d'achat: lorsque PayBox confirmera à ExperShop le succès du paiement, la "pré-commande" deviendra une commande à part entière.
|
Verisign Payflow Pro PaymentSecure payment Home Contents Please email any bug reports, comments or suggestions to ExperLog's Online Support OverviewExperShop supports Payflow Pro V 3.00 and later, but has not been tested against previous versions.Currently, only the credit-card payment is supported. Payflow Pro SDK installationThere are different steps to integrate a merchant server with Payflow Pro:
ExperSHOP setup for Payflow ProThe following properties should be set in the shop's configuration file:
Invoking Payflow Pro from ExperShop templatesPayflow Pro is invoked from ExperShop by invoking thecom.expershop.pay.payflowpro.ESOrderAct action.The action invokes the Payflow Pro services for payment: if the payment is successful, the shopping cart content is ordered.
Action : com.expershop.pay.payflowpro.ESOrderActPlace Order, with Payflow Pro secure payment: a new order is created upon payment success, the shopping cart is emptied.If the payment fails, no order is placed, and the shopping cart remains unchanged. We recommend that the page that triggers this action be invoked through SSL (for credit-card info encryption).
Input parameters:
Adding payment information to the orders databasePayment information (like for example the PNREF and AUTHCODE) will be automatically added to the orders database, provided the ECustOrder table contains columns called "PNREF", "AUTHCODE", etc...
|
Paiement ATOS SIPSPage 'Paiement Sécurisé' Table Pour tout rapport de bug ou suggestion, envoyez un mèl au Support ExperLog IntroductionExperShop supporte ATOS SIPS à partir de la version 4.03 pour java.ATOS SIPS est commercialisée par Atos en direct, ainsi que par de nombreux partenaires bancaires; en voici une liste indicative et non exhaustive:
Les librairies ATOS SIPS ne sont pas incluses dans la livraison ExperShop: vous les obtiendrez d'ATOS ou de votre banque à l'ouverture de votre compte de paiement sécurisé. Pour plus d'information, consultez le site web ATOS SIPS.
PlateformesToute plateforme supportée par ATOS SIPS 4.03 pour java, soit une large gamme de plateformes Unix et Windows (nous n'avons pas testé sur MacOS).Comment fonctionne ATOS SIPS ?SIPS est un service de paiement sécurisé bancaire.Pour y accéder, vous devez disposer d'un compte bancaire professionnel généralement chez l'une des banques partenaires d'ATOS (sauf achat direct de la prestation chez ATOS, qui doit savoir fonctionner avec la plupart des banques du marché). Une fois remplies ces formalités, vous pourrez facilement configurer votre boutique ExperShop pour utiliser SIPS. SIPS communique avec un serveur de paiement, qui prend le contrôle durant toute la phase de paiement: l'acheteur tape son numéro de Carte Bancaire directement sur un serveur SIPS de la banque, qui contrôle la validitéde la transaction et accepte ou refuse le paiement; ensuite, le serveur SIPS prévient le commerçant du succès ou de l'échec de la transaction. Le service est asynchrone: la boutique est rappelée par le serveur de paiement via une requête HTTP contenant les informations relatives à l'état du paiement. Le numéro de Carte Bancaire du client est seulement connu de la banque: il n'est pas transmis au commerçant.
Configurer ExperShop pour SIPSLa propriété suivante doit se trouver dans le fichier de configuration principal d'ExperSHOP - celui spécifié dans la variable d'initialisation SHOPCONFIG (par défaut, EShop.cfg, ou EShopWin.cfg sous Windows) :pay.sips.Pathfile: Le chemin vers le fichier de paramétrage "pathfile" de SIPS. La raison pour laquelle cette variable n'est pas dans le fichier de configuration boutique est liée à la conception de SIPS; ceci induit la restriction suivante: interfacer plusieurs systèmes SIPS chez des partenaires différents depuis un même serveur ExperSHOP (par exemple, un Banque Populaire et un Crédit du Nord) est impossible sans lancer deux instances de serveur de servlet différentes sur la machine, ce qui peut nécessiter beaucoup de mémoire). Les propriétés suivantes doivent être précisées dans le fichier de configuration de la boutique: Propriétés obligatoires :
pay.sips.MerchantId: l'identifiant commerçant fourni par la banque. Propriétés facultatives :
pay.sips.MerchantCountry: Le pays d'origine du marchand.
Installer SIPS sur votre systèmeLors de l'ouverture de votre compte SIPS, divers éléments vous seront remis, parmi lesquels les librairies SIPS à installer sur votre système.Installation sous Linux (ou Unix en général)
Installation sous Windows NT Même procédure que sous Unix. Appeler SIPS depuis les templates ExperShopAppeler SIPS, cela veut dire afficher une form HTTP, générée par SIPS : cette form contient uniquement des chanps cachés ("hidden") et un bouton "submit".
ExperShop fournit une Action SIPS, via la classe
Pour afficher la form, vous devez invoquer l'action, puis afficher la valeur de SipsFORM; l'exemple suivant, lorsqu'il est copié dans un template DynHtml ExperShop, réalise les opérations nécéssaires :
$Action com.expershop.pay.sips.ESGenFormAct $SipsFORM$La ligne "$Action" invoque l'action "com.expershop.pay.sips.ESGenFormAct", puis $SipsFORM$ affiche la valeur du paramétre "SipsFORM". Notez que ESGenFormAct est une action "server-side" (on ne peut pas la mettre dans le paramètre HTTP "Action" d'ExperShop, pour des raisons de sécurité: il faut impérativement utiliser $Action pour l'appeler). L'action ESGenFormAct reçoit plusieurs paramètres facultatifs :
|
#!/bin/sh export CLASSPATH=/usr/local/expershop/WEB-INF/lib/expershop.jar:/usr/local/expershop/WEB-INF/lib/openeas.jar:/usr/local/expershop/WEB-INF/lib/xapool.jar:/usr/local/expershop/WEB-INF/lib/log4j.jar:/usr/local/expershop/WEB-INF/lib/hsqldb.jar /usr/local/enhydra3.1/bin/multiserver ## more complex startup scenario - with additional environment variables ## export CMKEYDIR=/usr/local/CYBERMUT ## /usr/local/enhydra3.1/bin/multiserver -java-arg -Djava.library.path=/usr/local/ExperSHOP/etc/cmut/linux-intel
# Enhydra Multiserver Config File # ================================== # This file contains the configuration options for the # Enhydra Multiserver. Typically it is manipulated # through the Multiserver Admin application, however, # power users may wish to edit it by hand. # # Notes: # * The Multiserver only reads this file on startup. # It is thus necessary to stop and restart the server if # changes are made by hand. # * The order of the parameters in this file is not significant. # * Quotes are not required to delimit strings but are advised. # * Array parameters are specified as a comma separated list. # The parameter name is identified as an array with a "[]" # suffix. # # Server Section ----------------------------------------------------- # ============== # These options configure server-wide attributes. # # Server.ConfDir # -------------- # This is where the application's config files are stored. # Each Enhydra application has a configuration # file that must be placed in this directory in order for the # application to be visible by the Multiserver and the Multiserver # admin application. # # Server.LogFile # -------------- # This is the file where the server log is written. # # Server.LogToFile[] # ------------------ # This is a comma separated list of message types to send to the log # file specified in server.logFile. # # Server.LogToStderr[] # -------------------- # This is a comma separated list of message types to send to standard error. # # Possible logger levels: # ----------------------- # These levels will be familiar to anyone that has used the UNIX # syslog functionality: # # EMERGENCY # Panic condition. # ALERT # A condition that should be corrected immediately, such as # database corruption. # CRITICAL # Critical conditions such as had device errors. # ERROR # General errors that are not usually fatal, but must be # resolved. # WARNING # Warning condition that may need attention, although the # need is not immediate. # NOTICE # Conditions that are not error conditions, but may require # special handling such as infrequent conditions. # INFO # General informational conditions, knowledge of which will # help to keep the server in good order. # DEBUG # Messages that contain information normally of use only when # debugging an application. # CLASSLOAD # Information about the loading of application classes. Very # useful debugging class path problems. # REQUEST # The StandardLoggingFilter logs hits to this facility if # this is specified (normally it writes to it's own file). # XMLC # Information about auto-compiling XMLC pages. # XMLC_DEBUG # Debug information about auto-compiling XMLC pages. # # Server.ConfDir = "/usr/local/enhydra3.1/apps" Server.LogFile = "/usr/local/enhydra3.1/logs/multiserver.log" Server.LogToFile[] = EMERGENCY, ALERT, CRITICAL, ERROR, WARNING, INFO Server.LogToStderr[] = EMERGENCY, ALERT, CRITICAL, ERROR, WARNING, INFO # # The above setting is for verbose output. When running as a daemon # process you may want to print out only emergencies, for example: # Server.LogToStderr[] = EMERGENCY # # Enhydra Application Section ----------------------------------------- # ========================== # Each Enhydra application is added to the Multiserver with the # following syntax. Note that multiple applications can be # defined, the only restriction is that the [APPLICATION_ID] must # be unique. # # Application.[APPLICATION_ID].ConfFile # ------------------------------------- # This is set to "filename.conf", which must exist in the directory # defined by "Server.ConfDir". # # Application.[APPLICATION_ID].Description # ---------------------------------------- # A description of the application. This is visible in the # management console. # # Application.[APPLICATION_ID].Running = yes | no # ----------------------------------------------- # This is basically the same as the start/stop buttons in the admin # app. If the server has running = no, then it will not be instantiated, # until the user of the admin app clicks on the "start" button. # Application.MultiserverAdmin.ConfFile = multiserverAdmin.conf Application.MultiserverAdmin.Description = "Multiserver Management Console." Application.MultiserverAdmin.Running = yes # Servlet Section ---------------------------------------------------- # =============== # The Multiserver is able to run standard servlets in addition to # Enhydra applications. The following syntax is # used to define a servlet. Note that multiple servlets # can be defined, the only restriction is that the [SERVLET_ID] # must be unique. # # Each servlet is defined with: # # Servlet.[SERVLET_ID].ClassName = entryClass # Servlet.[SERVLET_ID].DocRoot = Document root for servlet. # Servlet.[SERVLET_ID].Description = "A description of servlet" # Servlet.[SERVLET_ID].Running = yes | no # # where the ".classname" parameter defines the class with the # service() method and ".description" defines a description used # by the admin tool. The ".docRoot" is the full path to the # directory used as the document root for this servlet and # ".running" indicated whether to automatically start the # servlet when the Multiserver is started. # # Optionally a servlet can be further specified with the following # options: # # Servlet.[SERVLET_ID].InitArgs # ----------------------------- # This is a collection of name-value pairs that are passed to the # servlet and initial arguments. Refer to the servlet documentation # for more information. # For example: # Servlet.[SERVLET_ID].InitArgs.LogFile = /tmp/log # Servlet.[SERVLET_ID].InitArgs.Max = 256 # Servlet.[SERVLET_ID].InitArgs.Names[] = "Joe Bob", "Jane Bee" # # Servlet.[SERVLET_ID].ClassPath[] # -------------------------------- # This is set to a comma-separated list of classpath elements. The # class loader will be extended with these paths so that the # servlet can successfully load any required classes. # # Application.[APPLICATION_ID].Running # ------------------------------------ # This is basically the same as the start/stop buttons in the admin # app. If the server has running = no, then it will not be instantiated, # until the user of the admin app clicks on the "start" button. # # ExperShop main servlet Servlet.ExperSHOP.ClassName = com.expershop.lite.ExperSHOP Servlet.ExperSHOP.DocRoot = /home/httpd/html Servlet.ExperSHOP.Description = "ExperSHOP servlet." Servlet.ExperSHOP.ClassPath[] = /usr/local/expershop/WEB-INF/lib/expershop.jar,/usr/local/expershop/WEB-INF/lib/openeas.jar,/usr/local/expershop/WEB-INF/lib/xapool.jar,/usr/local/expershop/WEB-INF/lib/log4j.jar,/usr/local/expershop/WEB-INF/lib/hsqldb.jar Servlet.ExperSHOP.Running = yes Servlet.ExperSHOP.InitArgs.SHOPCONFIG = /usr/local/ExperSHOP/EShop.cfg # ExperShop admin servlet Servlet.ESAdminServlet.ClassName = com.expershop.lite.ESAdminServlet Servlet.ESAdminServlet.DocRoot = /tmp Servlet.ESAdminServlet.Description = "ESAdminServlet servlet." Servlet.ESAdminServlet.ClassPath[] = /usr/local/expershop/WEB-INF/lib/expershop.jar,/usr/local/expershop/WEB-INF/lib/openeas.jar,/usr/local/expershop/WEB-INF/lib/xapool.jar,/usr/local/expershop/WEB-INF/lib/log4j.jar,/usr/local/expershop/WEB-INF/lib/hsqldb.jar Servlet.ESAdminServlet.Running = yes Servlet.ESAdminServlet.InitArgs.SHOPCONFIG = /usr/local/ExperSHOP/EShop.cfg # Document root for all static HTML content Servlet.HTML.ClassName = org.enhydra.servlet.servlets.FileServerServlet Servlet.HTML.DocRoot = "/home/httpd/html" Servlet.HTML.Running = yes # For CyberMut secure payment return servlet # This is just an example - forget this if not using CyberMut Servlet.CyberMut.ClassName = com.expershop.pay.cmut.ESCgi2Servlet Servlet.CyberMut.DocRoot = /home/httpd/html Servlet.CyberMut.Description = "CyberMut return servlet." Servlet.CyberMut.ClassPath[] = /usr/local/expershop/WEB-INF/lib/expershop.jar,/usr/local/expershop/WEB-INF/lib/openeas.jar,/usr/local/expershop/WEB-INF/lib/xapool.jar,/usr/local/expershop/WEB-INF/lib/log4j.jar,/usr/local/expershop/WEB-INF/lib/hsqldb.jar Servlet.CyberMut.Running = yes Servlet.CyberMut.InitArgs.SHOPCONFIG = /usr/local/ExperSHOP/EShop.cfg # Connection Methods Section ----------------------------------------- # ========================== # This section defines all the possible ways that the Multiserver will # accept requests. Any number of connection methods are allowable # so long as the [CONNECTION_ID] is unique. The [CONNECTION_ID] # is used when associated with an application/servlet by defining # a channel. # # Connection.[CONNECTION_ID].Type # ------------------------------- # The connection type is set to any supported connection method. # Possible types are: # # "http" # This instructs the Multiserver to directly listen for http requests on the # specified port. The port is specified with: # Connection.[CONNECTION_ID].Port = [port] # The number of handler threads my be specified with: # Connection.[CONNECTION_ID].NumThreads = [num] (optional) # The number of socket requests to queue (after accept, before processing) # may be specified with: # Connection.[CONNECTION_ID].QueueSize = [num] (optional) # The idle timeout period for a client connection, in seconds. This is the # amount of time to block without activity. # Connection.[CONNECTION_ID].ClientTimeout = [num] (optional) # The idle timeout period for a handler thread, in seconds. Shorter timeouts # minimize the number of threads (memory) while slowing response time for # bursts of activity. # Connection.[CONNECTION_ID].ThreadTimeout = [num] (optional) # # "https" # This instructs the Multiserver to directly listen for secure-http requests # on the specified port. The port is specified with: # Connection.[CONNECTION_ID].Port = [port] # The number of handler threads my be specified with: # Connection.[CONNECTION_ID].NumThreads = [num] (optional) # The number of socket requests to queue (after accept, before processing) # may be specified with: # Connection.[CONNECTION_ID].QueueSize = [num] (optional) # Connection.HttpConn8001.Type = http Connection.HttpConn8001.Port = 8001 Connection.HttpConn8002.Type = http Connection.HttpConn8002.Port = 8002 # Channel Section ---------------------------------------------------- # =============== # This section defines how applications/servlets are connected with # connection methods. Each channel entry represents an entry point # to an application than can be individually controlled. Note that # like other IDs, each [CHANNEL_ID] must by unique. # # Each channel is defined with: # # Channel.[CONNECTION_ID].[CHANNEL_ID].Servlet = [APPLICATION_ID] # or # Channel.[CONNECTION_ID].[CHANNEL_ID].Servlet = [SERVLET_ID] # # and # Channel.[CONNECTION_ID].[CHANNEL_ID].Url = [url prefix] # and # Channel.[CONNECTION_ID].[CHANNEL_ID].Filters = [FILTER_ID],[FILTER_ID] # and # Channel.[CONNECTION_ID].[CHANNEL_ID].Enabled = yes | no # # # where the ".Servlet" parameter defines the application/servlet # to connect to and the [CONNECTION_ID].[CHANNEL_ID] path defines # the connection method to connect to. # The Url should generally begin and end with a '/'. # The ".Filters" is optional and defines a # list of [FILTER_ID] that a channel is subject to. Filters are # executed in the order that they are defined. The most common use # of a filter is for logging purposes. In general, filters are an # advanced topic that is discussed in the developers guide. Channel.HttpConn8001.AdminChannel.Servlet = MultiserverAdmin Channel.HttpConn8001.AdminChannel.Url = / Channel.HttpConn8001.AdminChannel.Enabled = yes Channel.HttpConn8002.ExperSHOPChannel.Servlet = ExperSHOP Channel.HttpConn8002.ExperSHOPChannel.Url = /servlet/com.expershop.lite.ExperSHOP Channel.HttpConn8002.ExperSHOPChannel.Filters[] = StandardLogger Channel.HttpConn8002.ExperSHOPChannel.Enabled = yes Channel.HttpConn8002.ESAdminServletChannel.Servlet = ESAdminServlet Channel.HttpConn8002.ESAdminServletChannel.Url = /servlet/com.expershop.lite.ESAdminServlet Channel.HttpConn8002.ESAdminServletChannel.Filters[] = StandardLogger Channel.HttpConn8002.ESAdminServletChannel.Enabled = yes Channel.HttpConn8002.HTML.Enabled = yes Channel.HttpConn8002.HTML.Servlet = HTML Channel.HttpConn8002.HTML.Url = / # For CyberMut secure payment return servlet # This is just an example - forget this if not using CyberMut Channel.HttpConn8002.CyberMutChannel.Servlet = CyberMut Channel.HttpConn8002.CyberMutChannel.Url = /servlet/com.expershop.pay.cmut.ESCgi2Servlet Channel.HttpConn8002.CyberMutChannel.Filters[] = StandardLogger Channel.HttpConn8002.CyberMutChannel.Enabled = yes # Filter Section ----------------------------------------------------- # ============== # This section is allows filters to be defined and subsequently used # on a channel declaration. Note that each [FILTER_ID] must be unique. # # WARNING: It is the responsability of the administrator to ensure that # the CLASPATH is set up prior to running the Multiserver such that the filter # (and any classes it needs) will be found. The location of the filter # class on disk is not specified. # # Each filter is defined with: # # Filter.[FILTER_ID].ClassName = entryClass # Filter.[FILTER_ID].Description = "A description of filter" # # where the ".classname" parameter defines the class with the # service() method and ".description" defines a description used # by the admin tool. # # Optionally a filter can be further specified with the following option: # # Filter.[FILTER_ID].InitArgs # ----------------------- # This is a collection of name-value pairs that are passed to the # servlet and initial arguments. Refer to the developers guide # for more information. # For example: # Filter.[FILTER_ID].InitArgs.configFile = /tmp/filter_config # Filter.[FILTER_ID].InitArgs.myParam = myValue # # # This filter is used to log the requests as they are made to the server # (aka "hits"). If the key REQUEST is present in Server.LogToFile or # Server.LogToStderr (above), then a simple summary of the request and # response will be sent to the standard logging facility. This kind of # logging is usefull for quick debugging of an application. If the key # REQUEST is not present, then data is not sent to the standard logging # facility. # If the initial argument "logFile" (optional, below) is set, then this filter # will append data about the requests to the specified file, in a standard # format that tools like Web Analyzer can read. If no logFile is specified, # then data is not written to the file. # This filter is applied to individual channels, so only the channels # that need logging pay the overhead. # Filter.StandardLogger.ClassName = org.enhydra.servlet.filter.StandardLoggingFilter Filter.StandardLogger.Description = "Standard Enhydra Logging." Filter.StandardLogger.InitArgs.logFile = "/usr/local/enhydra3.1/logs/access.log"esdoc/US/Appservers/enhydra5.html 0100664 0000764 0000764 00000003164 10137672046 017102 0 ustar gibello gibello
To add in the WebApp Section:
Unix example:
Application.expershop.Description = "ExperShop WebApp" Application.expershop.DocRoot = "/usr/local/enhydra5.0/webapps/expershop" Application.expershop.Running = yes
Application.expershop.Description = "ExperShop WebApp" Application.expershop.DocRoot = "C:/enhydra5.0/webapps/expershop" Application.expershop.Running = yes
Channel.HttpConn8004.expershopChannel.Enabled = yes Channel.HttpConn8004.expershopChannel.Servlet = expershop Channel.HttpConn8004.expershopChannel.Url = "/expershop"
http://yourhost:8004/expershop
esdoc/US/Appservers/tomcat32.html 0100664 0000764 0000764 00000005404 10137672046 017016 0 ustar gibello gibello
The main tasks involved in a Tomcat configuration are:
<servlet> <servlet-name> com.expershop.lite.ExperSHOP </servlet-name> <servlet-class> com.expershop.lite.ExperSHOP </servlet-class> <init-param> <param-name>SHOPCONFIG</param-name> <param-value>/usr/local/ExperSHOP/EShop.cfg</param-value> </init-param> <load-on-startup> -2147483646 </load-on-startup> </servlet>
<Context path="/expershop" docBase="webapps/expershop" crossContext="false" debug="0" reloadable="true"/>
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app> <servlet> <servlet-name> com.expershop.lite.ExperSHOP </servlet-name> <servlet-class> com.expershop.lite.ExperSHOP </servlet-class> <init-param> <param-name>SHOPCONFIG</param-name> <param-value>/usr/local/ExperSHOP/EShop.cfg</param-value> </init-param> <load-on-startup> -2147483646 </load-on-startup> </servlet> </web-app>esdoc/US/Appservers/tomcat33.html 0100664 0000764 0000764 00000004647 10137672046 017027 0 ustar gibello gibello
c:\\ExperSHOP\\EShopWin.cfgSample web.xml file content:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app> <servlet> <servlet-name> com.expershop.lite.ExperSHOP </servlet-name> <servlet-class> com.expershop.lite.ExperSHOP </servlet-class> <init-param> <param-name>SHOPCONFIG</param-name> <param-value>/usr/local/expershop/EShop.cfg</param-value> </init-param> <load-on-startup> 1 </load-on-startup> </servlet> </web-app>
http://yourhost:8080/servlet/com.expershop.lite.ExperSHOP http://yourhost:8080/servlet/com.expershop.lite.ESAdminServletesdoc/US/Appservers/weblogic51.html 0100664 0000764 0000764 00000003057 10137672046 017325 0 ustar gibello gibello
The main tasks involved in a Weblogic configuration are:
weblogic.httpd.servlet.classpath=C:/weblogic/myserver/servletclasses;C:/expershop/WEB-INF/lib/expershop.jar;C:/expershop/WEB-INF/lib/openeas.jar;C:/expershop/WEB-INF/lib/xapool.jar;C:/expershop/WEB-INF/lib/log4j.jar;C:/expershop/WEB-INF/lib/hsqldb.jarRegister the ExperSHOP servlets, with their init arguments; Example, on Windows:
weblogic.httpd.register.com.expershop.lite.ExperSHOP=com.expershop.lite.ExperSHOP weblogic.httpd.initArgs.com.expershop.lite.ExperSHOP=SHOPCONFIG=c:\\expershop\\EShopWin.cfg weblogic.httpd.register.com.expershop.lite.ESAdminServlet=com.expershop.lite.ESAdminServlet weblogic.httpd.initArgs.com.expershop.lite.ESAdminServlet=SHOPCONFIG=c:\\expershop\\EShopWin.cfg
http://yourhost:7001/com.expershop.lite.ExperSHOP http://yourhost:7001/com.expershop.lite.ESAdminServletesdoc/US/ExperSHOP_and_JAVA_objects.html 0100644 0000764 0000764 00000020074 10137672046 020137 0 ustar gibello gibello
0. Why ?
1. New Keywords
1.1. $NewObject
1.2. $Invoke
2. How does it work ?
3. Extra Possibilities
4. Examples
$NewObject is able to call a constructor to create new Java object, you can pass parameter to the constructor method. This keyword returns a object which is stored for the current template.$NewObject object $classname(param*)$with:
object: is the name of the object locally created, the type of the object is 'classname'
classname: is the name of the class of the object (e.g.: java.lang.String)
param: is a parameter of the class constructor, if there is no parameter for the current constructor, you only have to open and close brackets. In case, there are multiple parameters, you have to separate parameters with pipe '|'. param is composed by:
(type)paramNamewith:
type: is the type of the parameter (e.g. int or java.lang.String, etc...)
paramName: is the name of the parameter or its value
$Invoke invoques a method on a specific Java object. It returns something when it is possible.$Invoke result $object.method(param*)$with:
result: is the result of method call
object: is the name of the object previously created
method: is the name of the method that must be called
param: is a parameter of the method, if there is no parameter for the current method, you only have to open and close brackets. In case, there are multiple parameters, you have to separate parameters with pipe '|'. param is composed by:
(type)paramNamewith:
type: is the type of the parameter (e.g. int or java.lang.String, etc...)
paramName: is the name of the parameter or its value
The $Invoke keyword is able to return :
3. Extra Possibilities
o Created objects are only used in the current template. If you need to use objects through
multiple templates, you have to define a Singleton pattern on your created object to use static
objects. In this case, second time you try to create this object, you work on the object
previously created.
o It is possible to use variables which have been defined previously by a $DefVar keyword.
To use this possibility, you need to use $myVariable$ with the properly type:
$DefVar myVar thisIsATest $NewObject test $String((String)$myVar$)$o When a variable or object is not defined, and you try to use it, the String representation of this String is used to build the object.
4. Examples
The following example creates a String object with a simple String, and calls the length() method.
In this example we can directly display the length without any other operation:
$NewObject test $java.lang.String((java.lang.String)"this is a string")$ $Invoke res $test.length()$ The length is: $res$The following example creates a String object with a short name object. Only for String object, you can use this possibility:
$NewObject test2 $String((String)"this is a string")$ $Invoke res2 $test2.length()$ The length is: $res2$The following example creates a String object with a simple String, without any cast (you can do that only with String object):
$NewObject test3 $String("tototer")$ $Invoke res3 $test3.length()$ The length is: $res3$The following example creates a String object with a previous created object (test2). Java Objects use do not use $$ syntax. $$ syntax is only used for scripting variables:
$NewObject test4 $String(test2)$ $Invoke res4 $test4.length()$ The length is: $res4$The following example creates a String object with a previous create object (test3) with a cast:
$NewObject test5 $String((String)test3)$ $Invoke res5 $test5.length()$ The length is: $res5$The following example creates a TesterCollection object with a single int parameter (3). In this case, we need to cast the value, to be sure to use the properly Java type. This object has 2 methods, a getVector method which returns a Vector object (Collection), and a getArrayList method which returns a ArrayList object (Collection):
$NewObject tester $TesterCollection((int)3)$ $Invoke col $tester.getVector()$ $Invoke col2 $tester.getArrayList()$Now we can loop on results on col and col2 objects:
$LoopOnResults col cc $cc:value$.<br> $EndLoop $LoopOnResults col2 cc2 $cc2:value$.<br> $EndLoopThe following example uses the previous created object (tester object) to get a ResultSet from a database. A rset object is used with $LoopOnResults keyword to loop on datas.
$Invoke rset $tester.getresultSet()$ $LoopOnResults rset rr $rr:id$ - $rr:foo$.<br> $EndLoopThe following example creates a String object with a previous defined variable (and with a cast (mandatory)):
$DefVar myVar thisIsATest $NewObject atest $String((String)$myVar$)$ $Invoke resATest $atest.length()$ The length is: $resATest$
create or replace package types as type cursorType is ref cursor; end; / create or replace procedure outin (p_cursor OUT types.cursorType,deptnum IN VARCHAR2) is begin open p_cursor for select * from EDepartment where deptid=deptnum; end; / create or replace procedure inout (deptnum IN VARCHAR2,p_cursor OUT types.cursorType) is begin open p_cursor for select * from EDepartment where deptid=deptnum; end; / create or replace procedure inoutvarchar (deptnum IN VARCHAR2,p_cursor OUT VARCHAR2) is begin select name into p_cursor from EDepartment where deptid=deptnum; end; / create or replace procedure fourout ( p_cursor OUT types.cursorType, aname OUT VARCHAR2, deptnum OUT VARCHAR2, pall OUT types.cursorType ) is begin select name into aname from EDepartment where deptid='glasses'; select deptid into deptnum from EDepartment where name='Hardware'; open p_cursor for select name, deptid from EDepartment; open pall for select * from EDepartment; end; / create or replace procedure insertfield is begin insert into EDepartment values ('clothes', 'new Fashion', 'none'); end; / create or replace procedure insertfieldparam(adeptid IN VARCHAR2, aname IN VARCHAR2 ) is begin insert into EDepartment values (adeptid, aname, 'none'); end; / create or replace function flist return types.cursortype as l_cursor types.cursorType; begin open l_cursor for select * from EDepartment; return l_cursor; end; /