Jetty Troubleshooting

Server does not start

Review the server.log, and any existing rhythmyxjettyservice-stderr.{TIMESTAMP}.log in the {RHYTHMYX_HOME}\jetty\base\logs directory.

If on CentOS7 or RHEL7, please review: How to: Changing RHEL7 and Centos7 network hostname

Port conflict

If you see the following:

Example port already in use
Exception in thread "main" MultiException[java.net.BindException: Address already in use: bind, java.net.BindException: Address already in use: bind]
at org.eclipse.jetty.server.Server.doStart(Server.java:347)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1510)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1435)
Suppressed: java.net.BindException: Address already in use: bind
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Unknown Source)
at sun.nio.ch.Net.bind(Unknown Source)
at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source)
at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:326)
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:244)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.server.Server.doStart(Server.java:384)
... 4 more
Caused by: java.net.BindException: Address already in use: bind
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Unknown Source)
at sun.nio.ch.Net.bind(Unknown Source)
at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source)
at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:326)
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:244)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.server.Server.doStart(Server.java:384)
... 4 more

then another application is consuming the ports that Rhythmyx needs to use.

First review the "How to detect if Rhythmyx is running" section below to ensure that another instance of Rhythmyx is using up those ports.

Next review that the port numbers in {RHYTHMX_HOME}\jetty\base\etc\installation.properties are the expected port numbers for Jetty run under.

Finally you can change the port numbers by either manually or the recommended route of using the RhythmyxServerPropertiesEditor executable and changing the Bind Port (and SSL Port if configured).

server properties port conflict

Database cannot connect

If you see the following:

Database configuration configuration exception
2016-12-09 13:31:00,344 WARN [org.eclipse.jetty.xml.XmlConfiguration] Config error at <Set name="password">

<Call class="com.percussion.utils.container.jetty.PSJettyUtils" name="decrypt"><Arg>
<Property name="perc.ds.1.pwd"/>
</Arg><Arg>
<Property name="perc.ds.1.pwd.encrypted"/>
</Arg></Call>

</Set>
2016-12-09 13:31:00,346 WARN [org.eclipse.jetty.xml.XmlConfiguration] Config error at <New class="org.eclipse.jetty.plus.jndi.Resource" id="perc.ds.1"><Arg/><Arg>java:jdbc/RhythmyxData</Arg><Arg>

<New class="com.zaxxer.hikari.HikariDataSource"><Arg>

<New class="com.zaxxer.hikari.HikariConfig"><Set name="poolName">Hikari <Property name="perc.ds.1.name"/> Pool</Set><Set name="connectionTimeout">120000</Set><Set name="minimumIdle">
<Property default="50" name="perc.ds.1.connections.min"/>
</Set><Set name="maximumPoolSize">
<Property default="50" name="perc.ds.1.connections.max"/>
</Set><Set name="idleTimeout">
<Property default="600000" name="perc.ds.1.idle.ms"/>
</Set><Set name="transactionIsolation">TRANSACTION_READ_COMMITTED</Set><Set name="ConnectionTestQuery">

<Call class="com.percussion.utils.container.jetty.PSJettyUtils" name="connectionTestQuery"><Arg>
<Property name="perc.ds.1.driver.name"/>
</Arg><Arg>
<Property name="perc.ds.1.connectiontest"/>
</Arg></Call>

</Set><Set name="driverClassName">
<Property name="perc.ds.1.driver.class"/>
</Set><Set name="jdbcUrl">jdbc:<Property name="perc.ds.1.driver.name"/>:<Property name="perc.ds.1.server"/>
</Set><Set name="username">
<Property name="perc.ds.1.uid"/>
</Set><Set name="password">

<Call class="com.percussion.utils.container.jetty.PSJettyUtils" name="decrypt"><Arg>
<Property name="perc.ds.1.pwd"/>
</Arg><Arg>
<Property name="perc.ds.1.pwd.encrypted"/>
</Arg></Call>

</Set></New>

</Arg></New>

</Arg></New>

Then you will need to review the properties set in perc-ds.properties, these make up the datasource and connection configurations for each database connection.  Each connection is assigned its own number, starting from 1 and incrementing from there on. For example, the second connection would be prefixed with perc.ds.2 or perc.conn.2.

Another way to verify settings are correct is to reenter the password to the database connection.  Inside perc-ds.properties, change perc.ds.x.pwd.encrypted to 'N' and change perc.ds.x.pwd to the database password in plain text; upon server startup, the server will re-encrypt the password in that file.

For more information, please read Configuring Repository and External Datasources

SSL Configuration

You may find certain older browsers are unsupported with the default SSL configuration, in order to support these browsers you may enable older ciphers and protocols.

Please view the Configuring Jetty SSL Ciphers document for more information on configuration changes and risks introduced by adding older ciphers and protocols.

 

How to detect if Rhythmyx is running

Windows:

If Jetty is installed as a service, you can verify that Rhythmyx is running through Window's Services:

windows jetty service

 

Otherwise you can use Task Manager, find Java running and open File location:

windows task manager

If the file location takes you to {RHYTHMYX_INSTALL}/JRE/bin or {RHYTHMYX_INSTALL}/JRE64/bin , then Rhythmyx is confirmed to be running.

Linux:

If Jetty is installed as a service, you can detect whether it is running or not by doing either `service rxjetty status` or `/etc/init.d/rxjetty status`:

example linux jetty service

 

Otherwise you can use the ps -ef  | grep jetty to determine if there are any processes using jetty.  For example the below screenshot labels jetty running with its class path.

example linux jetty service

Did not patch to latest version before upgrade

If you did not patch to the latest version before upgrading to 7.3.2, you will need to make a few changes to your web.xml in {RHYTHMYX_HOME}\jetty\base\webapps\Rhythmyx\WEB-INF.

jnlp additions

Ensure the jnlp mappings are in web.xml

    <servlet>
<servlet-name>jnlp</servlet-name>
<servlet-class>com.percussion.servlets.JnlpServlet</servlet-class>
</servlet>

and

     <servlet-mapping>
<servlet-name>jnlp</servlet-name>
<url-pattern>/contentexplorer.jnlp</url-pattern>
</servlet-mapping>

IE Filter addition

Ensuring the IE filters are in web.xml

  <filter-mapping>
<filter-name>PSIECompatibleFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>


and

<filter> 
<filter-name>PSIECompatibleFilter</filter-name> 
<filter-class>com.percussion.servlets.PSIECompatibleFilter</filter-class> 
</filter>