This section outlines some of the common problems that our customers have run into while attempting to deploy Elastic Path. If you have run into a particular problem that is not outlined here, please submit a support case to the Support Portal.
Errors executing database queries
The applications start up, but the Commerce Manager presents a notice screen stating "Request could not be fulfilled" or the Storefront displays error "Please contact the store administrator".
Different application servers sometimes require different JNDI resource reference strings. Ensure that you are using the correct build for the application server that you are using because the scripts that create the build will ensure that the string is formatted correctly for that application server.
"SEVERE: Unable to process Jar entry" error in Tomcat 7
When you start Tomcat 7, you see the following error message in the console and logs:
SEVERE: Unable to process Jar entry [com/ibm/icu/impl/data/LocaleElements_zh_PINYIN.class] from Jar [jar:file:/c:/apache-tomcat-7.0.30/webapps/cmserver/WEB-INF/lib/icu4j-2.6.1.jar!/] for annotations org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 60
This is a known issue with the icu4j-2.6.1.jar that can be ignored. This jar is brought in by a dependency in the xom-1.0.jar, which itself is a dependency of the ESAPI-2.0.jar.
Broken pipe connection after database connection idle timeout
When the storefront has been idle for a long time (overnight), the next customer to access the storefront sees the following exception message:
2008-11-24 10:07:36,057 [http-8080-Processor3] ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/ks].[jsp] - Servlet.service() for servlet jsp threw exception java.net.SocketException: Broken pipe at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) at java.net.SocketOutputStream.write(SocketOutputStream.java:136) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3119) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1818)
Add the following attributes to the context configuration for each web application:
validationQuery="Select 1" testOnBorrow="true" testOnReturn="true" testWhileIdle="true" timeBetweenEvictionRunsMillis="300000"
The result should look similar to the following:
<Context> <Resource auth="Container" name="mail/Session" type="javax.mail.Session"/commerce-legacy/> <Resource name="jdbc/epjndi" auth="Container" scope="Shareable" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" removeAbandoned="true" username="YOUR_DB_USERNAME" password="YOUR_DB_PASSWORD" driverClassName="YOUR_DB_DRIVER" url="YOUR_DB_CONNECTION_URL" validationQuery="Select 1" testOnBorrow="true" testOnReturn="true" testWhileIdle="true" timeBetweenEvictionRunsMillis="300000" /> </Context>
The application tests the database connection before attempting to use it, which will prevent the exception from occurring.
JVM stops responding and displays an error message
A fatal error has been detected by the Java Runtime Environment: java.lang.OutOfMemoryError: requested 8589934608 bytes for Chunk::new. Out of swap space? Internal Error (allocation.cpp:215), pid=23008, tid=1099946304 Error: Chunk::new
This is a know Java bug. You can fix this issue by adding the following parameter to the JVM: