Skip to content

Repository files navigation

iDempiere SOAP Webservices Plugin

An OSGi plugin for iDempiere that provides the SOAP/REST webservice API (/ADInterface). This functionality was extracted from iDempiere core and is distributed as an optional plugin.


Overview

This plugin exposes iDempiere's CompositeService and ModelADService SOAP endpoints, built on top of Apache CXF and Spring. When installed, it registers with core via the OSGi Declarative Services interfaces IModelFactory and IProcessFactory - no changes to iDempiere core are required.

Default endpoint: http://<host>:<port>/ADInterface/services


Repository Structure

idempiere-soap/
├── pom.xml                                    # Root aggregator (Tycho build)
├── org.idempiere.soap.parent/
│   └── pom.xml                                # Tycho config, target platform, P2 repos
├── org.idempiere.webservice.client/           # Standalone Maven-to-P2 step (run before Tycho)
│   └── pom.xml
├── org.idempiere.webservices.resources/       # CXF servlet config, XSD schemas, Spring context
├── org.idempiere.webservices/                 # Main SOAP bundle (Web-ContextPath: ADInterface)
├── org.idempiere.webservices-feature/         # Eclipse feature grouping all bundles + deps
└── org.idempiere.webservices.client-feature/  # Client-side feature (JAX-WS client libs)

Bundle responsibilities

Bundle Purpose
org.idempiere.webservices Main OSGi web bundle. Hosts the SOAP endpoints, model classes (MWebService, MWebServiceType), and OSGi service registrations. Deployed at /ADInterface.
org.idempiere.webservices.resources Helper bundle. Provides the CXF servlet config (cxf-servlet.xml), Spring ContextLoaderListener, and XSD schemas consumed by CXF at runtime.
org.idempiere.webservices-feature Eclipse feature grouping the two bundles above plus all third-party dependencies: Apache CXF 3.6.3, Spring 5.3.27, Jersey 2.34, HK2 2.6.1, xmlbeans 5.0.3, jettison 1.5.4, and Jakarta WS/SOAP APIs.
org.idempiere.webservices.client-feature Eclipse feature grouping the JAX-WS client libraries (jaxws-rt, JAXB-impl, SAAJ, GlassFish PFL, etc.) generated by the Maven-to-P2 step.
org.idempiere.webservice.client Not a Tycho module. A standalone Maven build using the Reficio p2-maven-plugin to pull JAX-WS client JARs from Maven Central and wrap them as OSGi bundles. Must run before the main Tycho build.

Prerequisites

  • Java 17+
  • Maven 3.9+
  • A built iDempiere core P2 repository (see iDempiere)

Building

The build has two steps because org.idempiere.webservice.client generates a local P2 site that Tycho consumes.

Step 1 — Generate the JAX-WS client P2 site

This wraps Maven Central JARs (JAX-WS RI, JAXB, SAAJ, etc.) into OSGi bundles. Only needs to re-run when xml.ws.version or any artifact version in that POM changes.

cd org.idempiere.webservice.client
mvn p2:site
cd ..

Output lands in org.idempiere.webservice.client/target/repository/.

Step 2 — Tycho build

mvn clean verify

By default the build assumes iDempiere core is cloned as a sibling folder:

parent-folder/
├── idempiere/          ← iDempiere core (must be built first: mvn clean verify)
└── idempiere-soap/     ← this repo

To override the core P2 repository path:

mvn clean verify \
  -Didempiere.core.repository.url=file:///absolute/path/to/idempiere/org.idempiere.p2/target/repository

To point to a remote P2 site (e.g., nightly build):

mvn clean verify \
  -Didempiere.core.repository.url=https://jenkins.idempiere.org/job/iDempiere14/lastSuccessfulBuild/artifact/org.idempiere.p2/target/repository

Installing into iDempiere

Option A — OSGi console (runtime install)

osgi> install file:///path/to/org.idempiere.webservices_14.0.0.jar
osgi> start <bundle-id>

Option B — P2 director (recommended for production)

Point the director at the feature's P2 update site and install org.idempiere.webservices.feature:

./eclipse/director \
  -repository https://your-p2-site/repository \
  -installIU org.idempiere.webservices.feature \
  -destination /path/to/idempiere/server

Configuration

After installation, configure web services through the iDempiere Application Dictionary:

  • Window: Web Service (WS_WebService)
  • Window: Web Service Type (WS_WebServiceType)
  • Process: Web Service Type - Create Parameters

The database tables (WS_WebService, WS_WebServiceType, WS_WebServiceMethod, WS_WebService_Para, WS_WebServiceFieldInput, WS_WebServiceFieldOutput, WS_WebServiceTypeAccess) are created by the core migration scripts already present in iDempiere. No additional migration scripts are needed.

Verify the plugin is active by browsing to http://<host>:<port>/ADInterface/services - you should see CompositeService and ModelADService listed with their WSDL links.


Documentation

  • Web Services Reference — full parameter reference for ModelADService and CompositeService methods, login data requirements, and field-level documentation.
  • Web Services First Steps — beginner walkthrough: creating a Web Service Type in the Application Dictionary, testing with SoapUI, and sending requests via curl and wget.
  • Web Services Security — how to configure roles, parameters (Free vs Constant), and access control on web service types.
  • NF1.0 Web Services Improvements — background on the original extraction from ADempiere, migration from XFire to CXF, and the introduction of CompositeService.

License

GPL v2 — same as iDempiere core.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages