ComplianceOnline

General Principles of Software Validation

  • By: Staff Editor
  • Date: December 04, 2016
  • Source: http://www.fda.gov/
Access Regulatory Compliance Training sessions led by expert panelists below.

Compliance Webinars | Virtual Seminars for Professionals

General Principles of Software Validation

Software validation is a vital tool used to assure the quality of software and software automated operations for medical devices. Software validation can increase the reliability and accuracy of the device, subsequently leading to fewer recalls and corrective actions, less risk to patients, decreased failure rates, and reduced liability to device manufacturers.

The FDA guidance details the general validation principles that are appropriate to the validation of device software or the validation of software used to design, develop, or manufacture medical devices.

Applicability

This rule applies to:

  • Software used as a part, or accessory of a medical device
  • Software that is itself a medical device e.g., blood establishment software
  • Software used in the manufacture of a device e.g., programmable logic controllers in manufacturing equipment
  • Software used in application of the device manufacturer's quality system e.g., software that records and maintains the device history record.

Software Validation Requirements

Software validation is a requirement of the Quality System Regulation (QSR), which became effective on June 1, 1997. The FDA dictates that software used for the design, manufacture, packaging, labeling, storage, installation, and servicing of all devices should be validated. Since then, regardless of the device class, unless specifically exempted all device software products are subjected to applicable design control provisions (21 CFR §820.30.).

Additionally, validation requirements also applies to computes system used to generate, change and maintain electronic records and electronic signatures.

Related Training:

The 6 Most Common Problems in FDA Software Validation & Verification

Software Validation: Avoiding FDA Warning Letters and Consent Decree

Click here to download the file
Method public java.lang.String org.ofbiz.widget.screen.ScreenRenderer.render(java.lang.String) throws org.ofbiz.base.util.GeneralException,java.io.IOException,org.xml.sax.SAXException,javax.xml.parsers.ParserConfigurationException threw an exception when invoked on org.ofbiz.widget.screen.ScreenRenderer@4384e562 with arguments of types [java.lang.String,] The problematic instruction: ---------- ==> ${screens.render("component://ecommerce/widget/CONew2016/BestPracticesPageScreens.xml#trainings-article-detail")} [on line 9, column 17 in component://ecommerce/webapp/ecommerce/CONew2016/bestpractices/article_detail/contentDetailMain.ftl] ---------- Java backtrace for programmers: ---------- freemarker.template.TemplateModelException: Method public java.lang.String org.ofbiz.widget.screen.ScreenRenderer.render(java.lang.String) throws org.ofbiz.base.util.GeneralException,java.io.IOException,org.xml.sax.SAXException,javax.xml.parsers.ParserConfigurationException threw an exception when invoked on org.ofbiz.widget.screen.ScreenRenderer@4384e562 with arguments of types [java.lang.String,] at freemarker.ext.beans.OverloadedMethodModel.exec(OverloadedMethodModel.java:134) at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93) at freemarker.core.Expression.getAsTemplateModel(Expression.java:89) at freemarker.core.Expression.getStringValue(Expression.java:93) at freemarker.core.DollarVariable.accept(DollarVariable.java:76) at freemarker.core.Environment.visit(Environment.java:221) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:221) at freemarker.core.Environment.process(Environment.java:199) at org.ofbiz.base.util.template.FreeMarkerWorker.renderTemplate(FreeMarkerWorker.java:257) at org.ofbiz.widget.screen.HtmlWidget.renderHtmlTemplate(HtmlWidget.java:225) at org.ofbiz.widget.screen.HtmlWidget$HtmlTemplate.renderWidgetString(HtmlWidget.java:270) at org.ofbiz.widget.screen.HtmlWidget.renderWidgetString(HtmlWidget.java:130) at org.ofbiz.widget.screen.ModelScreenWidget$PlatformSpecific.renderWidgetString(ModelScreenWidget.java:920) at org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) at org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:191) at org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:396) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:135) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:97) at sun.reflect.GeneratedMethodAccessor70.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:866) at freemarker.ext.beans.OverloadedMethodModel.exec(OverloadedMethodModel.java:104) at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93) at freemarker.core.Expression.getAsTemplateModel(Expression.java:89) at freemarker.core.Expression.getStringValue(Expression.java:93) at freemarker.core.DollarVariable.accept(DollarVariable.java:76) at freemarker.core.Environment.visit(Environment.java:221) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:221) at freemarker.core.Environment.process(Environment.java:199) at org.ofbiz.base.util.template.FreeMarkerWorker.renderTemplate(FreeMarkerWorker.java:257) at org.ofbiz.widget.screen.HtmlWidget.renderHtmlTemplate(HtmlWidget.java:225) at org.ofbiz.widget.screen.HtmlWidget$HtmlTemplate.renderWidgetString(HtmlWidget.java:270) at org.ofbiz.widget.screen.HtmlWidget.renderWidgetString(HtmlWidget.java:130) at org.ofbiz.widget.screen.ModelScreenWidget$PlatformSpecific.renderWidgetString(ModelScreenWidget.java:920) at org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) at org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:191) at org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:396) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:135) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:97) at org.ofbiz.widget.screen.MacroScreenViewHandler.render(MacroScreenViewHandler.java:104) at org.ofbiz.webapp.control.RequestHandler.renderView(RequestHandler.java:865) at org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:582) at org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:547) at org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:547) at org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:224) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) at com.metricstream.SEOServlet.dispatchEcommerceRequest(SEOServlet.java:287) at com.metricstream.SEOServlet.findPattern(SEOServlet.java:236) at com.metricstream.SEOServlet.doGet(SEOServlet.java:49) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.ofbiz.widget.screen.ScreenRenderException: Error rendering screen [component://ecommerce/widget/CONew2016/BestPracticesPageScreens.xml#trainings-article-detail]: java.lang.IllegalArgumentException: Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object (Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object) at org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:409) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:135) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:97) at sun.reflect.GeneratedMethodAccessor70.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:866) at freemarker.ext.beans.OverloadedMethodModel.exec(OverloadedMethodModel.java:104) ... 76 more Caused by: java.lang.IllegalArgumentException: Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object at org.ofbiz.base.util.ScriptUtil.executeScript(ScriptUtil.java:348) at org.ofbiz.base.util.ScriptUtil.executeScript(ScriptUtil.java:324) at org.ofbiz.widget.ModelWidgetAction$Script.runAction(ModelWidgetAction.java:416) at org.ofbiz.widget.ModelWidgetAction.runSubActions(ModelWidgetAction.java:116) at org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:184) at org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:396) ... 83 more
Best Sellers
Method public java.lang.String org.ofbiz.widget.screen.ScreenRenderer.render(java.lang.String) throws org.ofbiz.base.util.GeneralException,java.io.IOException,org.xml.sax.SAXException,javax.xml.parsers.ParserConfigurationException threw an exception when invoked on org.ofbiz.widget.screen.ScreenRenderer@4384e562 with arguments of types [java.lang.String,] The problematic instruction: ---------- ==> ${screens.render("component://ecommerce/widget/CONew2016/BaseScreens.xml#recently-viewed")} [on line 28, column 1 in component://ecommerce/webapp/ecommerce/CONew2016/bestpractices/article_detail/contentDetailMain.ftl] ---------- Java backtrace for programmers: ---------- freemarker.template.TemplateModelException: Method public java.lang.String org.ofbiz.widget.screen.ScreenRenderer.render(java.lang.String) throws org.ofbiz.base.util.GeneralException,java.io.IOException,org.xml.sax.SAXException,javax.xml.parsers.ParserConfigurationException threw an exception when invoked on org.ofbiz.widget.screen.ScreenRenderer@4384e562 with arguments of types [java.lang.String,] at freemarker.ext.beans.OverloadedMethodModel.exec(OverloadedMethodModel.java:134) at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93) at freemarker.core.Expression.getAsTemplateModel(Expression.java:89) at freemarker.core.Expression.getStringValue(Expression.java:93) at freemarker.core.DollarVariable.accept(DollarVariable.java:76) at freemarker.core.Environment.visit(Environment.java:221) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:221) at freemarker.core.Environment.process(Environment.java:199) at org.ofbiz.base.util.template.FreeMarkerWorker.renderTemplate(FreeMarkerWorker.java:257) at org.ofbiz.widget.screen.HtmlWidget.renderHtmlTemplate(HtmlWidget.java:225) at org.ofbiz.widget.screen.HtmlWidget$HtmlTemplate.renderWidgetString(HtmlWidget.java:270) at org.ofbiz.widget.screen.HtmlWidget.renderWidgetString(HtmlWidget.java:130) at org.ofbiz.widget.screen.ModelScreenWidget$PlatformSpecific.renderWidgetString(ModelScreenWidget.java:920) at org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) at org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:191) at org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:396) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:135) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:97) at sun.reflect.GeneratedMethodAccessor70.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:866) at freemarker.ext.beans.OverloadedMethodModel.exec(OverloadedMethodModel.java:104) at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93) at freemarker.core.Expression.getAsTemplateModel(Expression.java:89) at freemarker.core.Expression.getStringValue(Expression.java:93) at freemarker.core.DollarVariable.accept(DollarVariable.java:76) at freemarker.core.Environment.visit(Environment.java:221) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:221) at freemarker.core.Environment.process(Environment.java:199) at org.ofbiz.base.util.template.FreeMarkerWorker.renderTemplate(FreeMarkerWorker.java:257) at org.ofbiz.widget.screen.HtmlWidget.renderHtmlTemplate(HtmlWidget.java:225) at org.ofbiz.widget.screen.HtmlWidget$HtmlTemplate.renderWidgetString(HtmlWidget.java:270) at org.ofbiz.widget.screen.HtmlWidget.renderWidgetString(HtmlWidget.java:130) at org.ofbiz.widget.screen.ModelScreenWidget$PlatformSpecific.renderWidgetString(ModelScreenWidget.java:920) at org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) at org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:191) at org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:396) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:135) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:97) at org.ofbiz.widget.screen.MacroScreenViewHandler.render(MacroScreenViewHandler.java:104) at org.ofbiz.webapp.control.RequestHandler.renderView(RequestHandler.java:865) at org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:582) at org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:547) at org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:547) at org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:224) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) at com.metricstream.SEOServlet.dispatchEcommerceRequest(SEOServlet.java:287) at com.metricstream.SEOServlet.findPattern(SEOServlet.java:236) at com.metricstream.SEOServlet.doGet(SEOServlet.java:49) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.ofbiz.widget.screen.ScreenRenderException: Error rendering screen [component://ecommerce/widget/CONew2016/BaseScreens.xml#recently-viewed]: org.ofbiz.entity.transaction.GenericTransactionException: The current transaction is marked for rollback, not beginning a new transaction and aborting current operation; the rollbackOnly was caused by: Error rendering screen [component://ecommerce/widget/CONew2016/BestPracticesPageScreens.xml#trainings-article-detail]: java.lang.IllegalArgumentException: Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null objectjava.lang.IllegalArgumentException: Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object (Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object) (The current transaction is marked for rollback, not beginning a new transaction and aborting current operation; the rollbackOnly was caused by: Error rendering screen [component://ecommerce/widget/CONew2016/BestPracticesPageScreens.xml#trainings-article-detail]: java.lang.IllegalArgumentException: Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null objectjava.lang.IllegalArgumentException: Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object (Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object)) at org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:423) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:135) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:97) at sun.reflect.GeneratedMethodAccessor70.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:866) at freemarker.ext.beans.OverloadedMethodModel.exec(OverloadedMethodModel.java:104) ... 76 more Caused by: org.ofbiz.entity.transaction.GenericTransactionException: The current transaction is marked for rollback, not beginning a new transaction and aborting current operation; the rollbackOnly was caused by: Error rendering screen [component://ecommerce/widget/CONew2016/BestPracticesPageScreens.xml#trainings-article-detail]: java.lang.IllegalArgumentException: Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null objectjava.lang.IllegalArgumentException: Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object (Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object) at org.ofbiz.entity.transaction.TransactionUtil.begin(TransactionUtil.java:159) at org.ofbiz.entity.transaction.TransactionUtil.begin(TransactionUtil.java:127) at org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:388) ... 83 more Caused by: java.lang.IllegalArgumentException: Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object at org.ofbiz.base.util.ScriptUtil.executeScript(ScriptUtil.java:348) at org.ofbiz.base.util.ScriptUtil.executeScript(ScriptUtil.java:324) at org.ofbiz.widget.ModelWidgetAction$Script.runAction(ModelWidgetAction.java:416) at org.ofbiz.widget.ModelWidgetAction.runSubActions(ModelWidgetAction.java:116) at org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:184) at org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:396) ... 83 more
Method public java.lang.String org.ofbiz.widget.screen.ScreenRenderer.render(java.lang.String) throws org.ofbiz.base.util.GeneralException,java.io.IOException,org.xml.sax.SAXException,javax.xml.parsers.ParserConfigurationException threw an exception when invoked on org.ofbiz.widget.screen.ScreenRenderer@4384e562 with arguments of types [java.lang.String,] The problematic instruction: ---------- ==> ${screens.render("component://ecommerce/widget/CONew2016/BaseScreens.xml#main-footer")} [on line 11, column 1 in component://ecommerce/webapp/ecommerce/CONew2016/templates/articleDetail.ftl] ---------- Java backtrace for programmers: ---------- freemarker.template.TemplateModelException: Method public java.lang.String org.ofbiz.widget.screen.ScreenRenderer.render(java.lang.String) throws org.ofbiz.base.util.GeneralException,java.io.IOException,org.xml.sax.SAXException,javax.xml.parsers.ParserConfigurationException threw an exception when invoked on org.ofbiz.widget.screen.ScreenRenderer@4384e562 with arguments of types [java.lang.String,] at freemarker.ext.beans.OverloadedMethodModel.exec(OverloadedMethodModel.java:134) at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93) at freemarker.core.Expression.getAsTemplateModel(Expression.java:89) at freemarker.core.Expression.getStringValue(Expression.java:93) at freemarker.core.DollarVariable.accept(DollarVariable.java:76) at freemarker.core.Environment.visit(Environment.java:221) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:221) at freemarker.core.Environment.process(Environment.java:199) at org.ofbiz.base.util.template.FreeMarkerWorker.renderTemplate(FreeMarkerWorker.java:257) at org.ofbiz.widget.screen.HtmlWidget.renderHtmlTemplate(HtmlWidget.java:225) at org.ofbiz.widget.screen.HtmlWidget$HtmlTemplate.renderWidgetString(HtmlWidget.java:270) at org.ofbiz.widget.screen.HtmlWidget.renderWidgetString(HtmlWidget.java:130) at org.ofbiz.widget.screen.ModelScreenWidget$PlatformSpecific.renderWidgetString(ModelScreenWidget.java:920) at org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) at org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:191) at org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:396) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:135) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:97) at org.ofbiz.widget.screen.MacroScreenViewHandler.render(MacroScreenViewHandler.java:104) at org.ofbiz.webapp.control.RequestHandler.renderView(RequestHandler.java:865) at org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:582) at org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:547) at org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:547) at org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:224) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) at com.metricstream.SEOServlet.dispatchEcommerceRequest(SEOServlet.java:287) at com.metricstream.SEOServlet.findPattern(SEOServlet.java:236) at com.metricstream.SEOServlet.doGet(SEOServlet.java:49) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.ofbiz.widget.screen.ScreenRenderException: Error rendering screen [component://ecommerce/widget/CONew2016/BaseScreens.xml#main-footer]: org.ofbiz.entity.transaction.GenericTransactionException: The current transaction is marked for rollback, not beginning a new transaction and aborting current operation; the rollbackOnly was caused by: Error rendering screen [component://ecommerce/widget/CONew2016/BestPracticesPageScreens.xml#trainings-article-detail]: java.lang.IllegalArgumentException: Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null objectjava.lang.IllegalArgumentException: Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object (Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object) (The current transaction is marked for rollback, not beginning a new transaction and aborting current operation; the rollbackOnly was caused by: Error rendering screen [component://ecommerce/widget/CONew2016/BestPracticesPageScreens.xml#trainings-article-detail]: java.lang.IllegalArgumentException: Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null objectjava.lang.IllegalArgumentException: Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object (Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object)) at org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:423) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:135) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:97) at sun.reflect.GeneratedMethodAccessor70.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:866) at freemarker.ext.beans.OverloadedMethodModel.exec(OverloadedMethodModel.java:104) ... 53 more Caused by: org.ofbiz.entity.transaction.GenericTransactionException: The current transaction is marked for rollback, not beginning a new transaction and aborting current operation; the rollbackOnly was caused by: Error rendering screen [component://ecommerce/widget/CONew2016/BestPracticesPageScreens.xml#trainings-article-detail]: java.lang.IllegalArgumentException: Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null objectjava.lang.IllegalArgumentException: Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object (Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object) at org.ofbiz.entity.transaction.TransactionUtil.begin(TransactionUtil.java:159) at org.ofbiz.entity.transaction.TransactionUtil.begin(TransactionUtil.java:127) at org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:388) ... 60 more Caused by: java.lang.IllegalArgumentException: Error running script at location [component://ecommerce/webapp/ecommerce/WEB-INF/actions/CONew2016/bestpractices/article_detail/trainings_articleDetail.groovy]: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getString() on null object at org.ofbiz.base.util.ScriptUtil.executeScript(ScriptUtil.java:348) at org.ofbiz.base.util.ScriptUtil.executeScript(ScriptUtil.java:324) at org.ofbiz.widget.ModelWidgetAction$Script.runAction(ModelWidgetAction.java:416) at org.ofbiz.widget.ModelWidgetAction.runSubActions(ModelWidgetAction.java:116) at org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:184) at org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:396) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:135) at org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:97) at sun.reflect.GeneratedMethodAccessor70.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:866) at freemarker.ext.beans.OverloadedMethodModel.exec(OverloadedMethodModel.java:104) at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93) at freemarker.core.Expression.getAsTemplateModel(Expression.java:89) at freemarker.core.Expression.getStringValue(Expression.java:93) at freemarker.core.DollarVariable.accept(DollarVariable.java:76) at freemarker.core.Environment.visit(Environment.java:221) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:221) at freemarker.core.Environment.process(Environment.java:199) at org.ofbiz.base.util.template.FreeMarkerWorker.renderTemplate(FreeMarkerWorker.java:257) at org.ofbiz.widget.screen.HtmlWidget.renderHtmlTemplate(HtmlWidget.java:225) at org.ofbiz.widget.screen.HtmlWidget$HtmlTemplate.renderWidgetString(HtmlWidget.java:270) at org.ofbiz.widget.screen.HtmlWidget.renderWidgetString(HtmlWidget.java:130) at org.ofbiz.widget.screen.ModelScreenWidget$PlatformSpecific.renderWidgetString(ModelScreenWidget.java:920) at org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:104) at org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:191) at org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:396) ... 60 more