Dave, I see few more errors:
1) create New user: Email field has limitation and long emails cannot be added as max length is 30., and on saving it with new user less than 30 chars throws System error - check logs for more information. 2) Invite new member: Highlighting new member from the drop down is not populating to username filed, it needs to be entered manually. 3) Weblog members permissions: Error saving member permissions and its happening on few blogs Members:save - Error saving permissions on weblog - director java.lang.NullPointerException at org.apache.roller.weblogger.ui.struts2.editor.Members.save(Members.java:96) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at ognl.OgnlRuntime.invokeMethodInsideSandbox(OgnlRuntime.java:1226) at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:1211) at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1920) at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68) at com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethodWithDebugInfo(XWorkMethodAccessor.java:98) at com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:90) at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1996) at ognl.ASTMethod.getValueBody(ASTMethod.java:91) at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) at ognl.SimpleNode.getValue(SimpleNode.java:258) at ognl.Ognl.getValue(Ognl.java:537) at ognl.Ognl.getValue(Ognl.java:501) at com.opensymphony.xwork2.ognl.OgnlUtil$3.execute(OgnlUtil.java:492) at com.opensymphony.xwork2.ognl.OgnlUtil.compileAndExecuteMethod(OgnlUtil.java:544) at com.opensymphony.xwork2.ognl.OgnlUtil.callMethod(OgnlUtil.java:490) at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:438) at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:293) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254) at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:179) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263) at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:49) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at org.apache.roller.weblogger.ui.struts2.util.UIActionPrepareInterceptor.doIntercept(UIActionPrepareInterceptor.java:54) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at org.apache.roller.weblogger.ui.struts2.util.UISecurityInterceptor.doIntercept(UISecurityInterceptor.java:123) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at org.apache.roller.weblogger.ui.struts2.util.UIActionInterceptor.doIntercept(UIActionInterceptor.java:88) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:142) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:137) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:137) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:201) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:67) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:89) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:160) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:121) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:167) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:196) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:48) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:574) at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79) at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:141) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter.doFilter(RequestMappingFilter.java:133) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.roller.weblogger.ui.core.filters.ValidateSaltFilter.doFilter(ValidateSaltFilter.java:74) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.roller.weblogger.ui.core.filters.LoadSaltFilter.doFilter(LoadSaltFilter.java:44) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.roller.weblogger.ui.core.filters.InitFilter.doFilter(InitFilter.java:73) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.roller.weblogger.ui.core.filters.PersistenceSessionFilter.doFilter(PersistenceSessionFilter.java:58) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.roller.weblogger.ui.core.filters.BootstrapFilter.doFilter(BootstrapFilter.java:67) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:146) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.roller.weblogger.ui.core.filters.CharEncodingFilter.doFilter(CharEncodingFilter.java:85) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:834) Thanks Naren On Sat, Feb 29, 2020 at 3:51 PM Dave <snoopd...@gmail.com> wrote: > I investigated this problem and here's what I found: > https://issues.apache.org/jira/browse/ROL-2160 > > I have also proposed a solution to this problem in the JIRA ticket. I have > tested that solution and it works, but it is really a work-around for what > I believe is a bug in Struts. > > Here's a PR with the fix: https://github.com/apache/roller/pull/55 > > Thanks, > Dave > > > > On Fri, Feb 28, 2020 at 7:08 PM Naren <getna...@gmail.com> wrote: > > > Dave, > > > > Thanks again for fixing it in advance and also I have few > > suggestions that might be useful for folks using Roller. > > > > > > 1) For installing this behind firewall with internet restrictions in DMZ: > > Packaging the required libraries will help, for example when I > installed > > Roller 5.2.4 I had to download tiles-config_3_0.dtd > > and refer it like locally. /WEB-INF/lib/tiles-config_3_0.dtd" > > > > 2) /webapps//WEB-INF/classes/struts.xml which was part of the 5.2.4 > Global > > allowed methods didnt work and I had to add them to > > as allowed-methods for each action. I see it has been fixed in roller > > 6.0 > > > > 3) I saw another issue with database connectivity, it works fine with > both > > Tomcat/MySQL on the same server and with > > multiple Tomcat and MySQL servers sitting on separate servers under > load > > balancer it wont update the content to all servers > > under load balancer, any server that user get in that session under > > load balancer can see updates happening on just server and > > I figured out that eclipse cache and persistence was causing that. To > > overcome that issue > > I had to add eclipselink.cache.shared.default=false and > > eclipselink.persistence-context.flush-mode=commit to > > roller-custom.properties > > 4) I would like to see options that will turn off the notification emails > > Roller trying to send commentators to blog posts. > > Word press has an option in configuration screen to turn it off or > on > > and it would be useful for Roller users. > > In roller roller-custom.properties we should be able to add something > > like this--> users.comments.emailnotify=false > > > > code has the following and there are no options to turn it off: > > // if required, send notification for all comments changed > > if (MailUtil.isMailConfigured()) { > > I18nMessages resources = I18nMessages > > > > .getMessages(getActionWeblog().getLocaleInstance()); > > > MailUtil.sendEmailApprovalNotifications(approvedComments, > > resources); > > } > > > > Hope these are some useful suggestions. > > > > Thanks > > Naren > > > > On Fri, Feb 28, 2020 at 6:18 PM Dave <snoopd...@gmail.com> wrote: > > > > > I can now reproduce the issue locally and hope to have a fix this > > weekend, > > > probably a test build to be followed by a Roller 6.0.1 release. Thanks > > for > > > reporting this issue. > > > > > > Dave > > > > > > > > > On Tue, Feb 25, 2020 at 7:51 PM Naren <getna...@gmail.com> wrote: > > > > > > > Dave, > > > > > > > > Thanks for getting back to me. Please let me know if its going > to > > > be > > > > patch or code base update. > > > > > > > > Thanks again for your help > > > > Naren > > > > > > > > On Tue, Feb 25, 2020 at 6:34 PM Dave <snoopd...@gmail.com> wrote: > > > > > > > > > Hi Naren, > > > > > > > > > > I was able to reproduce your issue on my personal site (which runs > > JDK > > > 11 > > > > > and Tomcat 9), which means that I should be able to fix it. Oddly, > I > > do > > > > not > > > > > see this error when I run Roller locally on the same setup. > > > > > > > > > > Thanks, > > > > > Dave > > > > > > > > > > > > > > > On Mon, Feb 17, 2020 at 6:42 PM Naren <getna...@gmail.com> wrote: > > > > > > > > > > > Dave?, thanks unfortunately, I will not be able to update Tomcat > as > > > > its a > > > > > > big change in my organization. > > > > > > > > > > > > valueKey" is null but this is a value passed from outside to > > Struts' > > > > > > getText function. > > > > > > > > > > > > Please let me know when u test with Tomcat7 next week > > > > > > > > > > > > Thanks again for your help > > > > > > > > > > > > Naren > > > > > > > > > > > > On Mon, Feb 17, 2020 at 6:22 PM Dave <snoopd...@gmail.com> > wrote: > > > > > > > > > > > > > I'm not able to reproduce this error and I may not have time to > > > check > > > > > > that > > > > > > > until this weekend. Can you try a newer version of Tomcat? I'm > > > > pretty > > > > > > sure > > > > > > > I never tested Roller 6 on Tomcat 7. > > > > > > > > > > > > > > Dave > > > > > > > > > > > > > > > > > > > > > On Sun, Feb 16, 2020 at 8:18 PM Naren <getna...@gmail.com> > > wrote: > > > > > > > > > > > > > > > > > > > > > > > I downloaded roller 6.0 and my environment details are as > > > below > > > > > > > > Apache Tomcat/7.0.76 > > > > > > > > MySQL: 5.7.26 > > > > > > > > openjdk version "11.0.6" > > > > > > > > > > > > > > > > > > > > > > > > I see an issue with config form and and the form does not > > > complete > > > > > and > > > > > > > has > > > > > > > > no save or cancel button, > > > > > > > > Could you please let me know on this? > > > > > > > > > > > > > > > > The following has evaluated to null or missing: > > > > > > > > ==> struts.getText(valueKey) [in template > > > > > "template/simple/select.ftl" > > > > > > at > > > > > > > > line 75, column 36] > > > > > > > > > > > > > > > > ---- > > > > > > > > Tip: If the failing expression is known to legally refer to > > > > something > > > > > > > > that's sometimes null or missing, either specify a default > > value > > > > like > > > > > > > > myOptionalVar!myDefault, or use <#if > > > > > > > > myOptionalVar??>when-present<#else>when-missing</#if>. > > > (These > > > > > > only > > > > > > > > cover the last step of the expression; to cover the whole > > > > expression, > > > > > > use > > > > > > > > parenthesis: (myOptionalVar.foo)!myDefault, > > (myOptionalVar.foo)?? > > > > > > > > ---- > > > > > > > > > > > > > > > > ---- > > > > > > > > FTL stack trace ("~" means nesting-related): > > > > > > > > - Failed at: #assign itemValue = struts.getText(va... [in > > > template > > > > > > > > "template/simple/select.ftl" at line 75, column 15] > > > > > > > > - Reached through: @s.iterator value="parameters.list" [in > > > template > > > > > > > > "template/simple/select.ftl" at line 57, column 1] > > > > > > > > - Reached through: #include "/${parameters.templateDir}/... > [in > > > > > > template > > > > > > > > "template/bootstrap/select.ftl" at line 22, column 1] > > > > > > > > > > > > > > > > [image: image.png] > > > > > > > > -- > > > > > > > > Naren > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > Naren > > > > > > > > > > > > > > > -- > > > > Naren > > > > > > > > > > > > > -- > > Naren > > >