Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failing OSGi Portlets on Liferay CE 7.3.6 GA7 or later #12504

Closed
mikke-alekstra opened this issue Jan 5, 2022 · 7 comments
Closed

Failing OSGi Portlets on Liferay CE 7.3.6 GA7 or later #12504

mikke-alekstra opened this issue Jan 5, 2022 · 7 comments

Comments

@mikke-alekstra
Copy link

I did some testing with OSGi Portlets on Liferay 7.

For some reason Liferay CE 7.3.6 GA7 or later failed with error
Failed to load the bootstrap javascript: /o/vaadin-x.y.z/VAADIN/vaadinBootstrap.js?v=x.y.z
where x.y.z was the Vaadin version in use.

The test portlet was the basic Hello World portlet using Maven vaadin-archetype-liferay-portlet archetype.

Browser cache/history was cleared between each test.

Passed tests:
Liferay CE 7.3.3 GA4, Vaadin 8.10-8.14
Liferay CE 7.3.4 GA5, Vaadin 8.10-8.14
Liferay CE 7.3.5 GA6, Vaadin 8.10-8.14

Failed tests:
Liferay CE 7.3.6 GA7, Vaadin 8.10-8.14
Liferay CE 7.3.7 GA8, Vaadin 8.10-8.14
Liferay CE 7.4.0 GA1, Vaadin 8.13, 8.14
Liferay CE 7.4.1 GA2, Vaadin 8.13, 8.14
Liferay CE 7.4.2 GA3, Vaadin 8.14
Liferay CE 7.4.3.4 GA4, Vaadin 8.14

Setup:
Debian GNU/Linux 10 (buster)
OpenJDK 11
Firefox 78.15.0esr
Standard Liferay Docker images

@TatuLund
Copy link
Contributor

TatuLund commented Jan 5, 2022

Thanks for the effort of extensive testing. This is a good starting point.

Did you observe any notable errors or warnings logged in server log?

@mikke-alekstra
Copy link
Author

mikke-alekstra commented Jan 5, 2022

Sorry, forgot to mention this in the original post.

I think the 404 error was the only one I got. Such as:
liferay-dev_1 | 2022-01-05 12:18:45.751 WARN [http-nio-8080-exec-4][code_jsp:173] {code="404", msg="ProxyServlet: /vaadin-8.12.4/VAADIN/vaadinBootstrap.js", uri=/o/vaadin-8.12.4/VAADIN/vaadinBootstrap.js}

In addition, with Vaadin 8.14.3 using jsoup-1.14.3 there was a bit strange behaviour when deploying jar-files:

I expected the order of deployment to be:

  1. jsoup-1.14.3.jar
  2. gentyref-1.2.0.vaadin1.jar
  3. gwt-elemental-2.8.2.vaadin2.jar
  4. vaadin-shared-8.14.3.jar
  5. vaadin-server-8.14.3.jar
    (+ the rest)

After deploying jsoup:

liferay-dev_1  | 2022-01-05 12:46:22.118 INFO  [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][AutoDeployDir:271] Processing jsoup-1.14.3.jar
liferay-dev_1  | 2022-01-05 12:46:28.387 INFO  [fileinstall-directory-watcher][BundleStartStopLogger:46] STARTED org.jsoup_1.14.3 [1433]

However after deploying vaadin-server:

liferay-dev_1  | 2022-01-05 12:48:22.147 INFO  [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][AutoDeployDir:271] Processing vaadin-server-8.14.3.jar
liferay-dev_1  | 2022-01-05 12:48:29.177 ERROR [fileinstall-directory-watcher][DirectoryWatcher:1160] Unable to start bundle: file:/opt/liferay/osgi/modules/vaadin-server-8.14.3.jar
liferay-dev_1  | com.liferay.portal.kernel.log.LogSanitizerException: org.osgi.framework.BundleException: Could not resolve module: com.vaadin.server [1437]_  Unresolved requirement: Import-Package: com.vaadin.sass.internal; resolution:="optional"_  Unresolved requirement: Import-Package: org.atmosphere.cache; version="2.4.30.vaadin4"; resolution:="optional"_  Unresolved requirement: Import-Package: org.atmosphere.client; version="2.4.30.vaadin4"; resolution:="optional"_  Unresolved requirement: Import-Package: org.atmosphere.cpr; version="2.4.30.vaadin4"; resolution:="optional"_  Unresolved requirement: Import-Package: org.atmosphere.handler; version="2.4.30.vaadin4"; resolution:="optional"_  Unresolved requirement: Import-Package: org.atmosphere.util; version="2.4.30.vaadin4"; resolution:="optional"_  Unresolved requirement: Import-Package: org.jsoup; version="[1.14.0,2.0.0)"_ [Sanitized]
liferay-dev_1  | 	at org.eclipse.osgi.container.Module.start(Module.java:444) ~[org.eclipse.osgi.jar:?]
liferay-dev_1  | 	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:428) ~[org.eclipse.osgi.jar:?]
liferay-dev_1  | 	at com.liferay.portal.file.install.internal.DirectoryWatcher._startBundle(DirectoryWatcher.java:1143) [bundleFile:?]
liferay-dev_1  | 	at com.liferay.portal.file.install.internal.DirectoryWatcher._startBundles(DirectoryWatcher.java:1176) [bundleFile:?]
liferay-dev_1  | 	at com.liferay.portal.file.install.internal.DirectoryWatcher._process(DirectoryWatcher.java:1038) [bundleFile:?]
liferay-dev_1  | 	at com.liferay.portal.file.install.internal.DirectoryWatcher.run(DirectoryWatcher.java:272) [bundleFile:?]

So I removed jsoup:
liferay-dev_1 | 2022-01-05 12:50:09.414 INFO [fileinstall-directory-watcher][BundleStartStopLogger:49] STOPPED org.jsoup_1.14.3 [1433]
(+ the vaadin-server dependency error)

And re-deployed jsoup:

liferay-dev_1  | 2022-01-05 12:50:43.169 INFO  [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][AutoDeployDir:271] Processing jsoup-1.14.3.jar
liferay-dev_1  | 2022-01-05 12:50:49.702 INFO  [Refresh Thread: Equinox Container: 4f33cc77-951f-4bc1-855f-faab822c7f7a][BundleStartStopLogger:46] STARTED com.vaadin.server_8.14.3 [1437]
liferay-dev_1  | 2022-01-05 12:50:49.718 INFO  [fileinstall-directory-watcher][BundleStartStopLogger:46] STARTED org.jsoup_1.14.3 [1438]

This did not happen with Vaadin-releases using jsoup-1.11.2.

@TatuLund
Copy link
Contributor

TatuLund commented Jan 7, 2022

We tried to investigate commit history of Liferay (which is by the way hard) to find anything that would fit, but so-far we did not find anything yet.

@mikke-alekstra
Copy link
Author

FYI, attached bundle information for vaadin-shared and vaadin-server. LR7.3.5 (works), LR7.3.6 (does not work).

For LR7.3.6 vaadin-server (does not work)
{org.osgi.service.http.context.ServletContextHelper}={service.id=21949, osgi.http.whiteboard.context.name=com.vaadin, service.bundleid=1359, service.scope=bundle, osgi.http.whiteboard.context.path=/vaadin-8.13.3}
is missing from the Services in use -list.

LR7.3.5.txt
LR7.3.6.txt

@johannest
Copy link
Contributor

johannest commented Jan 13, 2022

I was now able to replicate the issue with Liferay Docker (liferay/portal:7.3.6-ga7) and vaadin-archetype-liferay-portlet. I got the similar error as you: Failed to load the bootstrap javascript: /o/vaadin-8.14.3/VAADIN/vaadinBootstrap.js?v=8.14.3 This took a while since our documentation was already outdated regarding blade client etc.
My steps to reproduce:

  1. docker pull liferay/portal:7.3.6-ga7
  2. Create liferay deploy folder locally e.g. "C:\dev\lr\deploy"
  3. docker run -it -p 8080:8080 -p 11311:11311 -v /mnt/c/dev/lr:/mnt/liferay liferay/portal:7.3.6-ga7
  4. Install Liferay workspace to get e.g. blade client
  5. Create project from vaadin-archetype-liferay-portlet
  6. Upgrade projects dependencies: <liferay.kernel.version>9.30.0</liferay.kernel.version>, osgi.core\8.0.0, osgi.annotation\8.0.1, osgi.cmpn\7.0.0
  7. Build the project
  8. Use blade client to install resources mentioned here: https://vaadin.com/docs/v8/framework/portal/portal-osgi/#portal.osgi.portlet The correct syntax is now blade sh install [url] and then blade sh start [bundle id]
  9. Deploy the target/liferay-portlet-v8-1.0.jar to local Liferay deploy folder (e.g. C:\dev\lr\deploy)

@johannest
Copy link
Contributor

Tested this out now with liferay/portal:7.3.6-ga7 and locally built Vaadin 8.16.0. I had some troubles with jsoup-1.14.3.jar bundle: it was importing 1.10.2 version of itself. Got that resolved by modifying its MANIFEST_MF locally: removed all jsoup related Import-Packages. In addition I had to install following additional bundles: shi-core-6.1.4.jar, jna-5.10.0.jar, and jna-platform-5.10.0.jar. Before vaadin-server bundle was able to start. Unfortunately Vaadin portlet still fails when added to a page: same Failed to load the bootstrap alert. I'll try next few newer Liferay images

@johannest
Copy link
Contributor

I was able to get this working with Portal 7.3.7 CE GA8. It still shows the alert right after adding the portlet to page, but portlet works after publish.
Used docker.io/liferay/portal 7.3.7-ga8 image with Podman.
In portlet project: <liferay.kernel.version>9.36.0</liferay.kernel.version> and locally built V8.16.0 from 'master' branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants