Oracle 11g – How to enable native WSDL services

Now the first production release is out…

Check it out: WSDL services via the Oracle Protocol Listener. As mentioned in the documentation of the Oracle XMLDB Developers Guide, to enable the WSDL service:

DECLARE
  SERVLET_NAME VARCHAR2(32) := 'orawsv';
BEGIN
  DBMS_XDB.deleteServletMapping(SERVLET_NAME);
  DBMS_XDB.deleteServlet(SERVLET_NAME);
  DBMS_XDB.addServlet(NAME => SERVLET_NAME,
                              LANGUAGE => 'C',
                              DISPNAME => 'Oracle Query Web Service',
                              DESCRIPT => 'Servlet for issuing queries as a Web Service',
                              SCHEMA => 'XDB');
  DBMS_XDB.addServletSecRole(SERVNAME => SERVLET_NAME,
                             ROLENAME => 'XDB_WEBSERVICES',
                             ROLELINK => 'XDB_WEBSERVICES');
  DBMS_XDB.addServletMapping(PATTERN => '/orawsv/*',
                             NAME => SERVLET_NAME);
END;
/

This wil update the xdbconfig.xml file.

To use the WSDL service grant the role XDB_WEBSERVICES to the schema that needs it. This role enables use of Web services over HTTPS; it is required to be able to use Web services.


The service can be used via http://host:port/orawsv and http://host:port/orawsv?wsdl
To quickly register this against the listener use the statement:

SQL> ALTER system register;
 
System altered.

A little bit more resource will come in handy so add some extra shared server, for example, via the following statement that sets the amount to five shared servers:

SQL> ALTER system SET shared_servers = 5;
 
System altered.

Two extra roles are available:

  • XDB_WEBSERVICES_OVER_HTTP – Enable use of Web services over HTTP (not
    just HTTPS).
  • XDB_WEBSERVICES_WITH_PUBLIC – Enable access, using Web services, to
    database objects that are accessible to PUBLIC.

Be aware that access can be restricted via the DBMS_XDB.SETLISTENERLOCALACCESS method, so when in trouble, keep this in mind aswel…

WSDL integration with OWSM (Jinyu Wang (r), Oracle - Oracle Open World 2006)
Click picture to enlarge

The WSDL services can also be better controled/secured via integration with the Oracle Web Service Management(OWSM) section in the Oracle SOA Suite. This way the WS is ready to fit in the Oracle “Fusion” infrastructure.

Enjoy.

:-)

Related Posts:

Written by:

11 Comments

  1. 5/8/2012

    Marco,

    I’m implementing an architecture which uses Database Native Web Services, and based on the info you’ve shared here, planned to use OWSM to secure those services. In purchasing the latest fusion middleware, it appears the Gateway capabilities that otherwise enabled the ability to protect database native web services is gone in the 11g version of OWSM!! I’m trying to secure and proxy both web service calls from the database as well as exposures. How would you recommend securing these activities in light of the changes to OWSM?

    Thanks,
    Dale

  2. Gaurang
    9/4/2012

    Hello Marco –

    We’re thinking of using Database Native Web Services in our production environment. We’ll be using Oracle 11g R2 database.

    The database web services will be called by customer facing eCommerce application. There could be 100’s of concurrent request coming from the web application for query operation (It will be just query requests. querying our customer/address/contact/user data. No update)

    Has anyone used database native web service in production environment? Is it scalable/reliable option?

    Can built-in database web server scale against 100’s of concurrent request?

    Appreciate any feedback.

    Thanks

  3. Gaurang
    9/4/2012

    Marco – one more thing.

    In my testing, Oracle appears to run out of available http connections after four or five calls.

    In our scenario, eCommerce application could make 100′s of concurrent call to the same web service.

    How can we fix this?

    Thanks

    • 9/4/2012

      NDWS, serviced by the XDB protocol server is using the underlying SHARED SERVER functionality. This functionality was once invented to be able to server hundredths of connections.

      Via the SYS account do a

      alter system set shared_servers=5 scope=both;

      This should give you more responsiveness.

  4. Gaurang
    9/4/2012

    Thanks Marco for a quick response.

    I would appreciate your comment on NDWS scalability and reliability.

    How can we enable anonymous access to the database native web services?

    Thanks

Comments are closed.