Channel Manager Troubleshooting
Contents
This page describes common problems with the Channel Manager and Channel Editor and how to solve them:
-
Channel Editor says "Unable to change to composermode. Please check if the site is online."
-
Preview of channels in the CMS and in a separate window does not work behind Apache Web Server
-
Channels are showing a blank page with message to reload page
-
Stacktraces MissingResourceException when clicking 'Channel Settings' in channel manager
-
Changes in Blueprints through the Console are not visible in the Channel Manager at 'Add Channel'
-
Channel manager shows: HTTP status 404 - /cms/angular/hippo-cms/index.html
Common Problems
Channel Editor says "Unable to change to composermode. Please check if the site is online."
-
Check whether the site works by accessing it directly.
-
Check whether the hst:cmslocation is configured correctly. Something like:
+ hst:hst + hst:hosts + dev-env - hst:cmslocation = http://localhost:8080/cms
and:
+ hst:hst + hst:hosts + acct-env - hst:cmslocation = http://www.acct.example.com/cms
- If the channel manager works locally, but not on the server, check if you see a 404 message in Firebug in the channel manager, for example the following gives a 404:
http://cms.example.org/site/_rp/cafebabe-cafe-babe-cafe-babecafebabe./keepalive/?FORCE_CLIENT_HOST=true&_dc=1374269666016
Then most likely you missed Apache config as shown below under Preview of channels in the CMS and in a separate window does not work behind Apache web server.
Channel does not load and network shows a 409 (conflict)
This can happen in a clustered environment when you did not set up the loadbalancer correctly. See Hippo CMS Loadbalancing Requirements how to set up the loadbalancer correctly.
'Create page' option is not available in Page menu
If in the Channel Manager you have the menu 'Page' open but you do not see the 'Create page' option as shown in the image below, then your project configuration does not have any prototype pages defined. The option will only be available for configurations that have prototype pages. If you add prototypes, the button will appear.
Channel cannot be previewed in a new window
When the 'Preview' link behind the channel name in the channel overview does not work:
-
If you are accessing the site without portnumber, make sure that from your /hst:hst/hst:hosts/_your_hostgroup_ you remove the property hst:defaultport
-
On /hst:hst/hst:hosts you are missing the property hst:defaultcontextpath. This property must be present and have the value of the contextpath (in case the site is deployed as ROOT.war the value must be empty string), including the starting /. The default value is /site:
+ hst:hst + hst:hosts - hst:defaultcontextpath = /site
"This perspective could not be loaded. This is caused by the CMS not being able to connect to the site, either because the site is down or due to a misconfiguration. Please contact your system administrator."
If you see the above message, you should test whether the server side rest calls over 127.0.0.1 are requested and return within 1 second. You can check this by adding hst:diagnosticsenabled and hst:diagnosticsforips to hst:hosts as follows:
+ hst:hst + hst:hosts - hst:diagnosticsenabled = true - hst:diagnosticsforips = 127.0.0.1
Now, when opening the channels perspective in the CMS, you should see logging something like:
INFO [org.hippoecm.hst.core.container.DiagnosticReportingValve.logDiagnosticSummary():47] Diagnostic Summary: HstDelegateeFilterBean (11ms): {request=Request{ method='GET', scheme='http', host='127.0.0.1:8080', requestURI='/site/_cmsrest/channels/', queryString='null'}}
If you do not see the above request, there must be some configuration problem.
Most likely the hstRestProxyService (at /hippo:configuration/hippo:frontend/cms/cms-services/hstRestProxyService) has an incorrect URI configured.
Note that you cannot refer to localhost in the rest.uri property. Use 127.0.0.1 instead.
(If you want to use IPv6 use http://[::1]/site/_cmsrest instead)
'View document in channel' menu does not work
You cannot view a document in a channel, and whenever you edit a document an error similar to the following is logged:
Caused by: java.net.ConnectException: ConnectException invoking http://127.0.0.1:8080 /site/_cmsrest/documents/c23ac389-ceda-4117-be37-e063c2f9e405/channels/: Connection refused
Most likely you are running the application on a different port than the default 8080. See "This perspective could not be loaded [...]" above.
Preview of channels in the CMS and in a separate window does not work behind Apache Web Server
Make sure that VirtualHost configuration for the cms also contains a extra PROXYPASS for /site/
<VirtualHost *:80> ServerName cms.example.com ProxyPreserveHost Off #INCLUDE THE EXTRA PROXYPASS RULE FOR /site HERE ProxyPass /site/ http://127.0.0.1:8080/site/ ProxyPass / http://127.0.0.1:8080/cms/ ProxyPassReverse / http://127.0.0.1:8080/cms/ ProxyPassReverseCookiePath /cms / </VirtualHost>
Opening a channel shows a blank page
This can happen if your network infrastructure have disabled http HEAD requests, for example in a Citrix virtualization environment. In this case, you have to contact your system administrators in order to verify HEAD request type is not blocked.
This can also happen if you integrated the CMS authoring application with a web application security framework (such as Spring Security) which sets the response header X-Frame-Options to DENY. Hippo CMS requires an X-Frame-Options response header value SAMEORIGIN. Spring Security Framework sets it to DENY by default since version 4.0. If you integrated with Spring Security Framework version 4.0 or later, change the response header value to SAMEORIGIN.
Unable to find package resource nl.png
If you get a warning like this in the log files:
WARN [org.apache.wicket.markup.html.PackageResource.getResourceStream():594] Unable to find package resource [path = org/onehippo/cms7/channelmanager/channels/nl.png, style = null, locale = null]
make sure the hst:locale in the accessed mount is a proper Java locale like nl_NL
Warnings/errors from RestProxyServicesManager
In the logs you might see something like:
11.12.2013 12:20:11 WARN [org.onehippo.cms7.channelmanager.restproxy.RestProxyServicesManager.getLiveRestProxyServices:136] Site for contextPath {} is not live. Re-checking in {} milliseconds.
Note that even on the server the application is running testing the URL http://127.0.0.1:8080/site/_cmsrest/sites/_isAlive via curl or wget does not work because encoded header credentials are required. The request can only be done by the application itself.
If you see the error above, then there can be two different problems:
Possible problem 1
In site/src/main/resources/META-INF/hst-assembly/overrides you do not have the spring configuration required for the channel manager. You need there xml files, typically named hst-cms-rest.xml containing:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <import resource="classpath:/org/hippoecm/hst/site/optional/jaxrs/SpringComponentManager-rest-jackson.xml" /> <import resource="classpath:/org/hippoecm/hst/cmsrest/SpringComponentManager-cmsrest.xml" /> </beans>
and template-composer-rest.xml containing:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <import resource="classpath:/org/hippoecm/hst/site/optional/jaxrs/SpringComponentManager-rest-jackson.xml" /> <import resource="classpath:/org/hippoecm/hst/pagecomposer/SpringComponentManager-pagecomposer.xml" /> </beans>
Possible problem 2
You have configuration errors for the rest proxy service. The default single site.war webapp rest proxy configuration is located at:
http://localhost:8080/cms/console/?1&path=/hippo:configuration/hippo:frontend/cms/cms-services/hstRestProxyService
Make sure the context.path and request.uri are configured correctly. Note that after changing a rest proxy service configuration, you have to logout and then login again into the cms to see the changes
No channels showing up in the channel manager list
This troubleshooting item only applies if you have deployed your site as ROOT.war. In case the site works correctly, but without any warnings/errors being logged the channel manager does not show any channels, make sure that the property hst:defaultcontextpath is present and has empty value like below
+ hst:hst + hst:hosts - hst:defaultcontextpath = (empty string)
Channels are showing a blank page with message to reload page
- Try reloading CMS interface after removing browser cache data
- Check if response header contains header with name X-Frame-Options and value "DENY".
Stacktraces MissingResourceException when clicking 'Channel Settings' in channel manager
When you see stacktraces when clicking 'Channel Settings' like below:
17.12.2013 15:05:55 ERROR [org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage():116] Error occurred during error handling, give up! org.apache.cxf.interceptor.Fault: Can't find bundle for base name org.onehippo.forge.channels.WebsiteInfo, locale en at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:162) at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:128) at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:167) ... ... ... Caused by: java.util.MissingResourceException: Can't find bundle for base name org.example.channels.WebsiteInfo, locale en at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1499) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1322) at java.util.ResourceBundle.getBundle(ResourceBundle.java:795) ... ...
Then you either do not have added i18n resource bundles (in this case WebsiteInfo.properties, WebsiteInfo_de.properties, etc) next to the WebsiteInfo class, or, in case you have, you do not have added to the site/pom.xml <build> section the following part:
<build> ... ... <resources> <resource> <directory>src/main/java</directory> <filtering>false</filtering> <includes> <include>**/*.properties</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
Changes in Blueprints through the Console are not visible in the Channel Manager at 'Add Channel'
This is due to caching of blueprints. To be able to see the changes, made to blueprints in the /console, in the Channel Manager, you need to logout from the CMS and login again.
Blueprint 'reusing existing content' does not work
Even though you have added a hst:site node with hst:content property to the blueprint, still you do not get to see a picker to select the existing content to use for a new channel. When this is the case, it might be that for your blueprint, you still have a bootstrap content node (same name as blueprint node) configured below /hippo:configuration/hippo:queries/hippo:templates/new-subsite/hippostd:templates. That one takes precedence over the hst:site/hst:content property.
Channel Manager shows: HTTP status 404 - /cms/angular/hippo-cms/index.html
When clicking a channel in the channel manager overview, you get to see something like:
The problem above is most likely a result of a site created against version CMS 10 or earlier, and while upgrading, the cms web.xml has not been correctly upgraded. Make sure you follow the following steps:
At cms/src/main/webapp/WEB-INF/web.xml you need to add a new servlet AngularResourceServlet and a new servlet mapping for the rewrite of the channel manager in angular, see Upgrade Channel Manager. Above the servlet CKEditorResourceServlet you need to add:
<servlet> <servlet-name>AngularResourceServlet</servlet-name> <servlet-class>org.onehippo.cms7.utilities.servlet.ResourceServlet</servlet-class> <init-param> <param-name>jarPathPrefix</param-name> <param-value>/angular</param-value> </init-param> <init-param> <param-name>allowedResourcePaths</param-name> <param-value> ^/.*\..* </param-value> </init-param> </servlet>
and above the servlet mapping for CKEditorResourceServlet you need to add:
<servlet-mapping> <servlet-name>AngularResourceServlet</servlet-name> <url-pattern>/angular/*</url-pattern> </servlet-mapping>
No borders visible for containers and components
The Channel Manager relies on HTML comments in the markup to be able to render containers and components. For instance, taken from our demo environment, the HST inserts comments like this in the page:
<!-- { "HST-Label":"bannercarousel", "HST-LastModified":"1490608164816", "HST-XType":"HST.Item", "uuid":"8d3699eb-fb88-41c9-8d10-590c2b7f9335", "HST-Type":"CONTAINER_ITEM_COMPONENT", "refNS":"r33_r1_r1_r1", "url":"/site/_cmsinternal/uk?_hn:type=component-rendering&_hn:ref=r33_r1_r1_r1"} -->
with a matching end comment:
<!-- { "uuid":"8d3699eb-fb88-41c9-8d10-590c2b7f9335", "HST-End":"true"} -->
If (blue) borders are not showing for containers and components in the Channel Manager, this can be caused by an optimization in your webapp container or web server. For instance, in Tomcat there could be a filter installed that strips out HTML comments. Web servers like Apache httpd or Nginx also have optimization capabilities.
To resolve this, configure your set-up to not strip HTML comments during CMS requests.