[
https://issues.apache.org/jira/browse/OFBIZ-5312?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14229153#comment-14229153
]
Jacques Le Roux edited comment on OFBIZ-5312 at 1/28/15 11:27 AM:
------------------------------------------------------------------
:)
That would surelly be already spotted.
Obviously something is wrong with my data.
Is there a way to migrate 13.07 data to SEO branch?
In the meantime, here's stacktrace of the thread eating up CPU:
{code}
[java] "http-bio-8080-exec-1" daemon prio=10 tid=0x00007fbd1c033800
nid=0x2fe8 runnable [0x00007fbd6f2a4000]
[java] java.lang.Thread.State: RUNNABLE
[java] at org.ofbiz.entity.GenericEntity.get(GenericEntity.java:372)
[java] at
org.ofbiz.entity.GenericEntity.getString(GenericEntity.java:679)
[java] at
org.ofbiz.content.webapp.ftl.LimitedSubContentCacheTransform$1.getRandomEntity(LimitedSubContentCacheTransform.java:308)
[java] at
org.ofbiz.content.webapp.ftl.LimitedSubContentCacheTransform$1.getNextMatchingEntity(LimitedSubContentCacheTransform.java:321)
[java] at
org.ofbiz.content.webapp.ftl.LimitedSubContentCacheTransform$1.afterBody(LimitedSubContentCacheTransform.java:213)
[java] at
freemarker.core.Environment.visitAndTransform(Environment.java:371)
[java] at freemarker.core.UnifiedCall.accept(UnifiedCall.java:104)
[java] at freemarker.core.Environment.visit(Environment.java:257)
[java] at freemarker.core.MixedContent.accept(MixedContent.java:57)
[java] at freemarker.core.Environment.visit(Environment.java:257)
[java] at freemarker.core.Environment.process(Environment.java:235)
[java] at
org.ofbiz.base.util.template.FreeMarkerWorker.renderTemplate(FreeMarkerWorker.java:256)
[java] at
org.ofbiz.widget.screen.HtmlWidget.renderHtmlTemplate(HtmlWidget.java:157)
[java] at
org.ofbiz.widget.screen.HtmlWidget$HtmlTemplate.renderWidgetString(HtmlWidget.java:202)
[java] at
org.ofbiz.widget.screen.HtmlWidget.renderWidgetString(HtmlWidget.java:130)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$PlatformSpecific.renderWidgetString(ModelScreenWidget.java:1100)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:103)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:270)
[java] at
org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:164)
[java] at
org.ofbiz.widget.screen.ScreenFactory.renderReferencedScreen(ScreenFactory.java:210)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$IncludeScreen.renderWidgetString(ModelScreenWidget.java:695)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:103)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:270)
[java] at
org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:164)
[java] at
org.ofbiz.widget.screen.ScreenFactory.renderReferencedScreen(ScreenFactory.java:210)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$IncludeScreen.renderWidgetString(ModelScreenWidget.java:695)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:103)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$Container.renderWidgetString(ModelScreenWidget.java:423)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:103)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$Container.renderWidgetString(ModelScreenWidget.java:423)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:103)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:270)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:103)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:270)
[java] at
org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:164)
[java] at
org.ofbiz.widget.screen.ScreenFactory.renderReferencedScreen(ScreenFactory.java:210)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$DecoratorScreen.renderWidgetString(ModelScreenWidget.java:763)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:103)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:270)
[java] at
org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:164)
[java] at
org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:133)
[java] at
org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:95)
[java] at
org.ofbiz.widget.screen.MacroScreenViewHandler.render(MacroScreenViewHandler.java:97)
[java] at
org.ofbiz.webapp.control.RequestHandler.renderView(RequestHandler.java:987)
[java] at
org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:674)
[java] at
org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:210)
[java] at
org.ofbiz.product.category.SeoControlServlet.doGet(SeoControlServlet.java:85)
[java] at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
[java] at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
[java] at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
[java] at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
[java] at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
[java] at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486)
[java] at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)
[java] at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)
[java] at
org.ofbiz.product.category.SeoContextFilter.doFilter(SeoContextFilter.java:255)
[java] at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
[java] at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
[java] at
org.ofbiz.product.category.SeoContentUrlFilter.doFilter(SeoContentUrlFilter.java:107)
[java] at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
[java] at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
[java] at
org.ofbiz.product.category.CatalogUrlFilter.doFilter(CatalogUrlFilter.java:336)
[java] at
org.ofbiz.product.category.CatalogUrlSeoFilter.doFilter(CatalogUrlSeoFilter.java:68)
[java] at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
[java] at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
[java] at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
[java] at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
[java] at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
[java] at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
[java] at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
[java] at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
[java] at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
[java] at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
[java] at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
[java] at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
[java] at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
[java] - locked <0x00000000e6054538> (a
org.apache.tomcat.util.net.SocketWrapper)
[java] at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[java] at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[java] at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
[java] at java.lang.Thread.run(Thread.java:744)
{code}
was (Author: jalmasi):
:)
That would surelly be already spotted.
Obviously something is wrong with my data.
Is there a way to migrate 13.07 data to SEO branch?
In the meantime, here's stacktrace of the thread eating up CPU:
[java] "http-bio-8080-exec-1" daemon prio=10 tid=0x00007fbd1c033800
nid=0x2fe8 runnable [0x00007fbd6f2a4000]
[java] java.lang.Thread.State: RUNNABLE
[java] at org.ofbiz.entity.GenericEntity.get(GenericEntity.java:372)
[java] at
org.ofbiz.entity.GenericEntity.getString(GenericEntity.java:679)
[java] at
org.ofbiz.content.webapp.ftl.LimitedSubContentCacheTransform$1.getRandomEntity(LimitedSubContentCacheTransform.java:308)
[java] at
org.ofbiz.content.webapp.ftl.LimitedSubContentCacheTransform$1.getNextMatchingEntity(LimitedSubContentCacheTransform.java:321)
[java] at
org.ofbiz.content.webapp.ftl.LimitedSubContentCacheTransform$1.afterBody(LimitedSubContentCacheTransform.java:213)
[java] at
freemarker.core.Environment.visitAndTransform(Environment.java:371)
[java] at freemarker.core.UnifiedCall.accept(UnifiedCall.java:104)
[java] at freemarker.core.Environment.visit(Environment.java:257)
[java] at freemarker.core.MixedContent.accept(MixedContent.java:57)
[java] at freemarker.core.Environment.visit(Environment.java:257)
[java] at freemarker.core.Environment.process(Environment.java:235)
[java] at
org.ofbiz.base.util.template.FreeMarkerWorker.renderTemplate(FreeMarkerWorker.java:256)
[java] at
org.ofbiz.widget.screen.HtmlWidget.renderHtmlTemplate(HtmlWidget.java:157)
[java] at
org.ofbiz.widget.screen.HtmlWidget$HtmlTemplate.renderWidgetString(HtmlWidget.java:202)
[java] at
org.ofbiz.widget.screen.HtmlWidget.renderWidgetString(HtmlWidget.java:130)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$PlatformSpecific.renderWidgetString(ModelScreenWidget.java:1100)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:103)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:270)
[java] at
org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:164)
[java] at
org.ofbiz.widget.screen.ScreenFactory.renderReferencedScreen(ScreenFactory.java:210)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$IncludeScreen.renderWidgetString(ModelScreenWidget.java:695)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:103)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:270)
[java] at
org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:164)
[java] at
org.ofbiz.widget.screen.ScreenFactory.renderReferencedScreen(ScreenFactory.java:210)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$IncludeScreen.renderWidgetString(ModelScreenWidget.java:695)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:103)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$Container.renderWidgetString(ModelScreenWidget.java:423)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:103)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$Container.renderWidgetString(ModelScreenWidget.java:423)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:103)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:270)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:103)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:270)
[java] at
org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:164)
[java] at
org.ofbiz.widget.screen.ScreenFactory.renderReferencedScreen(ScreenFactory.java:210)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$DecoratorScreen.renderWidgetString(ModelScreenWidget.java:763)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:103)
[java] at
org.ofbiz.widget.screen.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:270)
[java] at
org.ofbiz.widget.screen.ModelScreen.renderScreenString(ModelScreen.java:164)
[java] at
org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:133)
[java] at
org.ofbiz.widget.screen.ScreenRenderer.render(ScreenRenderer.java:95)
[java] at
org.ofbiz.widget.screen.MacroScreenViewHandler.render(MacroScreenViewHandler.java:97)
[java] at
org.ofbiz.webapp.control.RequestHandler.renderView(RequestHandler.java:987)
[java] at
org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:674)
[java] at
org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:210)
[java] at
org.ofbiz.product.category.SeoControlServlet.doGet(SeoControlServlet.java:85)
[java] at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
[java] at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
[java] at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
[java] at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
[java] at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
[java] at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486)
[java] at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)
[java] at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)
[java] at
org.ofbiz.product.category.SeoContextFilter.doFilter(SeoContextFilter.java:255)
[java] at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
[java] at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
[java] at
org.ofbiz.product.category.SeoContentUrlFilter.doFilter(SeoContentUrlFilter.java:107)
[java] at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
[java] at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
[java] at
org.ofbiz.product.category.CatalogUrlFilter.doFilter(CatalogUrlFilter.java:336)
[java] at
org.ofbiz.product.category.CatalogUrlSeoFilter.doFilter(CatalogUrlSeoFilter.java:68)
[java] at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
[java] at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
[java] at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
[java] at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
[java] at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
[java] at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
[java] at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
[java] at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
[java] at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
[java] at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
[java] at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
[java] at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
[java] at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
[java] - locked <0x00000000e6054538> (a
org.apache.tomcat.util.net.SocketWrapper)
[java] at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[java] at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[java] at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
[java] at java.lang.Thread.run(Thread.java:744)
> Proposal: URL-Generation Changes (mostly for SEO reasons but not only)
> ----------------------------------------------------------------------
>
> Key: OFBIZ-5312
> URL: https://issues.apache.org/jira/browse/OFBIZ-5312
> Project: OFBiz
> Issue Type: New Feature
> Components: specialpurpose/ecommerce
> Affects Versions: Trunk
> Reporter: Jacques Le Roux
> Assignee: Jacques Le Roux
> Priority: Minor
> Labels: changes, ecommerce, friendly, seo, url
> Attachments: OFBIZ-5312 - ofbiz-ecommerce-seo.patch, OFBIZ-5312 -
> ofbiz-ecommerce-seo.patch, OFBIZ-5312 - ofbiz-ecommerce-seo.patch, OFBIZ-5312
> - ofbiz-ecommerce-seo.patch, OFBIZ-5312 - ofbiz-ecommerce-seo.patch,
> OFBIZ-5312 - ofbiz-ecommerce-seo.patch, OFBIZ-5312 -
> ofbiz-ecommerce-seo.patch, OFBIZ-5312 - ofbiz-ecommerce-seo.patch, OFBIZ-5312
> - ofbiz-ecommerce-seo.patch, OFBIZ-5312 - ofbiz-ecommerce-seo.patch,
> OFBIZ-5312 - ofbiz-ecommerce-seo.patch, OFBIZ-5312 -
> ofbiz-ecommerce-seo.patch, OFBIZ-5312-infinite-loop-20141209.patch,
> OFBiz-5312-allowpaths-email-jsp-patch-20140625.patch,
> OFBiz-5312-product-ecommerce-seo-20131031.patch,
> OFBiz-5312-product-ecommerce-seo-for-seo-branch.patch,
> OFBiz-5312-product-ecommerce-seo.patch, SeoContextFilter.java.patch,
> classloaderpatch.txt
>
>
> [This was proposed by Paul Piper in Nabble 7 months
> ago|http://ofbiz.135035.n4.nabble.com/Proposal-URL-Generation-Changes-td4639289.html].
> Here is quoted Paul's proposal
> {quote}
> Hey Everyone,
> over at ilscipio (www.ilscipio.com) we developed a set of functional OFBiz
> changes that we believe the entire community could benefit from. The changes
> have been implemented in parts in Syracus (www.syracus.net) for a while now,
> but we figured that some of which are too crucial for ofbiz' success in the
> long run, so we are considering the contribution (as we did with the SOLR
> component).
> As you are probably aware, OFBiz has a pretty uncommon way of generating
> URLs. Most of this has to do with the fact that OFBiz uses a servlet
> (ControlServlet) to handle all requests. The servlet is mounted at /control,
> so that it won't interfere with other servlets. Though functionally valid,
> this has the sideeffect that all urls are actually created on /control, which
> is neither pretty, nor good by any measures of SEO. It also means that a few
> 302 redirects are necessary to forward the user from / to /control/main. It
> also makes requests more complicated, since many forwards are necessary
> whenever somebody wants to move away from this implementation.
> Since this is hurtful to many of the implementers, I wanted to discuss
> whether or not you guys would be interested in the changes we have made. The
> functional changes contain:
> * Removal of /control out of all the urls
> * SEO-friendly URLS
> * Configurable product/category and other URLs
> * Frontpage mapping from /main to /
> It was tested on our end and contains all necessary improvements (Transforms,
> Sample Configuration, Servlets & Filters) for it to be applicable.
> If interested, I would create a new JIRA ticket for this and after a few
> minor internal discussions, we will gladly provide the rest of you with it.
> Regards,
> Paul
> {quote}
> There is even a patch, mostly done by Jinghai Shi, that I attach here. Even
> if it has been already used in [Syracus|http://syracus.net/] since early this
> year, some help would be needed to test it thoroughly in OFBiz.
> Then we should discuss if it's the way to go. I believe it is. Who needs a
> /control/ or /main by default in ecommerce urls? Would you not prefer
> http://localhost:8080/ecommerce/ over
> http://localhost:8080/ecommerce/control/main ?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)