When coding on any platform, you can sometimes run into issues that have no clear resolution. This can be particularly frustrating. If you have issues building, deploying, or running modules, you want to resolve them fast. These frequently asked questions and answers help you troubleshoot problems that arise based on the underlying OSGi platform, and then correct them.
Here are the troubleshooting sections:
Click a question to view the answer.
When developing Liferay Portal modules, you can declare optional package imports. An optional package import is one your module can use if it’s available, but can still function without it. Specifying optional package imports is straightforward.
Connecting to an application server’s JNDI data sources from Liferay Portal’s OSGi environment is almost the same as connecting to them from the Java EE environment. In an OSGi environment, the only difference is that you must use Liferay Portal’s class loader to load the application server’s JNDI classes.
- Unit testing
- Integration testing
- Functional testing
If one of your bundles imports a package that no other bundle in the Liferay OSGi runtime exports, Liferay Portal reports an unresolved requirement:
! could not resolve the bundles: … Unresolved requirement: Import-Package: … … Unresolved requirement: Require-Capability …
To satisfy the requirement, find a module that provides the capability, add it to your build file’s dependencies, and deploy it.
Liferay Portal initialization can fail while attempting to connect to a database server that isn’t ready. Configuring Liferay Portal startup to retry JDBC connections facilitates connecting Liferay Portal to databases.
Services and Components
Liferay Portal module components that use Service Builder use Dependency Manager (DM) and most other Liferay Portal module components use Declarative Services (DS). Gogo shell commands and tools help you find and inspect unsatisfied component references for DM and DS components.