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
-
How to enable logging on request/response payloads in RestProxyServicePlugin
-
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 Bloomreach Experience Manager Loadbalancing Requirements how to set up the loadbalancer correctly.
'New' option is not available in Page menu
If in the Channel Manager you have the menu 'Page' open but you do not see the 'New' 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 has 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. Bloomreach Experience Manager 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.
Finally, ensure the hst:cmslocation property value on the production-env virtual host group node specifies the URL of the CMS application (see Configure Virtual Hosts in an Environment).
Wrong or empty channel opens in Channel Manager
In the logs you can find messages back something like
WARN http-nio-8080-exec-3 [VirtualHostsService.warnDuplicateChannel:450] Skip channel with id '${project-channel}' because already present for host group '${project-specific-hostgroup}'. Most likely there is a parent channel that already is a channel mngr channel. Set 'hst:nochannelinfo = true' on mount 'MountService [jcrPath=${project-specific-path}, hostName=${project-specific-host}]' to avoid this problem.
This can be a result of a very specific setup that used to work a tiny bit different in older versions, but works a tiny bit different in versions since CMS 12.0.0. The cause and fix and described at Explicitly hide a Mount in the Channel Manager.
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, 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
How to enable logging on request/response payloads in hstRestProxyService
The rest proxy service mentioned above is responsible for making requests and getting responses (e.g, http://127.0.0.1:8080/site/_cmsrest/sites/_isAlive) in the server-side (between hstRestProxyService and HST CMS REST APIs) for Channel Manager.
You can set the log level to INFO for the folllowing logger to see logs of the request/response payloads:
<!-- Enable RestProxy logging. e.g, http message payloads in the server-side. -->
<Logger name="org.hippoecm.frontend.service.restproxy.logging" level="info"/>
Then it will give helpful logs on every payload in ther server-side, so that you can trace how it works as well. Here are some example logs:
10.10.2017 23:15:47 INFO Thread-26 [AbstractLoggingInterceptor.log:274] Outbound Message --------------------------- ID: 1 Address: http://127.0.0.1:8080/site/_cmsrest/sites/_isAlive Http-Method: GET Content-Type: Headers: {X-CMS-CS-ID=[fc741309-15b1-4bda-8482-98aca1f8500f], X-CMS-SC-ID=[669e1c14-0237-481d-bf00-b0879281b788], X-CMSREST-CMSHOST=[localhost:8080], Accept=[*/*]} -------------------------------------- 10.10.2017 23:15:47 INFO Thread-26 [AbstractLoggingInterceptor.log:274] Inbound Message ---------------------------- ID: 1 Response-Code: 200 Encoding: UTF-8 Content-Type: text/plain;charset=UTF-8 Headers: {Cache-Control=[no-cache], Content-Length=[4], content-type=[text/plain;charset=UTF-8], Date=[Sat, 09 Sep 2017 03:15:47 GMT], Expires=[Thu, 01 Jan 1970 00:00:00 GMT], Pragma=[no-cache]} Payload: true ...
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.
Channel settings not editable
There can be multiple reasons why channel settings are not editable (read-only). It can be that the channel settings have been modified by someone else but not yet published. In this case, the settings are locked. It can also be that the entire hst:configuration node has hst:locked = true, resulting in that everything is locked. Another possibility is that the hst:channel node is located directly below the hst:configuration node and not below the hst:workspace. So if for example your channel is myproject, and the channel node location is
/hst:hst: /hst:configurations: /myproject: /hst:channel: /hst:channelinfo:
then the channel settings in the Channel Manager will be read-only. To make the channel settings editable, move the node below hst:workspace:
/hst:hst: /hst:configurations: /myproject: /hst:workspace: /hst:channel: /hst:channelinfo:
Last reason why the channel settings can be read-only is the hst:channel node is not configured below the hst:configuration for the channel you are looking at, but that it comes from an inherited channel. In that case, the channel settings are read-only as well.