Foren

com.liferay.portal.LayoutFriendlyURLException : an-unexpected-system-error

thumbnail
Vikas V, geändert vor 11 Jahren.

com.liferay.portal.LayoutFriendlyURLException : an-unexpected-system-error

Junior Member Beiträge: 83 Beitrittsdatum: 28.09.11 Neueste Beiträge
Hi,

Am using Liferay 6.0 CE

I had a newly registered user who on trying to login is getting "com.liferay.portal.LayoutFriendlyURLException" on the UI.

I referred to this post http://www.liferay.com/community/forums/-/message_boards/message/3671247

I couldnt corelate that problem to mine. What could be the reason for a user to get above message on the screen.

Please help

Regards,
thumbnail
David H Nebinger, geändert vor 11 Jahren.

RE: com.liferay.portal.LayoutFriendlyURLException : an-unexpected-system-e

Liferay Legend Beiträge: 14916 Beitrittsdatum: 02.09.06 Neueste Beiträge
Did you check the log to see what was there? Some user reporting some errant value in the browser is of no help to you (or us).

The corresponding information in the log, however, will be the key to resolving it...
thumbnail
Vikas V, geändert vor 11 Jahren.

RE: com.liferay.portal.LayoutFriendlyURLException : an-unexpected-system-e

Junior Member Beiträge: 83 Beitrittsdatum: 28.09.11 Neueste Beiträge
Hi David,

Thanks for the info.

Please find below the logs that got generated.


18:12:49,190 ERROR [MainServlet] com.liferay.portal.kernel.events.ActionException: com.liferay.portal.LayoutFriendlyURLException
com.liferay.portal.kernel.events.ActionException: com.liferay.portal.LayoutFriendlyURLException
at com.liferay.portal.events.ServicePreAction.run(ServicePreAction.java:147)
at com.liferay.portal.events.EventsProcessorImpl.processEvent(EventsProcessorImpl.java:81)
at com.liferay.portal.events.EventsProcessorImpl.process(EventsProcessorImpl.java:58)
at com.liferay.portal.events.EventsProcessorUtil.process(EventsProcessorUtil.java:53)
at com.liferay.portal.servlet.MainServlet.processServicePre(MainServlet.java:1064)
at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:449)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:126)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.strip.StripFilter.processFilter(StripFilter.java:261)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.fragment.FragmentFilter.processFilter(FragmentFilter.java:108)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:126)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:126)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:182)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:126)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:196)
at com.liferay.portal.servlet.filters.threadlocal.ThreadLocalFilter.processFilter(ThreadLocalFilter.java:35)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
:at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:436)
at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:384)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: com.liferay.portal.LayoutFriendlyURLException
at com.liferay.portal.service.impl.LayoutLocalServiceImpl.validateFriendlyURL(LayoutLocalServiceImpl.java:1339)
at com.liferay.portal.service.impl.LayoutLocalServiceImpl.validate(LayoutLocalServiceImpl.java:1305)
at com.liferay.portal.service.impl.LayoutLocalServiceImpl.addLayout(LayoutLocalServiceImpl.java:122)
at com.liferay.portal.service.impl.LayoutLocalServiceImpl.addLayout(LayoutLocalServiceImpl.java:190)
at com.liferay.portal.service.impl.LayoutLocalServiceImpl.addLayout(LayoutLocalServiceImpl.java:228)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at com.liferay.portal.dao.jdbc.aop.DynamicDataSourceTransactionInterceptor.invoke(DynamicDataSourceTransactionInterceptor.java:44)
at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:58)
at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:58)
at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:58)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy350.addLayout(Unknown Source)
at com.liferay.portal.service.LayoutLocalServiceUtil.addLayout(LayoutLocalServiceUtil.java:294)
at com.liferay.portal.events.ServicePreAction.addDefaultUserPrivateLayoutByProperties(ServicePreAction.java:190)
at com.liferay.portal.events.ServicePreAction.addDefaultUserPrivateLayouts(ServicePreAction.java:274)
at com.liferay.portal.events.ServicePreAction.updateUserLayouts(ServicePreAction.java:1828)
at com.liferay.portal.events.ServicePreAction.servicePre(ServicePreAction.java:1136)
at com.liferay.portal.events.ServicePreAction.run(ServicePreAction.java:144)


Please let me know if you require any more information.

Regards,

Vikas
thumbnail
David H Nebinger, geändert vor 11 Jahren.

RE: com.liferay.portal.LayoutFriendlyURLException : an-unexpected-system-e

Liferay Legend Beiträge: 14916 Beitrittsdatum: 02.09.06 Neueste Beiträge
The relevant code is:

		Layout layout = layoutPersistence.fetchByG_P_F(
			groupId, privateLayout, friendlyURL);

		if ((layout != null) && (layout.getLayoutId() != layoutId)) {
			throw new LayoutFriendlyURLException(
				LayoutFriendlyURLException.DUPLICATE);
		}


Basically it's doing a lookup during friendly layout validation to see if another friendly URL exists for the one given.

So your user is trying to add a duplicate friendly URL for one that they had already created.

As a side note, you really should have the corresponding Liferay portal source for the version you're running. It is invaluable when it comes to diagnosing stack traces...
thumbnail
Vikas V, geändert vor 11 Jahren.

RE: com.liferay.portal.LayoutFriendlyURLException : an-unexpected-system-e

Junior Member Beiträge: 83 Beitrittsdatum: 28.09.11 Neueste Beiträge
David H Nebinger:

So your user is trying to add a duplicate friendly URL for one that they had already created.
.


Hi David,

That was very useful.

But, how can a user manage to add a duplicate friendly URL?

Regards,

Vikas
thumbnail
David H Nebinger, geändert vor 11 Jahren.

RE: com.liferay.portal.LayoutFriendlyURLException : an-unexpected-system-e

Liferay Legend Beiträge: 14916 Beitrittsdatum: 02.09.06 Neueste Beiträge
Seriously? You think that some path, i.e. "http://www.example.com/web/guest", can point to two separate locations?
thumbnail
Vikas V, geändert vor 11 Jahren.

RE: com.liferay.portal.LayoutFriendlyURLException : an-unexpected-system-e

Junior Member Beiträge: 83 Beitrittsdatum: 28.09.11 Neueste Beiträge
Hi David,

David H Nebinger:
You think that some path, i.e. "http://www.example.com/web/guest", can point to two separate locations?


Ok. But, I tried simulating the same. Being in the home page , http://myDomain/web/ , http://myDomain/web/portal are all redirecting to http://myDomain/web/portal/home.

Am not getting LayoutFriendlyURLException. Even in the logs there are no exceptions.

I have other urls whose friendly url are like /web/portal/home2 , /web/portal/home3 etc.

Am using Apache Web server. I have a RewriteRule written over there which says if the URL is just http://myDomain/web or
http://myDomain/web/portal , then redirect to http://myDomain/web/portal/home.


Let me know if still more information is required.

Regards,
thumbnail
David H Nebinger, geändert vor 11 Jahren.

RE: com.liferay.portal.LayoutFriendlyURLException : an-unexpected-system-e

Liferay Legend Beiträge: 14916 Beitrittsdatum: 02.09.06 Neueste Beiträge
The error is duplicate friendly name, not two different friendly names pointing at the same place.

So user created a page and gave it the friendly name of /my-path.

They then created another page and tried to give it the friendly name of /my-path.

You cannot have a duplicate friendly name, because that would be trying to have the url "http://example.com/my-path" going to two different pages for the user. Not possible.