2013-01-10 4 views
1

6.1.0 Liferay CE 포털에서 6.1.1 포틀릿을 실행하려고합니다. JSF Portlet은 ServiceBuilder와 Liferay의 다른 많은 Util API 클래스를 사용합니다.6.1.1 liferay 포털에서 실행되도록 6.1.1 jsf 포틀릿을 백 포트하는 방법은 무엇입니까?

필자는 올바른 liferay-plugins-sdk로 포틀릿을 다시 컴파일하는 것이 가장 좋습니다. 6.1.0 SDK를 다운로드 한 후 eclipse 프로젝트에서 바꾸고 다시 빌드하면 몇 가지 예외가 발생합니다. 서버 시작 직후에 발생합니다.

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Bean class [com.liferay.portal.kernel.spring.util.SpringFactoryUtil] not found 
Offending resource: ServletContext resource [/WEB-INF/classes/META-INF/cluster-spring.xml] 
Bean ''; nested exception is java.lang.ClassNotFoundException: com.liferay.portal.kernel.spring.util.SpringFactoryUtil 
    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68) 
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85) 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:291) 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseBeanDefinitionElement(BeanDefinitionParserDelegate.java:491) 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseBeanDefinitionElement(BeanDefinitionParserDelegate.java:396) 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseBeanDefinitionElement(BeanDefinitionParserDelegate.java:365) 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.processBeanDefinition(DefaultBeanDefinitionDocumentReader.java:258) 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:153) 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:132) 
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:93) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149) 
    at com.liferay.portal.spring.context.PortletApplicationContext.loadBeanDefinitions(PortletApplicationContext.java:76) 
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93) 
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130) 
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397) 
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
    at com.liferay.portal.spring.context.PortletContextLoaderListener.contextInitialized(PortletContextLoaderListener.java:99) 
    at com.liferay.portal.kernel.servlet.PortalClassLoaderServletContextListener.doPortalInit(PortalClassLoaderServletContextListener.java:91) 
    at com.liferay.portal.kernel.util.BasePortalLifecycle.portalInit(BasePortalLifecycle.java:42) 
    at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:61) 
    at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:53) 
    at com.liferay.portal.kernel.util.BasePortalLifecycle.registerPortalLifecycle(BasePortalLifecycle.java:52) 
    at com.liferay.portal.kernel.servlet.PortalClassLoaderServletContextListener.contextInitialized(PortalClassLoaderServletContextListener.java:50) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4765) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5260) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1362) 
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1450) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:295) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1338) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1496) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1506) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1485) 
    at java.lang.Thread.run(Thread.java:680) 
Caused by: java.lang.ClassNotFoundException: com.liferay.portal.kernel.spring.util.SpringFactoryUtil 
    at java.lang.ClassLoader.findClass(ClassLoader.java:358) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at com.liferay.portal.spring.util.FilterClassLoader.loadClass(FilterClassLoader.java:41) 
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:257) 
    at org.springframework.beans.factory.support.BeanDefinitionReaderUtils.createBeanDefinition(BeanDefinitionReaderUtils.java:63) 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.createBeanDefinition(BeanDefinitionParserDelegate.java:616) 
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseBeanDefinitionElement(BeanDefinitionParserDelegate.java:472) 
    ... 41 more 

누구에게 좋은 생각이 있습니까? 여기

이 포럼에 대한 링크입니다 ... 나는 또한 공식 포럼에이 문제를 게시,하지만 어쩌면 나는 여기 더 많은 사람들을 도달 : http://www.liferay.com/community/forums/-/message_boards/message/19124222

==== 업데이트 1 ====

위 예외를 해결하기 위해 서비스 빌더를 6.1.0 포틀릿 내에서 다시 실행했습니다.

지금은 포틀릿이 페이지에 추가하는 포털 가능/표시되지 buuut, 포틀릿을 사용하여 서버를 시작할 수와 나는 다음 의 ClassNotFoundException를 얻을 : PortletBeanLocatorUtil :

12:24:06,627 ERROR [PortletContextLoaderListener:132] java.lang.ClassNotFoundException: com.liferay.util.bean.PortletBeanLocatorUtil 
java.lang.ClassNotFoundException: com.liferay.util.bean.PortletBeanLocatorUtil 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1533) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:247) 
    at com.liferay.portal.spring.context.PortletContextLoaderListener.contextInitialized(PortletContextLoaderListener.java:118) 
    at com.liferay.portal.kernel.servlet.PortalClassLoaderServletContextListener.doPortalInit(PortalClassLoaderServletContextListener.java:91) 
    at com.liferay.portal.kernel.util.BasePortalLifecycle.portalInit(BasePortalLifecycle.java:42) 
    at com.liferay.portal.kernel.util.PortalLifecycleUtil.flushInits(PortalLifecycleUtil.java:45) 
    at com.liferay.portal.servlet.MainServlet.initPlugins(MainServlet.java:813) 
    at com.liferay.portal.servlet.MainServlet.init(MainServlet.java:347) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5001) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5289) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:866) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:842) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615) 
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649) 
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1581) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:680) 

의견을 보내 주셔서 감사합니다.

+1

상호 참조 (crossreference)를 위해 liferay.com 포럼에 대한 링크를 제공하여 누구나 솔루션에서 배울 수 있도록 할 수 있습니까? –

+0

죄송합니다. 테스트 한 것을 깨달았 기 때문에 모든 것을 변경해야했습니다. 내 6.1.1 포털의 my 6.1.0-sdk-portlet. 6.1.0 liferay를 다운로드하고 지금 6.1.0-sdk-portlet을 배포 한 후에 설명 된 오류가 나타납니다. forum 이전 오류 메시지가 남아 있습니다. 여기에 현재 상태가 있습니다. – artgrohe

+0

SDK를 다른 버전으로 변경 한 후 service-builder를 실행 했습니까 –

답변

2

6.1.0 SDK에서 포틀릿을 다시 컴파일하는 것이 더 쉽습니다. 특히 ServiceBuilder를 사용할 때 : 생성 된 코드와 런타임이 일치하는 런타임 파일에 의존하는 코드 생성기로 실행 중입니다.

순수한 JSR-286 포틀릿의 경우 주요 버전에서도 쉽게 호환됩니다. 보다 정교한 코드를 사용하면 (예 : ServiceBuilder 또는 API와 호환되도록 유지하기 위해 많은 노력을 기울이고 있지만 실제로 바이너리 호환이 가능하다는 보장은 할 수 없습니다.

Liferay 자신의 플러그인의 경우, 일치하는 버전을 사용하라는 메시지가 표시됩니다. 업데이트 사이에는 테스트하지 않습니다. 또한 그들은 ServiceBuilder와 API를 가장 많이 사용합니다.

관련 문제