Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EclipseLink/Development/DBWS"

(Auto-generation of a DBWS service)
(Features)
 
(212 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<div style="margin:5px;float:right;border:1px solid #000000;padding:5px">__TOC__</div>
+
__NOTOC__
== EclipseLink Database Web Services ==
+
== Welcome to the Development Home page for the <b>EclipseLink Database Web Services (DBWS)</b> component ==
 +
This page displays information about the current state of DBWS development.
 +
{{:EclipseLink/Development/DBWS/RoadMap}}
 +
=== Supported Use-Cases ===
 +
* [[EclipseLink/Development/DBWS/JDBCUseCases|Supported Use-Cases for non-Oracle Platforms]]
 +
* [[EclipseLink/Development/DBWS/OracleUseCases|Supported Use-Cases for Oracle Platforms]]
  
== Document History ==
+
=== Features ===
{|{{BMTableStyle}}
+
Individual wiki pages for various DBWS features
|-{{BMTHStyle}}
+
* [[EclipseLink/Development/DBWS/NamingConventionTransformer|Custom Schema Naming with NamingConventionTransformer]]
! Date
+
** [[EclipseLink/Development/DBWS/OptLock|Auto-detect Optimistic locking]]
! Author
+
* [[EclipseLink/Development/DBWS/AdvancedJDBCTypesThruJPub|Support advanced JDBC types]]
! Version Description & Notes
+
** [[EclipseLink/Development/DBWS/ImprovedDataDictionaryQueries|Database Metadata Model classes]]
|-
+
* [[EclipseLink/Development/DBWS/DynamicPersistence|How DBWS uses Dynamic Persistence]]
| 080821
+
* [[EclipseLink/Development/DBWS/PLSQLStoredFunctions|Support complex PL/SQL parameters (and return arg) for StoredFunctions]]
| Mike Norman
+
* [[EclipseLink/Development/DBWS/OSGi|Support DBWS in an OSGi environment]]
| 1.0 (brought over from TopLink FS 14737 wiki document)
+
|}
+
  
== Overview ==
+
=== [[EclipseLink/Development/Testing/DBWS|DBWS Testing]] ===
The goal of DBWS is to enable simple and efficient access to relational database artifacts via a Web Service. DBWS extends EclipseLink's core capabilities while leveraging existing components (ORM, OXM).
+
  
EclipseLink DBWS has two parts: a design-time tooling component and a runtime provider component that takes a service descriptor (along with related deployment artifacts) and realizes it as a JAX-WS 2.0 Web Service. The runtime provider uses EclipseLink to bridge between the database and the XML SOAP Messages used by a Web Service client.
+
=== [[EclipseLink/Development/DBWS/FunctionalSpecification| Original DBWS Functional Specification and High-level Design documentation]] ===
  
An DBWS service may be comprised of any number of '''operations''' of which there are 4 types:
+
=== [[EclipseLink/Development/DBWS/Oldstatuslogs| Old status logs]] ===
# Insert - inserts into the database persistent entities described by an XML document.
+
# Update - updates database persistent entities described by an XML document.
+
# Delete - removes from the database persistent entities described by an XML document.
+
# Query - retrieves from the database persistent entities described by an XML document. <br>Selection criteria for Query operations can be specified by:
+
#* custom <tt>SQL</tt>
+
#* Stored Procedures
+
#* TopLink Expressions
+
#* JP-QL
+
 
+
The XML documents used by operations conform to an XML Schema Definition <tt>.xsd</tt> document auto-generated by the design-time tooling. Alternatively, if no <tt>.xsd</tt> is available, a pre-defined simple XML format (SXF) can be used.
+
 
+
== Concepts ==
+
XML-to-Relational
+
 
+
A flexible component that maps between a database's relational structure(s) and XML's hierarchical structure{excerpt}. The use of EclipseLink's ORM and OXM features provides the basis for a powerful '''bridge''' between the two. To date, the only concrete realization of an XRM bridge is EclipseLink DBWS.
+
 
+
[[Image:XRRunTime.png]]
+
 
+
== Requirements ==
+
The requirements of this feature are focused around the simple and efficient access to relational database artifact(s) via a Web Service. The use of EclipseLink ORM provides cross-database support and caching for performance; the use of EclipseLink OXM provides XML mapping flexibility. The goal is to simply realize a Web Service while allowing expert users to use advanced EclipseLink features.
+
 
+
=== Configuration ===
+
The metadata for an DBWS service is contained in an easy-to-read service descriptor XML file. The internal configuration requirements are minimal and omitted fields have simple defaults, allowing for both auto-generation by tools or manual editing. Additional EclipseLink metadata - ORM and OXM maps, customizations - will be handled using existing EclipseLink <tt>sessions.xml</tt> capabilities.
+
 
+
=== XML Schema Definition (.xsd) ===
+
A DBWS service requires an XML Schema Definition <tt>.xsd</tt> file to specify how returned information from the database is shaped. The EclipseLink OXM map handles converting information from the database to XML, giving the user access to the complete range of EclipseLink Object-to-XML mapping capabilities. If no schema is provided by the user, a pre-defined Simple XML Format (SXF) can be used.
+
<blockquote>
+
SXF uses information only available at the time of query execution to build the XML element-tag names; thus, these XML documents cannot be validated against any schema.
+
</blockquote>
+
 
+
=== Auto-generation of a DBWS service ===
+
The design-time tooling will auto-generate a DBWS service, creating the service descriptor and all required deployment artifacts (see section [[tbd]] for more details).
+
 
+
=== Use of pre-existing EclipseLink ORM and OXX maps ===
+
A DBWS service may be constructed using pre-existing EclipseLink ORM and OXM maps (both Project classes and Project deployment XML are supported) with the following naming convention:
+
# identical case-sensitive Project names:
+
<source lang="xml">
+
      <?xml version="1.0" encoding="UTF-8"?>
+
      <toplink:object-persistence version="Oracle TopLink - 11g Release 1 (11.1.1.0.0) (Build YYMMDD)"
+
        xmlns:opm="http://xmlns.oracle.com/ias/xsds/opm"
+
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+
        xmlns:toplink="http://xmlns.oracle.com/ias/xsds/toplink"
+
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
        >
+
        <opm:name>example</opm:name>
+
</source>&nbsp;or
+
<source lang="java">
+
      import oracle.toplink.sessions.Project;
+
      public class SomeORProject extends Project {
+
        public SomeORProject () {
+
          setName("Example");
+
          ...
+
      }
+
      public class SomeOXProject extends Project {
+
        public SomeOXProject () {
+
          setName("Example");
+
          ...
+
      }
+
</source>
+
# identical case-sensitive aliases for Descriptors that are common between the projects:
+
<source lang="xml">
+
      <class-mapping-descriptor xsi:type="eclipselink:relational-class-mapping-descriptor">
+
        <class>some.package.SomeClass</class>
+
        <alias>SomeAlias</alias>
+
      ...
+
      <class-mapping-descriptor xsi:type="eclipselink:xml-class-mapping-descriptor">
+
        <class>some.package.SomeClass</class>
+
        <alias>SomeAlias</alias>
+
</source>
+
 
+
Any existing named queries from the EclipseLink ORM map may be exposed as query operations for the EclipseLink DBWS service; additional Insert/Update/Delete/Query operations can be added. Pre-existing domain classes can be bundled with the service so that they are available at runtime.
+
 
+
== Open Issues ==
+
 
+
This section lists the open issues that are still pending that must be decided prior to fully implementing this project's requirements.
+
 
+
{|{{BMTableStyle}}
+
|-{{BMTHStyle}}
+
! Issue #
+
! Owner
+
! Description / Notes
+
|-
+
|
+
|
+
|
+
|}
+

Latest revision as of 13:48, 11 August 2010

Welcome to the Development Home page for the EclipseLink Database Web Services (DBWS) component

This page displays information about the current state of DBWS development.

DBWS Road Map

Future

NB - some items not currently targetted to a specific release

  • bug 362585 - DBWS: Oracle DDL Parser should resolve types from other schemas
  • bug 406017 - DBWS: Should have option to packageAs EAR
  • bug 375558 - DBWS: Builder XML doesn't allow to specify a resource instead of a JNDI datasource
  • bug 300398 - Add "get(String, Class)" method to DynamicEntity
  • AQ Web Services (bug 322950)
    • Investigate how to support; add usecase to DBWS section of User Guide
    • Highlighted as lower priority
  • Development tooling support through IDEs

2.6

  • XMLEntityMappings generation from DDLParser meta-model
  • DBWSBuilder should bootstrap from XMLEntityMappings
  • Application Server Testing (note that the server tests are also run in 2.5)
    • The application server tests currently run are relatively simple. More complex tests should be added, such as:
      1. Advanced Oracle types, i.e. ObjectType, VArray, etc.
      2. PL/SQL Record & Collection
      3. Ref Cursor
      4.  %TYPE, %ROWTYPE
    • We currently test against the following application servers:
      1. WebLogic
      2. GlassFish
      3. JBoss
      4. WebSphere
    • The following server tests are run nightly:
      1. SimpleTable
      2. SimpleSQL
      3. SimpleSP
      4. SimplePLSQL
      5. Mtom
      6. InlineBinary
      7. AttachedBinary
      8. LegacySimpleTable (tests legacy deployment XML; not run against JBoss)

2.5


2.4


2.3

  • Build environment
    • Plan to include DBWS feature in SDK bundle made available in p2 repository

Completed in EclipseLink2.3

  • EclipseLink should support complex PL/SQL arguments for Stored Functions
  • bug 332221 Support Stored Procs returning multiple rowsets.
    • Brand new core capability. Only for those platforms (Sybase, MySQL) that support it
  • DBWS Server tests
    • expand existing WLS server tests to run on WAS, JBoss and Glassfish
    • TBD: expand test coverage - what additional tests are useful?
  • bug 344341 Support complex PL/SQL arguments for Stored Functions
  • bug 303333 Handle overloaded Stored Procedure/Functions as WSDL operations

2.2

2.1

  • accommodate internal changes for AttributeChangeTracking
  • support DBWSBuilder-generated JAX-WS Provider on JRockit
  • stop DBWSBuilder from truncating GROUP BY/ORDER BY clauses
  • DBWSBuilder supports Eclipse WTP Dynamic Web Project structure

2.0.1

  • align DBWS internal implementation with new Dynamic Persistence features
  • DBWSBuilder utility auto-detect Optimistic Lock field
  • fix issue with JDBC metadata and overloaded Stored Functions
  • Support MTOM attachments
  • fix Web service faults: contain better server-side root cause information

1.2

  • For OraclePlatform, support advanced PL/SQL datatypes (records, collections, mixture of the two) as arguments to Stored Procedures
    • need compatible JDBC 'shadow' types to align with PL/SQL types
  • For OraclePlatform, support complex JDBC datatypes (objects, varrays, mixture of the two) as arguments to Stored Procedures
  • Fix WSDL inline-schema to support above complex args
  • Add support for SOAP 1.2
  • Fix Delete operation (part of table-based CRUD): use only PK fields, not whole instance
  • Use nillable="true" to represent database null
  • DBWSBuilder utility to produce DDL for the compatible JDBC shadow types

1.1

  • Deploy to JAX-WS 2.n complaint server (WebLogic 10)
  • For OraclePlatform, support simple PL/SQL datatypes (PLSINTEGER, BOOLEAN, etc) as arguments to Stored Procedures
  • Improve server-side exception handling

1.0

The focus is on providing capabilities based upon the 3 types of database artifacts:

  1. table: CRUD lifecycle
  2. Stored Procedure: specialized queries
  3. Result set: returned from SQL SELECT queries

Supported Use-Cases

Features

Individual wiki pages for various DBWS features

DBWS Testing

Original DBWS Functional Specification and High-level Design documentation

Old status logs

Back to the top