Fórum

Deployment error for migrated portlet in Liferay 7

pratik parekh, modificado 6 Anos atrás.

Deployment error for migrated portlet in Liferay 7

New Member Postagens: 18 Data de Entrada: 09/09/14 Postagens Recentes
I have a portlet developed in LR-6.2-ee-sp14. I am trying to migrate portlet to Liferay 7.
I have successfully migrated code using Code upgrade tool but when I try to deploy migrated portlet's war file I am getting following error.

org.osgi.framework.BundleException: Could not resolve module: MyPortlet-portlet [549]
  Unresolved requirement: Import-Package: bsh; resolution:="optional"
  Unresolved requirement: Import-Package: com.caucho.burlap.client; resolution:="optional"
  Unresolved requirement: Import-Package: com.caucho.burlap.io; resolution:="optional"
  Unresolved requirement: Import-Package: com.caucho.burlap.server; resolution:="optional"
  Unresolved requirement: Import-Package: com.caucho.hessian; resolution:="optional"
  Unresolved requirement: Import-Package: com.caucho.hessian.client; resolution:="optional"
  Unresolved requirement: Import-Package: com.caucho.hessian.io; resolution:="optional"
  Unresolved requirement: Import-Package: com.caucho.hessian.server; resolution:="optional"
  Unresolved requirement: Import-Package: com.fmp.exception; resolution:="optional"
  Unresolved requirement: Import-Package: com.jamonapi; resolution:="optional"
  Unresolved requirement: Import-Package: com.lowagie.text; resolution:="optional"
  Unresolved requirement: Import-Package: com.lowagie.text.pdf; resolution:="optional"
  Unresolved requirement: Import-Package: com.sun.net.httpserver; resolution:="optional"
  Unresolved requirement: Import-Package: com.swabunga.spell.engine; resolution:="optional"
  Unresolved requirement: Import-Package: com.swabunga.spell.event; resolution:="optional"
  Unresolved requirement: Import-Package: commonj.timers; resolution:="optional"
  Unresolved requirement: Import-Package: commonj.work; resolution:="optional"
  Unresolved requirement: Import-Package: edu.emory.mathcs.backport.java.util.concurrent; resolution:="optional"
  Unresolved requirement: Import-Package: groovy.lang; resolution:="optional"
  Unresolved requirement: Import-Package: javax.ejb; resolution:="optional"
  Unresolved requirement: Import-Package: javax.faces.application; resolution:="optional"
  Unresolved requirement: Import-Package: javax.faces.component; resolution:="optional"
  Unresolved requirement: Import-Package: javax.faces.context; resolution:="optional"
  Unresolved requirement: Import-Package: javax.faces.el; resolution:="optional"
  Unresolved requirement: Import-Package: javax.faces.event; resolution:="optional"
  Unresolved requirement: Import-Package: javax.inject; resolution:="optional"
  Unresolved requirement: Import-Package: javax.interceptor; resolution:="optional"
  Unresolved requirement: Import-Package: javax.validation; resolution:="optional"
  Unresolved requirement: Import-Package: javax.validation.bootstrap; resolution:="optional"
  Unresolved requirement: Import-Package: javax.validation.metadata; resolution:="optional"
  Unresolved requirement: Import-Package: javax.validation.spi; resolution:="optional"
  Unresolved requirement: Import-Package: jxl; resolution:="optional"
  Unresolved requirement: Import-Package: jxl.write; resolution:="optional"
  Unresolved requirement: Import-Package: net.fortuna.ical4j.model; resolution:="optional"
  Unresolved requirement: Import-Package: net.fortuna.ical4j.model.property; resolution:="optional"
  Unresolved requirement: Import-Package: net.sf.cglib.asm; resolution:="optional"
  Unresolved requirement: Import-Package: net.sf.cglib.core; resolution:="optional"
  Unresolved requirement: Import-Package: net.sf.cglib.proxy; resolution:="optional"
  Unresolved requirement: Import-Package: net.sf.cglib.transform.impl; resolution:="optional"
  Unresolved requirement: Import-Package: net.sf.ehcache.constructs.blocking; resolution:="optional"
  Unresolved requirement: Import-Package: net.sf.ehcache.store; resolution:="optional"
  Unresolved requirement: Import-Package: net.sf.jasperreports.engine; resolution:="optional"
  Unresolved requirement: Import-Package: net.sf.jasperreports.engine.data; resolution:="optional"
  Unresolved requirement: Import-Package: net.sf.jasperreports.engine.design; resolution:="optional"
  Unresolved requirement: Import-Package: net.sf.jasperreports.engine.export; resolution:="optional"
  Unresolved requirement: Import-Package: net.sf.jasperreports.engine.util; resolution:="optional"
  Unresolved requirement: Import-Package: net.sf.jasperreports.engine.xml; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.axis.tools.ant.wsdl; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.bsf; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.commons.pool; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.commons.pool.impl; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.poi.hssf.usermodel; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.poi.poifs.filesystem; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.poi.ss.usermodel; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.portals.bridges.common; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.portals.bridges.struts; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.awareness; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.context; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.definition; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.definition.dao; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.definition.digester; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.evaluator; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.evaluator.el; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.evaluator.impl; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.factory; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.impl; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.impl.mgmt; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.jsp.context; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.locale; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.locale.impl; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.preparer; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.renderer; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.servlet.context; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.tiles.startup; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.velocity; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.velocity.app; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.velocity.context; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.velocity.exception; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.velocity.runtime; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.velocity.runtime.log; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.velocity.runtime.resource; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.velocity.runtime.resource.loader; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.velocity.tools.generic; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.velocity.tools.view; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.velocity.tools.view.context; resolution:="optional"
  Unresolved requirement: Import-Package: org.apache.velocity.tools.view.servlet; resolution:="optional"
  Unresolved requirement: Import-Package: org.aspectj.bridge; resolution:="optional"
  Unresolved requirement: Import-Package: org.aspectj.runtime.internal; resolution:="optional"
  Unresolved requirement: Import-Package: org.aspectj.util; resolution:="optional"
  Unresolved requirement: Import-Package: org.aspectj.weaver; resolution:="optional"
  Unresolved requirement: Import-Package: org.aspectj.weaver.ast; resolution:="optional"
  Unresolved requirement: Import-Package: org.aspectj.weaver.bcel; resolution:="optional"
  Unresolved requirement: Import-Package: org.aspectj.weaver.internal.tools; resolution:="optional"
  Unresolved requirement: Import-Package: org.aspectj.weaver.loadtime; resolution:="optional"
  Unresolved requirement: Import-Package: org.aspectj.weaver.patterns; resolution:="optional"
  Unresolved requirement: Import-Package: org.aspectj.weaver.reflect; resolution:="optional"
  Unresolved requirement: Import-Package: org.aspectj.weaver.tools; resolution:="optional"
  Unresolved requirement: Import-Package: org.codehaus.groovy.control; resolution:="optional"
  Unresolved requirement: Import-Package: org.codehaus.jackson; resolution:="optional"
  Unresolved requirement: Import-Package: org.codehaus.jackson.map; resolution:="optional"
  Unresolved requirement: Import-Package: org.codehaus.jackson.map.type; resolution:="optional"
  Unresolved requirement: Import-Package: org.codehaus.jackson.type; resolution:="optional"
  Unresolved requirement: Import-Package: org.hibernate.validator.messageinterpolation; resolution:="optional"
  Unresolved requirement: Import-Package: org.hibernate.validator.resourceloading; resolution:="optional"
  Unresolved requirement: Import-Package: org.joda.time; resolution:="optional"
  Unresolved requirement: Import-Package: org.joda.time.format; resolution:="optional"
  Unresolved requirement: Import-Package: org.jruby; resolution:="optional"
  Unresolved requirement: Import-Package: org.jruby.ast; resolution:="optional"
  Unresolved requirement: Import-Package: org.jruby.exceptions; resolution:="optional"
  Unresolved requirement: Import-Package: org.jruby.javasupport; resolution:="optional"
  Unresolved requirement: Import-Package: org.jruby.runtime; resolution:="optional"
  Unresolved requirement: Import-Package: org.jruby.runtime.builtin; resolution:="optional"
  Unresolved requirement: Import-Package: org.quartz.impl; resolution:="optional"
  Unresolved requirement: Import-Package: org.quartz.impl.jdbcjobstore; resolution:="optional"
  Unresolved requirement: Import-Package: org.quartz.simpl; resolution:="optional"
  Unresolved requirement: Import-Package: org.quartz.spi; resolution:="optional"
  Unresolved requirement: Import-Package: org.quartz.utils; resolution:="optional"
  Unresolved requirement: Import-Package: org.springframework.instrument; resolution:="optional"
  Unresolved requirement: Require-Capability: osgi.extender; filter:="(&(osgi.extender=jsp.taglib)(uri=http://java.sun.com/jstl/core_rt))"


How can I resolve this error?
Is there any step missed during migration?

Any pointers will help a lot.

Thanks
thumbnail
David H Nebinger, modificado 6 Anos atrás.

RE: Deployment error for migrated portlet in Liferay 7

Liferay Legend Postagens: 14916 Data de Entrada: 02/09/06 Postagens Recentes
Who generated your bnd.bnd file? There's no way the upgrade assistant did that for you. FWIW I don't think you can have a space after the semicolon before the resolution stanza, but even so this doesn't look like it is going to work...

With everything being optional, the bundle won't fail because of unresolved refs but you're going to get a slew of class not found exceptions because they won't be there.

In my opinion, this would be much worse than the unresolved refs because at least the unresolved refs will be known up front; marking everything as optional means the CNFEs can come later at any time and you'll have no way to prevent them from occurring.






Come meet me at the 2017 LSNA!
pratik parekh, modificado 6 Anos atrás.

RE: Deployment error for migrated portlet in Liferay 7

New Member Postagens: 18 Data de Entrada: 09/09/14 Postagens Recentes
Hi David.

Thanks for the reply.

To give you background, using SDK I am migrating from 6.2 to Liferay 7 by "Upgrade to Liferay Plugin SDK 7" option.
It is generating a war file of my spring portlet which has server dependency, I migrated the service as a liferay portlet and deployed successfully, but issue is with the portlet where it has service dependency.

David H Nebinger:
Who generated your bnd.bnd file? There's no way the upgrade assistant did that for you. FWIW I don't think you can have a space after the semicolon before the resolution stanza, but even so this doesn't look like it is going to work...

By the way, I don't have any bnd.bnd in my portlet.

Initially I made a mistake, my jar were commented in plugin package properties. After uncommenting, I could resolved many of the above errors, but now it stuck at below error.


12:38:33,665 WARN  [fileinstall-E:/Work/7/Server/liferay-ce-portal-tomcat-7.0-ga3-20160804222206210/liferay-ce-portal-7.0-ga3/osgi/war][org_apache_felix_fileinstall:103] Error while starting bundle: webbundle:file:/E:/Work/7/Server/liferay-ce-portal-tomcat-7.0-ga3-20160804222206210/liferay-ce-portal-7.0-ga3/osgi/war/MyPortlet-portlet-7.0.0.1.war?Bundle-SymbolicName=MyPortlet-portlet&Web-ContextPath=/MyPortlet-portlet
org.osgi.framework.BundleException: Could not resolve module: MyPortlet-portlet[553]_  Unresolved requirement: Import-Package: com.swabunga.spell.engine; resolution:="optional"_  Unresolved requirement: Import-Package: com.swabunga.spell.event; resolution:="optional"_  Unresolved requirement: Import-Package: net.fortuna.ical4j.model; resolution:="optional"_  Unresolved requirement: Import-Package: net.fortuna.ical4j.model.property; resolution:="optional"_  Unresolved requirement: Import-Package: org.apache.axis.tools.ant.wsdl; resolution:="optional"_  Unresolved requirement: Import-Package: org.apache.bsf; resolution:="optional"_  Unresolved requirement: Import-Package: org.apache.poi.hssf.usermodel; resolution:="optional"_  Unresolved requirement: Import-Package: org.apache.poi.ss.usermodel; resolution:="optional"_  Unresolved requirement: Import-Package: org.apache.portals.bridges.common; resolution:="optional"_  Unresolved requirement: Import-Package: org.apache.portals.bridges.struts; resolution:="optional"_  Unresolved requirement: Require-Capability: osgi.extender; filter:="(&(osgi.extender=jsp.taglib)(uri=http://java.sun.com/jstl/core_rt))"_ [Sanitized]
        at org.eclipse.osgi.container.Module.start(Module.java:429)
        at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:402)
        at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1252)
        at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1224)
        at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:512)
        at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:361)
        at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:313)

thumbnail
David H Nebinger, modificado 6 Anos atrás.

RE: Deployment error for migrated portlet in Liferay 7

Liferay Legend Postagens: 14916 Data de Entrada: 02/09/06 Postagens Recentes
pratik parekh:
To give you background, using SDK I am migrating from 6.2 to Liferay 7 by "Upgrade to Liferay Plugin SDK 7" option.
It is generating a war file of my spring portlet which has server dependency, I migrated the service as a liferay portlet and deployed successfully, but issue is with the portlet where it has service dependency.


Okay, that is a horse of a different color.

Spring portlets must be packaged as portlet wars because of their dependency on web application context loaders, etc. You'll have to be keeping these as portlet wars going forward.

When you say "I migrated the service", is that a Service Builder service? If so, I have a blog post that you might find useful re: using Service Builder services in Spring portlet wars: https://web.liferay.com/web/user.26526/blog/-/blogs/service-builder-6-2-migration. It covers the ways you can migrate 6.x Service Builder to Liferay 7 CE / LIferay DXP and access the services via a Spring portlet war.

Initially I made a mistake, my jar were commented in plugin package properties. After uncommenting, I could resolved many of the above errors, but now it stuck at below error.


There was actually some back and forth on this. At some point (I don't know if it is in GA3 or not), Liferay disabled the use of liferay-plugin-package.properties portal-dependency-jars property key. When building a portlet war, you should not be using this property, instead you should be supplying all dependency jars in your war's WEB-INF/lib directory.

The error messages that you're seeing are indicative of missing jars from WEB-INF/lib. If you restore the jars back in in there, your unresolved references and CNFEs should go away.

This won't apply to the Liferay 7 SDK, but if you leverage the Liferay Workspace, I have a blog up that will point out everything you need to do for a Spring portlet war in the workspace: https://web.liferay.com/web/user.26526/blog/-/blogs/creating-a-spring-mvc-portlet-war-in-the-liferay-workspace.

There's also a tip in there about keeping the WABs generated by Liferay during deployment. I've found this helpful to dig inside of the file to verify that all of my jars actually did make it into the WAB bundle correctly.









Come meet me at the 2017 LSNA!
pratik parekh, modificado 6 Anos atrás.

RE: Deployment error for migrated portlet in Liferay 7

New Member Postagens: 18 Data de Entrada: 09/09/14 Postagens Recentes
When you say "I migrated the service", is that a Service Builder service?


Yes, I have Service builder portlet and that was migrated successfully.

I have a blog post that you might find useful re: using Service Builder services in Spring portlet wars: https://web.liferay.com/web/user.26526/blog/-/blogs/service-builder-6-2-migration.


Thanks for this reference. It is very helpful.

The error messages that you're seeing are indicative of missing jars from WEB-INF/lib. If you restore the jars back in in there, your unresolved references and CNFEs should go away.


Yes, I have restored all jar to "WEB-INF/lib" folder but still I was getting error for those packages.

After that I have done trial and error approach and after trying different approaches I could resolve the error and found that the issue was because of JSP.

Going further in detail I was able to find that issue was because of the jstl liberary imported
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
I have removed this import and portlet is deployed successfully. I have changed import to following and it is working properly.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

Can't understand why but it is interesting how jsp import can create problem in deployment.

Thanks,
Pratik Parekh