|
|
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, EclipseLink 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:
| + | |
− | | + | |
− | <source lang="plsql">
| + | |
− | 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;
| + | |
− | </source>
| + | |
− | | + | |
− | EclipseLink DBWS supports any combination of the '''IN''', '''OUT''' and '''IN OUT''' arguments.
| + | |
− | | + | |
− | Type '''TBL1''' is defined in PL/SQL Package '''SOMEPACKAGE''' as follows:
| + | |
− | <source lang="plsql">
| + | |
− | 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;
| + | |
− | </source>
| + | |
− | | + | |
− | The''' DBWSBuilder''' utility requires a DBWS configuration file as input, as shown here:
| + | |
− | | + | |
− | <source lang="xml">
| + | |
− | <?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>
| + | |
− | </source>
| + | |
− | | + | |
− | Use this command to execute the '''DBWSBuilder''':
| + | |
− | prompt > dbwsbuilder.cmd -builderFile dbws-builder.xml -stageDir output_directory -packageAs wls testEcho.war
| + | |
− | | + | |
− | where
| + | |
− | * <tt>dbws-builder.xml</tt> is the DBWS configuration file (as shown previously)
| + | |
− | * <tt>output_directory</tt> is the output directory for the generated files
| + | |
− | * <tt>-packageAs</tt> specifies the platform on which the web service will be deployed
| + | |
− | | + | |
− | When generating queries and the WSDL in which overloaded procedures are used, a unique index identifies each procedure. The index starts at '''1''' and increments by one, for each overloaded procedure.
| + | |
− | | + | |
− | In this example, EclipseLink generates the following '''eclipselink-dbws.wsdl''' (Web Services Description Language):
| + | |
− | <source lang="xml">
| + | |
− | <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>
| + | |
− | </source>
| + | |