Since CloverETL Server is considered a universal JEE application running on various application servers, databases and jvm implementations, problems may occur during the installation. These can be solved with a proper configuration of the server environment. This section contains tips for the configuration.
If your server suddenly starts consuming too much resources (CPU, memory) despite having been working well before, it might be because of running the internal Derby DB. Typically, causes are incorrect/incomplete shutdown of Apache Tomcat and parallel (re)start of Apache Tomcat.
Solution: move to a standard (standalone) database.
How to fix this? Redeploy CloverETL Server:
Stop Apache Tomcat and verify there are no other instances running. If so, kill them.
Backup the config file, if you configured any.
Delete the webapps/clover
directory.
Start Apache Tomcat server. It will automatically redeploy CloverETL Server.
Verify you can connect from Designer and from web.
Shutdown Apache Tomcat.
Restore the config file and point it to your regular database.
Start Apache Tomcat.
If you are getting this error message during an attempt to start your application server (mostly Tomcat), perform the following actions.
Linux:
This command will help you set a path to the variable on the server.
[root@server /] export JAVA_HOME=/usr/local/jdk1.x.x
As a final step, restart the application server.
Windows OS:
Set JAVA_HOME
to your JDK installation directory, e.g.
C:\Program Files\java\jdk1.8.0
.
Important | |
---|---|
Some CloverETL functions requires JDK to work correctly, therefore we do not recommend having only JRE installed. |
Tomcat may sometimes ignore some context parameters. It may cause weird CloverETL Server behavior, since it appears as configured, but only partially. Some parameters are accepted, some are ignored. This issue is rare, however it may occur in some environments. Such behavior is consistent, so restart has no effect. It's possibly related to Tomcat issues: https://issues.apache.org/bugzilla/show_bug.cgi?id=47516 and https://issues.apache.org/bugzilla/show_bug.cgi?id=50700 To avoid this, please use a properties file instead of context parameters to configure CloverETL Server.
Tomcat start batch files for Windows aren't configured to create catalina.out file which contains standard output of the application.
The catalina.out
file may be vital when Tomcat isn't started in the console and an issue occurs.
Or even when Tomcat is executed in the console, it may be closed automatically just after the error message appears in it.
Please follow these steps to enable catalina.out creation:
Modify [Tomcat_home]/bin/catalina.bat. Add parameter "/B" to the lines where the "_EXECJAVA" variable is set. There should be two such lines:
set _EXECJAVA=start /B [the rest of the line]
Parameter /B causes, that "start" command doesn't open new console window, but runs the command it's own console window.
Create a new startup file, e.g. [Tomcat_home]/bin/startupLog.bat, containing a single line:
catalina.bat start > ..\logs\catalina.out 2<&1
It executes Tomcat in the usual way, but standard output isn't put to the console, but to the catalina.out file.
Then use the new startup file instead of [Tomcat_home]/bin/startup.bat
.
If you get the Jetty application server successfully running
but cannot start CloverETL Server, it might be because of the wrapper
waiting for JVM too long
(it is considered a low-memory issue). Examine
[Jetty_home]\logs\jetty-service.log
for a following line:
Startup failed: Timed out waiting for signal from JVM.
If it is there, edit
[Jetty_home]\bin\jetty-service.conf
and add these lines:
wrapper.startup.timeout=60 wrapper.shutdown.timeout=60
If that does not help either, try setting 120 for both values. Default timeouts are 30.
If you are deploying clover.war
on the IBM
WebSphere server without context path specified, be sure to check whether
it is the only application running in the context root.
If you cannot start CloverETL Server on WebSphere, check the log
and look for a following message:
com.ibm.ws.webcontainer.exception.WebAppNotLoadedException: Failed to load webapp: Failed to load webapp: Context root /* is already bound. Cannot start application CloverETL
If you can see it, then this is the case. The easiest way to fix the issue is to stop all other (sample) applications
and leave only clover.war
running on the server.
That should guarantee the server will be available in
the context root from now on (e.g.
http://localhost:9080/).
Figure 3.13. CloverETL Server as the only running application on IBM WebSphere
When using the internal (default) database on Linux,
your CloverETL Server might fail on the first start
for no obvious reasons.
Chances are that the
/var/lib/tomcat6/databases
directory was not created (because of access rights in parent folders).
Solution: Create the directory yourself and try restarting the server. This
simple fix was successfully tested with CloverETL Server deployed as a WAR
file
via the Tomcat web administration tool.
If the server cannot start and the following message is in the log:
java.sql.SQLException: Failed to start database 'databases/cloverserver'
then see the next exception for details. After that, check
settings of the derby.system.home
system property.
It may point to an unaccessible directory, or files may be locked by another process.
We suggest you set a specific directory as the system property.
If you are setting environment variables like clover_license_file
or clover_config_file
,
remember you should not be running more than one
CloverETL Server.
Therefore, if you ever need to run more instances at once, use other ways of setting parameters
(see Part III, “Configuration” for description of all possibilities).
The reason is the environment variables are shared by all applications
in use causing them to share configurations and
fail unexpectedly.
Instead of the environment variables, you can use system properties (passed to the application container process using parameter with -D prefix: -Dclover_config_file).
When working with servers, you ought to stick to folder naming rules more than ever. Do not use any special characters in the server path, e.g. spaces, accents, diacritics are not recommended. It's unfortunately common naming strategy on Windows systems. It can produce issues which are hard to find. If you are experiencing weird errors and cannot trace the source of them, install the application server in a safe destination like:
C:\JBoss6\
Similarly, use slashes but never backslashes in paths inside the
*.properties
files, e.g. when pointing
to the CloverETL Server license file. If you incorrectly use
backlash, it will be considered an escape character and the
server may not work properly.
This is an example of a correct path:
license.file=C:/CoverETL/Server/license.dat
Application server must be executed by OS user with proper read/write permissions on file system. Problem may occur, if app-server is executed by root user for the first time, so log and other temp files are created by root user. When the same app-server is executed by another user, it will fail because it cannot write to root's files.
Missing JMS libraries do not cause fail of the server startup, but it is an issue of deployment on an application server, thus it is still related to this chapter.
clover.war itself does not contain jms.jar, so it has to be on an application server's classpath. Most of the application servers have jms.jar by default, but Tomcat, for example, does not. So if the JMS features are needed, the jms.jar has to be added explicitly.
If "JMS Task" feature is used, there must be third-party libraries on a server's classpath as well. The same approach is recommended for JMS Reader/Writer components, even if these components allow to specify external libraries. It is due to common memory leak in these libraries which causes "OutOfMemoryError: PermGen space".
CloverETL Server requires MySQL 5 up to version 5.5 included. Using an unsupported JDBC connector for MySQL might cause an exception, for example:
could not execute query You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1