Just stumbled across an interesting paragraph in the New Features in Oracle XML DB for Oracle Database 11g Release 1 about Database Native Web Services.
The feature didn’t get that much attention yet on the Oracle 11g related blog postings, but according to the description it’s a real nice improvement compared to the 10g solution.
So what is it all about?
It allows you to publish your PL/SQL packages/procedures/functions as a web service with zero coding and zero deployment effort!
Maybe you have already heard of the SOA (service-orientated architecture) hype and probably your manager or the Java guys have already asked you how you want to participate with your old legacy PLSQL/Oracle APEX code in the “new and everything is now better” world of SOA and BPEL. This native integration of web services into the database is the answer. Probably you even have to do less work then the Java guys to expose your business service…
Another goody is that you don’t need the additional application server infrastructure anymore as you had to have it with the existing JDeveloper solution which generated a Java wrapper for your PL/SQL package. That’s especially useful in an Oracle APEX environment where you don’t need an application server anymore. Another moving piece is gone…
Really looking forward to try out Oracle 11g myself.
See also my related posting Oracle 11g more infos.
Update: Check out Paul Gallagher’s blog posting First Tests of 11g Native Web Services for more information about this feature.




July 16th, 2007 at 09:29
Hi Patrick,
That is a cool feature. I hadn’t seen that yet.
Just another month (hopefully) and we’ll get our hands on the new version.
LewisC
July 16th, 2007 at 09:37
Patrick,
Native Database Web Services is the feature I was invited into the 11g beta program to test.
It works the way you described it. The only thing you have to do is grant execute on your procedure to a role, and it becomes available as a web service.
You can also have it execute select statements – with bind variables. That’s a bit more complicated to use.
I’m not a web services expert, but I was able to call the web services from JDeveloper, Visual Studio, and other environments.
It’s another nice feature for people who like to do everything inside the database.
Doug
July 16th, 2007 at 10:24
This looks very promising to me.
Does user has ability to set name of such web service? I mean: How it will be visible for external consumers?
How about utilizing external web services within PL/SQL?
July 16th, 2007 at 12:51
Pawel,
It uses the XML DB protocol server to publish the web services.
Stored procedures are exposed via a URL that includes the schema name and the name of the procedure, similar to the way the DBUriServlet works in 10g. http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14259/xdb15dbu.htm#sthref1957
July 16th, 2007 at 13:34
Pawel,
you can consume web services in PL/SQL in different ways. Have a look at the JPublisher tool or the UTL_DBWS package. But you can also use UTL_HTTP or Oracle APEX to consume the web service.
Patrick
July 16th, 2007 at 13:36
Doug,
thanks for the additional info how easy it is to make it available from a person who already tried it!
Thanks
Patrick
July 16th, 2007 at 19:26
I hope they get it better documented then the UTL_DBWS package.
UTL_DBWS looks nice out of the box, still works good with very easy webservices, but might make you unhappy when using webservices with more complex requirement,s e.g. multiple parameters, …
Furthermore utl_dbws still needs loading additional java-code using loadjava.
Best regards,
Martin
July 22nd, 2007 at 02:08
Thanks for this, Patrick.
First feature of 11g that really makes me want to use that release!
September 30th, 2009 at 10:25
Hi Patrick,
I want to call the webservice through PL/SQL . I have XE database.I am using APEX . Want to implement the Single sign on concept(no need to login) from the system. It’ll go directly call webservice for login/pwd information(system user/pwd) and redirect to the requested page in the oracle apex application.
Any Idea?
Please let me know. how to do that? Becoz in XE database there is no package called UTIL_HTTP and UTIL_DBWS.
Thanks
Rahul Bhandari