LATEST VERSION: 3.2 - CHANGELOG
Pivotal tc Server v3.2

Troubleshooting

The following sections describe common problems and resolutions.

tc Runtime - Error When Running a Web Application on tc Runtime and Using Spring Tool Suite

When you use Spring Tool Suite (STS) with tc Server, and you try to run a Web application on the configured tc Runtime, you might get the following error:

Nov 29, 2009 7:47:29 PM com.springsource.tcserver.security.PropertyDecoder <init<
INFO: tcServer property decoder has been initialized.
Nov 29, 2009 7:47:30 PM com.springsource.tcserver.serviceability.rmi.JmxSocketListener init
INFO: Started up JMX registry on 127.0.0.1:6969
Nov 29, 2009 7:47:30 PM org.apache.coyote.http11.Http11Protocol init
SEVERE: Error initializing endpoint
java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java :365)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.<init<(ServerSocket.java:185 )
at java.net.ServerSocket.<init<(ServerSocket.java:141 )
... and so on

STS might not have write permission to the main tc Server installation path, and the tc Runtime has to create files when it starts. Modify the path of tc Runtime in STS to use the workspace metadata.

tc Runtime - JVM Performing a Full GC

By default, tc Runtime instances have JMX turned on so that you can use VMware vFabric Hyperic to monitor and manage the instances. Specifically, tc Runtime instances enable JMX using the JmxSocketListener in the server.xml configuration file, as shown:

<Listener className="com.springsource.tcserver.serviceability.rmi.JmxSocketListener" 
          port="${jmx.port}"
          ...
/>

When JMX is enabled in this way, some JVMs (such as Sun’s) that do distributed garbage collection will periodically invoke System.gc, causing a Full GC. This action can affect the performance of your deployed Web applications.

There are two ways to work around this issue:

Specify that the JVM invoke the System.gc() less often. For example, to configure the Sun JVM to invoke System.gc() at one-hour intervals, use the following JVM options:

-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000

Alternatively, disable explicit GC altogether. For example, to disable GC for the Sun JVM:

-XX:+DisableExplicitGC

In both cases, set these JVM options in the INSTANCE-DIR/bin/setenv.sh|bat file using the JVM_OPTS variable appropriate to your platform.