OSGI HengSin

From ADempiere ERP Wiki

Jump to: navigation, search
Heng Sin seen here with two of his technology assistants

Contents

Project Space

  • Low Heng Sin improvement ADempiere-OSGi of implementation is done in another project space under Kenai.
  • His version is based on 3.6.0LTS
  • It is undergoing extensive refactoring by Heng Sin and testing review documentation by Redhuan D. Oon.
  • It is due for beta release as early as December-end, 2010.

Backyard Info

  • There is some newbie setup experience documented here.

Improvements

  • Lighter and smaller due to change of App Server to Tomcat instead of JBoss.
  • Workflow Editor boxes look more UML-like*.
  • Managing the crossing of IDs among different instances with OSGI HengSin/UUID Generator.
  • Exporting any Window in 2Pack format.

OSGI Roadmap - November 2010

  • Hengsin is doing more refactoring to the source in his Kenai repository.
    • Callout package is now a separate bundle. So is 2Pack but Hengsin wants to rewrite it when he can find time later.
    • The launching products are separated into 'adempiere-server' and 'adempiere-client'.
    • Buckminster, a Maven-like plugin in Eclipse is used to manage the import of plugins and builds.
    • The source is launchable from Eclipse for ZKAjax UI and SwingClient.**
    • More feedback on tests will be organised and reported in OSGI Hengsin/Beta and the Kenai project forum.

Preparing Your Eclipse IDE

ADempiere is now reduced to pure plugins - View of OSGI Project within Eclipse
  • You should use the latest Helios version with Equinox and Buckminster plugins udpated.

Getting the Kenai Project into your Eclipse

  • Firstly you should have got a HG Clone into your PC from the Mercurial repository.
  • In a fresh workspace of Eclipse, you create a new empty EquinoxTarget.platform (via Preferences>Plugin)***
  • Then Import Projects > Select an import source from Buckminster > Materialize from Buckminster.
    • Browse for the URL under the plugin org.adempiere.sdk.feature selecting the adempiere.cquery.
    • Eclipse will import from the web all the needed plugins into the new target platform folder you created.

Launching from Eclipse

Launch scripts already prepared to appear in Eclipse project

We first setup the properties file one time. You can do the following by giving the values that you already have for your current ADempiere setup in the same machine. So it will reuse your DB.

  • Under the Run As Configurations you will see some launch items.
  • Select install.app (CLI) or install.console.app (GUI) to set the properties file. This is similar to RUN_setup in ADempiere speak.
  • Launch server.product (RUN_Server2.sh in ADempiere speak) to get the Web UI working.
    • You now can access the Web UI using, http://<localhost>:<port>/ without the /admin suffix.
  • Launch swingclient.product to get the JavaClient up and running.

Build and deploying binary

Buckminster way from now on. Use it to clean and build the project or any bundles. Notice the expanded SDK tree which is used earlier.

There are two binaries or 'products' created from this OSGI project. One is adempiere-server for launching the server-side Web UI service and adempiere-client for launching the Java Client.

Server Side

  • Go to the plugin (at your Eclipse Package Explorer) right click at org.adempiere.server-feature
  • Select Buckminster > Invoke Action
  • Select create.product
  • In the Properties file line, select workspace again the same i.e. org.adempiere.server-feature drill down to buckminster.properties (or any other depending on your OS) and you should end up with something like: /Users/red1/Documents/workspace/hengsin~development/org.adempiere.server-feature/buckminster.properties in the field. Give it an OK.
  • Press OK to the Buckminster action dialog box and this will take some minutes to compile
  • Find under your desktop a buckminster.output folder
    • Look for a particular folder that contains adempiere-server folder. (hint: org.adempiere.server_1.0.0-eclipse.feature).
    • Put that to your Applications-Home (server-side) location and continue in ADempiere speak.

Client Side

  • Go to the plugin (at your Eclipse Package Explorer) right click at org.adempiere.ui.swing-feature
  • Select Buckminster > Invoke Action
  • Select create.product
  • In the Properties file line, select workspace again the same i.e. org.adempiere.ui.swing-feature drill down to buckminster.properties (or any other depending on your OS) and you should end up with something like: /Users/red1/Documents/workspace/hengsin~development/org.adempiere.server-feature/buckminster.properties in the field. Give it an OK.
  • Press OK to the Buckminster action dialog box and this will take some minutes to compile
  • Find under your desktop a buckminster.output folder
    • Look for a particular folder that contains adempiere-client folder. (hint: org.adempiere.ui.swing_1.0.0-eclipse.feature).
    • Put that to your Applications-Home (client-side) location and continue in ADempiere speak.

Launching from Binary

OSGI console view. You can examine each bundle's status and control them individually

adempiere-server

  • You should have the following shell or batch executables in your adempiere-server (this is now your ADempiere_Home but server side).
    • setup.sh (previously RUN_setup.sh)
    • setup-alt.sh (this works better in my case)
    • adempiere-server.sh (RUN_server2.sh)
    • adempiere-client.sh (RUN_Adempiere.sh)
    • console-setup.sh
  • You may need to give chmod 777 to your HOME directory first
  • You have to run setup-alt to get your tomcat.server.xml settings right.
  • When you ./adempiere-server.sh you will get to run the Web UI as http://<localhost>:<port>/
  • If it does not run you can within the CLI Terminal window look for OSGI bundle status by keying in 'ss'.
    • Look for the bundle number of the org.adempiere.ui or ..zk bundles****.
    • Key in start <bundle no.> and try the Web UI again.

adempiere-client

  • You should have the adempiere.client.sh or .bat in your <ADempiere_Home/client side>
  • You just run this shell accordingly similar to the advice for server side.

Issues

  • As of today when launching adempiere-client binary i have all the adempiere bundles not resolved and when started will give such The bundle "org.adempiere.ui_1.0.0.v20101116-0531 [58]" could not be resolved. Reason: Missing Constraint: Bundle-RequiredExecutionEnvironment: JavaSE-1.6
    • There is documentation on this from the web and i will spend some time reading first. - Redhuan D. Oon 13:56, 17 November 2010 (UTC)
      • This is solved (for MacBook users) by going to your System Preferences > Java > and putting the 1.6 as top of list. So this is solved - Redhuan D. Oon 00:34, 20 November 2010 (UTC)
  • Other issues of launching can be resolved by checking and validating the plugins at the launch config window, ensuring args has -console added.

Latest Status - Kenai Revision: 6600

A better idea upfront - Redhuan D. Oon tuning in to the Architect, Low Heng Sin
  • This project is proven launchable from Eclipse and from binaries. (If it works on a not-so-Java-centric MacBook, it can work anywhere else).
  • ZK Ajax UI seems to work as far as any trashing i done so far - new windows, reports, views, accts, JSR223 Rules, etc.
  • Java Client works also as above just that the Accounts Viewer definitely get stuck but exitable. (will confirm from a Windows platform later).
    • Debugged this is probably caused by 'IncompatibleClassChangeError' on JTable. (in progress). - Redhuan D. Oon 02:56, 21 November 2010 (UTC)
    • Found out that this is due to bundle split of the org.compiere.report.core between BASE and UI.SWING bundles. Temporary refactoring workaround by moving the entire BASE.org.compiere.report.core to UI.SWING. Now the JTable works for Account Viewer. - Redhuan D. Oon 14:41, 21 November 2010 (UTC)
  • Log file or log tracing has an issue. It stops at the message 'Adempiere Log (CLogConsole)'.
    • False alarm. I traced it to find out that the Log file is written at /Users/red1/Log/<name of log file> as timestamped in *** 2010-12-02 20:38:10.527 Adempiere Log (CLogConsole) ***
    • However the checkbox to create TraceFile in Preferences has no effect. This is non critical issue. The Kenai project is thus regarded very testable - Redhuan D. Oon 12:55, 2 December 2010 (UTC)
  • Meanwhile all further issues and related version changes will be tracked here at OSGI_HengSin/Issues. It also contain related documented learning experience.
  • I have to give a B+ for this project even though it is at alpha stage.

FootNotes

*Execute this code in your DB to get the Workflow Editor view rightly positioned:

UPDATE ADEMPIERE.AD_WF_Node SET xposition = 1, yposition = 1; 


**Testing is done by basing on the DB of a working ADempiere 3.6.0LTS. So you should have that running in order to follow the actions here.
***You have to create an empty folder preferably same name as your target.platform in the workspace project folder. During creation in Preferences>Plugin>TargetPlatform>Add>Empty>Directory, point your target.platform to that folder. During materializing you will notice that folder getting populated (immediately you get artifacts.xml and later, plugin folder).

If it times out with failure to read from remote error, and your Package Explorer is still empty, repeat the Import Projects step and it will resume from where it stops.


****There may be other non-started bundles you need to manually START:


For adempiere-server
  • org.adempiere.tomcat.config
  • org.eclipse.gemini.web.tomcat
  • org.adempiere.webstore

For adempiere-client (add -console arg in the adempiere-client.sh if it is not there)
  • org.eclipse.core.runtime
  • org.eclipse.equinox.event
  • org.eclipse.equinox.ds
  • org.eclipse.equinox.services
  • org.adempiere.base

Note to MacBook users

  • Apple Mac OSX has an issue with launching X on 1st thread and this is solved by removing the -ws ${target.ws} argument in the launch script. (Hengsin)
  • When debugging from Eclipse, you may need to hack the Tomcat.server.xml to point to your port 8088, and https to 4443
    • Resolved in latest build. Tomcat's server.xml is properly set during install.app.
    • To check, go to org.adempiere.tomcat.config/META-INF/tomcat/server.xml.

Full Beta Testing

Download

Links

Volunteers?

  • If you wish to assist please sign in below:
Personal tools