Environment
Change Guardian 5.2
Change Guardian 6.0
Change Guardian 6.1
Change Guardian 6.0
Change Guardian 6.1
Situation
In some CG appliance environments, a RPC Communication error shows, opening CAF console, when selecting:
- Digital Certificates
- System Services
- Product or Online Upgrade
****output******
com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException: Type 'com.google.gwt.user.client.rpc.XsrfToken' was not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom field serializer. For security purposes, this type will not be deserialized.
- Digital Certificates
- System Services
- Product or Online Upgrade
com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException: Type 'com.google.gwt.user.client.rpc.XsrfToken' was not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom field serializer. For security purposes, this type will not be deserialized.
Resolution
One step before following below instructions, you need to take a backup of root.war file. And only then follow the steps as mentioned.
1. Goto this folder:
cd /opt/novell/common-service/webapps
2. Extract root.war file:
jar xvf root.war
3. Edit the BaseTemplate.jsp file:
vi WEB-INF/jsp/BaseTemplate.jsp
Add the following lines
<meta name="gwtCsrfName" content="${_csrf.parameterName}" />
<meta name="gwtCsrfToken" content="${_csrf.token}" />
After adding the GwtModule section should be like this:
<%-- GWT module, included when a gwtPresenter is provided in the tiles config file.
This will cause a client-side Presenter class (annotated with @NameToken("GWT_PRESENTER_NAME") to be called. --%>
<tiles:useAttribute id="gwtPresenter" name="gwtPresenter" />
<c:if test="${!empty gwtPresenter}"><!-- GWT Module -->
<meta name="gwt:property" content="locale=en" /> <%-- TODO: Determine this at runtime --%>
<meta name="gwtPresenter" content="${gwtPresenter}" />
<meta name="gwtCsrfName" content="${_csrf.parameterName}" />
<meta name="gwtCsrfToken" content="${_csrf.token}" />
<script type="text/javascript" language="javascript" src="${ctxPath}/resources/gwt/GwtModule/GwtModule.nocache.js"></script>
<!-- / GWT Module -->
</c:if>
4. Recreate root.war file:
jar cvf root.war META-INF WEB-INF resources
5. Restart following services:
systemctl restart vabase-datamodel
systemctl restart vabase-jetty.service
systemctl restart vabase.service
6. Check all the service status:
systemctl status vabase-datamodel.service vabase-jetty.service vabase.service
7. Clear the browser cache and cookies, and login.
1. Goto this folder:
cd /opt/novell/common-service/webapps
2. Extract root.war file:
jar xvf root.war
3. Edit the BaseTemplate.jsp file:
vi WEB-INF/jsp/BaseTemplate.jsp
Add the following lines
<meta name="gwtCsrfName" content="${_csrf.parameterName}" />
<meta name="gwtCsrfToken" content="${_csrf.token}" />
After adding the GwtModule section should be like this:
<%-- GWT module, included when a gwtPresenter is provided in the tiles config file.
This will cause a client-side Presenter class (annotated with @NameToken("GWT_PRESENTER_NAME") to be called. --%>
<tiles:useAttribute id="gwtPresenter" name="gwtPresenter" />
<c:if test="${!empty gwtPresenter}"><!-- GWT Module -->
<meta name="gwt:property" content="locale=en" /> <%-- TODO: Determine this at runtime --%>
<meta name="gwtPresenter" content="${gwtPresenter}" />
<meta name="gwtCsrfName" content="${_csrf.parameterName}" />
<meta name="gwtCsrfToken" content="${_csrf.token}" />
<script type="text/javascript" language="javascript" src="${ctxPath}/resources/gwt/GwtModule/GwtModule.nocache.js"></script>
<!-- / GWT Module -->
</c:if>
4. Recreate root.war file:
jar cvf root.war META-INF WEB-INF resources
5. Restart following services:
systemctl restart vabase-datamodel
systemctl restart vabase-jetty.service
systemctl restart vabase.service
6. Check all the service status:
systemctl status vabase-datamodel.service vabase-jetty.service vabase.service
7. Clear the browser cache and cookies, and login.
Cause
Incomplete upgrade caused some lines to be missing in this file:
BaseTemplate.jsp file.
The CSRF token management was not present in webserver\9443.
We have included these changes in CG, and 6.2.0.0 ongoing release.
Status
Reported to EngineeringAdditional Information
The jetty.stderrout.out shows an error, example:
WARN:oejshC.root:qtp104739310-52: spring: An IncompatibleRemoteServiceException was thrown while processing this call.
com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException: Type 'com.google.gwt.user.client.rpc.XsrfToken' was not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom field serializer. For security purposes, this type will not be deserialized.
at com.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:323)
WARN:oejshC.root:qtp104739310-52: spring: An IncompatibleRemoteServiceException was thrown while processing this call.
com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException: Type 'com.google.gwt.user.client.rpc.XsrfToken' was not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom field serializer. For security purposes, this type will not be deserialized.
at com.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:323)