Jump to: navigation, search

Difference between revisions of "EclipseLink/UserGuide/DBWS/Creating from an Overloaded Stored Procedure"

m (New page: {{EclipseLink_UserGuide |info=y |toc=n |eclipselink=y |eclipselinktype=DBWS }} ==Creating from an Overloaded PL/SQL Stored Procedure == Starting in release 2.3, EclispeLink DBWS can creat...)
 
m (Replacing page with ''''Warning This page is obsolete. Please see ''[http://www.eclipse.org/eclipselink/documentation/ Developing Persistence Architectures Using Eclip...')
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{EclipseLink_UserGuide
+
'''[[Image:Elug_draft_icon.png|Warning]] This page is obsolete. Please see ''[http://www.eclipse.org/eclipselink/documentation/ Developing Persistence Architectures Using EclipseLink Database Web Services]'' for current information.'''
|info=y
+
|toc=n
+
|eclipselink=y
+
|eclipselinktype=DBWS
+
}}
+
 
+
==Creating from an Overloaded PL/SQL Stored Procedure ==
+
Starting in release 2.3, EclispeLink DBWS can create a web service that exposes multiple PL/SQL stored procedures. Instead of specifying all the stored procedures within the DBWS builder file, you can specify a ''single'' procedure name and "overload" it with different parameters.
+
 
+
'''Note''': This feature requires a database, such as Oracle, that supports overloading.
+
 
+
 
+
===Example===
+
In this example, the stored procedure contains different parameters:
+
 
+
 
+
CREATE PROCEDURE P(SIMPLARRAY IN TBL1, FOO IN VARCHAR2) AS
+
BEGIN
+
  -- 2 arguments SIMPLARRAY and FOO
+
END P;
+
CREATE PROCEDURE P(SIMPLARRAY IN TBL1, FOO IN VARCHAR2, BAR IN VARCHAR2) AS
+
BEGIN
+
  -- (same name 'P') 3 arguments SIMPLARRAY, FOO and BAR
+
END P;
+
 
+
EclipseLink DBWS supports any combination of the '''IN''', '''OUT''' and '''IN OUT''' arguments.
+
 
+
Type TBL1 is defined in PL/SQL Package SOMEPACKAGE as follows:
+
CREATE OR REPLACE PACKAGE SOMEPACKAGE AS
+
  TYPE TBL1 IS TABLE OF VARCHAR2(111) INDEX BY BINARY_INTEGER;
+
  PROCEDURE P(SIMPLARRAY IN TBL1, FOO IN VARCHAR2);
+
  PROCEDURE P(SIMPLARRAY IN TBL1, FOO IN VARCHAR2, BAR IN VARCHAR2);
+
END SOMEPACKAGE;
+
 
+
The DBWSBuilder utility requires a DBWS configuration file as input.
+
<?xml version="1.0" encoding="UTF-8"?>
+
<dbws-builder xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
  <properties>
+
    <property name="projectName">testOverloadedProcedure</property>
+
    ... database properties
+
  </properties>
+
  <plsql-procedure
+
    name="overloadedProcedure"
+
    catalogPattern="SOMEPACKAGE"
+
    procedurePattern="P"
+
  />
+
</dbws-builder>
+
 
+
prompt > dbwsbuilder.cmd -builderFile dbws-builder.xml -stageDir output_directory -packageAs wls testEcho.war
+
 
+
where
+
 
+
    * dbws-builder.xml is the DBWS builder XML file above
+
    * output_directory is the output directory for the generated files
+
    * -packageAs specifies the platform on which the web service will be deployed
+
 
+
When generating queries and the WSDL when overloaded procedures are present, an index is used to uniquely identify each procedure. The index starts at 1, and incremented for each overloaded procedure. The generated eclipselink-dbws.wsdl for this example follows.  :
+
<wsdl:definitions
+
    name="plsqloverloadService"
+
    targetNamespace="urn:plsqloverloadService"
+
    xmlns:ns1="urn:plsqloverload"
+
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+
    xmlns:tns="urn:plsqloverloadService"
+
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+
    >
+
    <wsdl:types>
+
        <xsd:schema elementFormDefault="qualified" targetNamespace="urn:plsqloverloadService" xmlns:tns="urn:plsqloverloadService"
+
            xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
            <xsd:import namespace="urn:plsqloverload" schemaLocation="eclipselink-dbws-schema.xsd"/>
+
            <xsd:complexType name="p1ResponseType">
+
                <xsd:sequence>
+
                    <xsd:element name="result">
+
                        <xsd:complexType><xsd:sequence><xsd:any/></xsd:sequence></xsd:complexType>
+
                    </xsd:element>
+
                </xsd:sequence>
+
            </xsd:complexType>
+
            <xsd:complexType name="p1RequestType">
+
                <xsd:sequence>
+
                    <xsd:element name="SIMPLARRAY" type="ns1:SOMEPACKAGE_TBL1"/>
+
                    <xsd:element name="FOO" type="xsd:string"/>
+
                </xsd:sequence>
+
            </xsd:complexType>
+
            <xsd:complexType name="p2ResponseType">
+
                <xsd:sequence>
+
                    <xsd:element name="result">
+
                        <xsd:complexType><xsd:sequence><xsd:any/></xsd:sequence></xsd:complexType>
+
                    </xsd:element>
+
                </xsd:sequence>
+
            </xsd:complexType>
+
            <xsd:complexType name="p2RequestType">
+
                <xsd:sequence>
+
                    <xsd:element name="SIMPLARRAY" type="ns1:SOMEPACKAGE_TBL1"/>
+
                    <xsd:element name="FOO" type="xsd:string"/>
+
                    <xsd:element name="BAR" type="xsd:string"/>
+
                </xsd:sequence>
+
            </xsd:complexType>
+
            <xsd:element name="p2" type="tns:p2RequestType"/>
+
            <xsd:element name="p1" type="tns:p1RequestType"/>
+
            <xsd:element name="p1Response" type="tns:p1ResponseType"/>
+
            <xsd:element name="p2Response" type="tns:p2ResponseType"/>
+
        </xsd:schema>
+
    </wsdl:types>
+
    <wsdl:message name="p2Request"><wsdl:part name="p2Request" element="tns:p2"/></wsdl:message>
+
    <wsdl:message name="p2Response"><wsdl:part name="p2Response" element="tns:p2Response"/></wsdl:message>
+
    <wsdl:message name="p1Request"><wsdl:part name="p1Request" element="tns:p1"/></wsdl:message>
+
    <wsdl:message name="p1Response"><wsdl:part name="p1Response" element="tns:p1Response"/></wsdl:message>
+
    <wsdl:portType name="plsqloverloadService_Interface">
+
        <wsdl:operation name="p2">
+
            <wsdl:input message="tns:p2Request"/>
+
            <wsdl:output message="tns:p2Response"/>
+
        </wsdl:operation>
+
        <wsdl:operation name="p1">
+
            <wsdl:input message="tns:p1Request"/>
+
            <wsdl:output message="tns:p1Response"/>
+
        </wsdl:operation>
+
    </wsdl:portType>
+
    <wsdl:binding name="plsqloverloadService_SOAP_HTTP" type="tns:plsqloverloadService_Interface">
+
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+
        <wsdl:operation name="p2">
+
            <soap:operation soapAction="urn:plsqloverloadService:p2"/>
+
            <wsdl:input><soap:body use="literal"/></wsdl:input>
+
            <wsdl:output><soap:body use="literal"/></wsdl:output>
+
        </wsdl:operation>
+
        <wsdl:operation name="p1">
+
            <soap:operation soapAction="urn:plsqloverloadService:p1"/>
+
            <wsdl:input><soap:body use="literal"/></wsdl:input>
+
            <wsdl:output><soap:body use="literal"/></wsdl:output>
+
        </wsdl:operation>
+
    </wsdl:binding>
+
    <wsdl:service name="plsqloverloadService">
+
        <wsdl:port name="plsqloverloadServicePort" binding="tns:plsqloverloadService_SOAP_HTTP">
+
            <soap:address location="REPLACE_WITH_ENDPOINT_ADDRESS"/>
+
        </wsdl:port>
+
    </wsdl:service>
+
</wsdl:definitions>
+

Latest revision as of 12:19, 30 January 2013

Warning This page is obsolete. Please see Developing Persistence Architectures Using EclipseLink Database Web Services for current information.