FAQ / How TOs


General questions

Can ExperShop support big product databases and/or high traffic ?

Yes it can: provided your platform can stand it (web server, database).
In the USA, worldtraveler.com receives thousands of hits per day ;
In France, laboiteaoutils.fr sells about 30,000 products online.

Is there a Windows installer for ExperSHOP ?

No.

Apache/Jserv

Restarting Apache : how and when ?

We recommend that you do not "restart" apache, but rather stop it then start it after a while -
JServ sometimes needs time to exit (on Unix & recent apache versions, use "apachectl stop" then "apachectl start", rather than "apachectl restart").

Apache has to be restarted:

  • Everytime you modify an Expershop configuration file (for example, to configure taxes or shipping costs, or to add a new shop)
  • When you install a new Expershop version

I changed my configuration file, but changes seem to have no effect

Did you restart Apache ?

If so, check the Apache error log file (Unix : generally in /usr/local/apache/logs/error_log); if the following message appears:

  ApacheJServ/1.1 : Exception creating the server socket: java.net.BindException: Address already in use
  
JServ was not properly shut down upon the last restart, an old instance still runs...
Stop your apache server, wait for a while (2 minutes should be sufficient, or try to monitor the JServ server port - default 8007 : for example, on Unix, "netstat -a | grep 8007" tells you if the socket is in use, wait as long as that command returns something), then start your apache server.

If the socket is never freed, you will have to reboot your host.

Some of my pages are not completely displayed, and my user session is lost

This sometimes happens when you try to display large amounts of data, and is due to a JServ timeout : JServ believes the JVM is no more responding, and restarts it!
You can check your jserv.log file : if that's the reason, you will find some messages there concerning JVM timeouts...

Edit your jserv.conf file, and insert the following line at the end of it:
ApJServVMTimeout [number-of-seconds]
For example, 30 seconds :

  ApJServVMTimeout 30
  

How can I improve performances ?

You can install a JIT compiler : we tried the Borland JIT on Linux, and our server got twice faster!

How TOs

Multiple language support / Localization

(Not yet documented).

Customizing the customer order

What about orders and their states ?

Orders are stored in the database, in the ECustOrder (order header information, including order ID, customer information, order state) and the EProdOrder (order line, one per product ordered) tables.

ECustOrder keeps an internal state, in 2 columns : Status and PayStatus.
Status is the order state (values : NEW, CANCELED, PROCESSED, TIMEOUT, PREORDER), and PayStatus is the payment status (values : PAID, WAITING, UNKNOWN).

When is the order placed ?

ExperShop inserts a new order in the database when the com.expershop.actions.ESOrderAct action is invoked, or upon a successful secure payment.

Some secure payment interfaces require ExperShop to "pre-order" the cart content : if so, a "temporary" order is created in the database (in a "PREORDER" state). Then:

  • if the payments succeeds, the pre-order will be confirmed and the order state will be set to "NEW" (with PayStatus set to "PAID").
  • if the payments fails, the pre-order will be destroyed.
  • if the payment status is unspecified when the user session ends (inactivity timeout), the pre-order will be either destroyed (default) or kept in the "TIMEOUT" state (if "shop.KeepPreOrders" is set to "true" in the shop configuration file)