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).
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:
Otherwise you can use Task Manager, find Java running and open File location:
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`:
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.
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> |
and
<servlet-mapping> |
IE Filter addition
Ensuring the IE filters are in web.xml
<filter-mapping> |
and
<filter> <filter-name>PSIECompatibleFilter</filter-name> <filter-class>com.percussion.servlets.PSIECompatibleFilter</filter-class> </filter> |