ws-talk and uddi - multi resolutions · •juddi, uddi browser, uddi4j •discussion ws-talk and...
TRANSCRIPT
WS-Talk and UDDIWS-Talk and UDDI
Department of Computer ScienceRoyal Holloway, University of London
Fionn Murtagh, Pedro Contreras{fionn, pedro} @ cs.rhul.ac.uk
UDP
Introduction
• What’s UDDI
• Searches in UDDI
• UDDI Distributions and flavours
• Commercial Implementation vs Open Source
• JUDDI, UDDI Browser, UDDI4J
• Discussion WS-Talk and UDDI
What’s UDDIUniversal Description Discovery and Integration is de facto
standard web services catalogue. It consists of a directory wherebusiness can register and search for web services, centredaround a WS interface described by a WSDL document.
It is based on a set of specifications (OASIS standard) withpublic and private implementations and providing two webservices:
Inquiry : provide functions such as find_business, get_businessDetails
Publisher : provide functions such as save_business,delete_business
All these operations are based in SOAP messages.
Searches in UDDIThree can of searches can be performed using UDDI registry:
• White pages search: returns basic information such as address, contact, and identifiers about a company.
• Yellow pages search: retrieve information according to industrialcategorization and taxonomies, such as NAICS, ISO3166,and UNSPSC
• Green pages service search: retrieve technical information about Web service, as well as information about how to executethese services.
Commercial implementationsAcumen Technology, http://acumentechnologies.com
BEA, WebLogic Server UDDI Registry
Fujitsu, http://www.fujitsu.com/global/services/software/interstage/
IBM, http://www-306.ibm.com/software/solutions/webservices/uddi/
Infravio, http://www.infravio.com/products/
IONA, http://www.iona.com/products/artix/welcome.htm
Microsoft, http://www.microsoft.com/windowsserver2003/technologies/idm/uddi/default.mspx
Novell, http://developer.novell.com/uddi/
Oracle, http://www.oracle.com/technology/tech/webservices/htdocs/uddi/index.html
SAP, http://www.sap.com:80/solutions/netweaver/index.epx
Select Business Solutions, http://www.selectbs.com/products/select-uddiserver.htm
SOA Software, http://www.soa.com/index.php/section/products/registry_manager/
Sun Microsystems, Java Web Services Developer Pack. http://java.sun.com/webservices/jwsdp/index.jsp
Systinet, http://www.systinet.com/products/sr/overview
Open Source ImplementationsApache.org, JUDDI, http://ws.apache.org/juddi/
・Open Source and Platform Independent・Supports for JDK 1.3.1 and later・UDDI version 2.0 compliant implementation・Use with any relational database that supports ANSI standard SQL
(MySQL, DB2, Sybase, JDataStore, HSQLDB, etc.)・Deployable on any Java application server that supports the
Servlet 2.3 specification (Jakarta Tomcat, JOnAS, WebSphere, WebLogic, Enterprise Server, JRun, etc.)
・jUDDI registry supports a clustered deployment configuration.・Easy integration with existing authentication systems
UDDI Browser, http://uddibrowser.org/Still early version but gives a GUI to work from the client point of viewover different UDDI repositories
Open Source ImplementationsAPIsUDDI4J.org, http://uddi4j.sourceforge.net/
UDDI4J contains an implementation of the client side of UDDI from which theapplication needs to publish, find, and to bind a Web service. It also includes the source of the code, the complete JavaDoc documentation, and sample applications.
SOAP:LITE, http://sourceforge.net/projects/soaplite/ or http://soaplite.com/Collection of Perl modules that provides a simple and lightweight implementation of SOAP, XML-RPC, UDDI and other webservice-related spec.
PHPUDDI, http://phpuddi.sourceforge.net/Stand-alone PHP classes with no external dependencies, supporting basicUDDI inquiry APIs. However, not able to publish documents. Not as relevantas those above.
JUDDI MethodsJUDDI API (proprietary)get_registryInfofind_publisherget_publisherDetailsave_publisherdelete_publisher
JUDDI Inquiry APIfind_businessfind_servicefind_bindingfind_tModelfind_relatedBusinessesget_businessDetailget_businessDetailExtget_serviceDetailget_bindingDetailget_tModelDetail
JUDDI Publish APIget_authTokenget_registeredInfodiscard_authTokensave_businesssave_servicesave_bindingsave_tModeldelete_businessdelete_servicedelete_bindingdelete_tModeladd_publisherAssertionsset_publisherAssertionsget_publisherAssertionsdelete_publisherAssertionsget_assertionStatusReport
JUDDI ExampleQuery<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <find_publisher maxRows="100" generic="1.0" xmlns="urn:juddi-org:api_v1"> <name>***</name> </find_publisher> </soapenv:Body></soapenv:Envelope>
Results<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <publisherList generic="1.0" operator="jUDDI.org" xmlns="urn:juddi-org:api_v1"> <publisherInfos/> </publisherList> </soapenv:Body></soapenv:Envelope>
Find_plublisher
Populating JUDDI serverTwo methods were tried
• Produce a piece of source code to insert records like UDDI4Jor SOAP:LITE.– Development effort needed.
• Insert records directly into the DB using MySQL. The easiestoption.– DB reverse engineering needed to understand data structure.
JUDDIADDRESS : 1
BUSINESS_ KEY
CONTACT_ID
ADDRESS_ID
USE_TYPE
SORT_CODE
TM ODEL_KEY
varchar(41)
intege r(11)
intege r(11)
varchar(255 )
varchar(10)
varchar(41)
<pk,fk1,fk2>
<pk,fk2>
<pk>
<fk3>
ADDRESS_ LINE
BUSINESS_KEY
CONTACT_ ID
ADDRESS_ ID
ADDRESS_ LINE_ID
LINE
KEY_NAM E
KEY_VALUE
varcha r(41)
i nteger(11 )
i nteger(11 )
i nteger(11 )
varcha r(80)
varcha r(255)
varcha r(255)
<p k,fk1,fk2,fk3>
<p k,fk1,fk3>
<p k,fk1>
<p k>
AUTH_TOKEN
AUTH_TOKEN
PUBLISHER_ID
PUBLISHER_NAME
CREATED
LAST_USED
NUMBER_OF_ USES
TOKEN_STATE
va rchar(51 )
va rchar(20 )
va rchar(25 5)
ti m estam p(19)
ti m estam p(19)
in teg er(11)
in teg er(11)
<pk>
<fk>
BINDING_ CATEGORY
BINDING_ KEY
CATEGORY_ID
TMODEL_KEY_REF
KEY_NAM E
KEY_VAL UE
varchar(4 1)
i nte ger(11)
varchar(4 1)
varchar(2 55)
varchar(2 55)
<pk,fk>
<pk>
BINDING_DESCR
BINDING_ KEY
BINDING_ DESCR_ID
L ANG_CODE
DESCR
varchar(41)
integer(11)
varchar(5)
varchar(255 )
<pk,fk>
<pk>
BINDING_TEM PLATE
SERVICE_KEY
BINDING_ KEY
ACCESS_ POINT_TYPE
ACCESS_ POINT_URL
HOSTING_REDIRECTOR
L AST_UPDATE
varchar(41 )
varchar(41 )
varchar(20 )
varchar(25 5)
varchar(25 5)
ti m estam p(19)
< fk>
< pk>
BUSINESS_CATEGORY
BUSINESS_KEY
CATEGORY_ID
TMODEL_KEY_REF
KEY_NAM E
KEY_VAL UE
varchar(4 1)
i nte ger(11)
varchar(4 1)
varchar(2 55)
varchar(2 55)
<pk,fk>
<pk>
BUSINESS_DESCR
BUSINESS_KEY
BUSINESS_DESCR_ID
L ANG_CODE
DESCR
varcha r(41)
i nteger(1 1)
varcha r(5)
varcha r(255)
<p k,fk>
<p k>
BUSINESS_ENTITY
BUSINESS_KEY
AUTHORIZED_ NAM E
PUBLISHER_ID
OPERATOR
LAST_UPDATE
varchar(4 1)
varchar(2 55)
varchar(2 0)
varchar(2 55)
tim estam p(19)
<pk>
<fk>
BUSINESS_IDENTIFIER
BUSINESS_KEY
IDENTIFIER_ ID
TMODEL_KEY_REF
KEY_NAM E
KEY_VAL UE
varchar(4 1)
i nte ger(11)
varchar(4 1)
varchar(2 55)
varchar(2 55)
<pk,fk>
<pk>
BUSINESS_NAM E
BUSINESS_KEY
BUSINESS_NAM E_ID
L ANG_CODE
NAM E
varchar(41)
i nteger(11 )
varchar(5)
varchar(255)
<pk,fk>
<pk>
BUSINESS_SERVICE
BUSINESS_KEY
SERVICE_ KEY
LAST_ UPDATE
va rchar(41 )
va rchar(41 )
ti m estam p(19)
< fk>
< pk>
CONTACT
BUSINESS_KEY
CONTACT_ ID
USE_TYPE
PERSON_NAM E
varcha r(41)
i nteger(1 1)
varcha r(255)
varcha r(255)
<p k,fk>
<p k>
CONTACT_DESCR
BUSINESS_KEY
CONTACT_ID
CONTACT_DESCR_ID
L ANG_CODE
DESCR
va rchar(4 1)
in teg er(11)
in teg er(11)
va rchar(5 )
va rchar(2 55)
<pk,fk1,fk2 >
<pk,fk2>
<pk>
DISCOVERY_URL
BUSINESS_KEY
DISCOVERY_ URL_ID
USE_TYPE
URL
varchar(41)
i nteger(11 )
varchar(255)
varchar(255)
<pk,fk>
<pk>
EM AIL
BUSINESS_KEY
CONTACT_ID
EMAIL_ ID
USE_TYPE
EMAIL_ ADDRESS
varchar(41 )
intege r(11)
intege r(11)
varchar(25 5)
varchar(25 5)
<pk,fk1 ,fk2 >
<pk,fk2 >
<pk>
INSTANCE_DETAILS_DESCR
BINDING_KEY
TMODEL_INSTANCE_INFO_ ID
INSTANCE_DETAILS_DESCR_ID
L ANG_CODE
DESCR
va rchar(4 1)
in teg er(11)
in teg er(11)
va rchar(5 )
va rchar(2 55)
<pk,fk1,fk2 >
<pk,fk2>
<pk>
INSTANCE_DETAILS_DOC_DESCR
BINDING_KEY
TM ODEL_INSTANCE_INFO_ID
INSTANCE_DETAIL S_DOC_ DESCR_ID
LANG_CODE
DESCR
varch ar(41)
i nteger(1 1)
i nteger(1 1)
varch ar(5)
varch ar(255)
< pk,fk1,fk2>
< pk,fk2>
< pk>
PHONE
BUSINESS_KEY
CONTACT_ID
PHONE_ ID
USE_TYPE
PHONE_ NUM BER
varchar(41 )
intege r(11)
intege r(11)
varchar(25 5)
varchar(50 )
<pk,fk1 ,fk2 >
<pk,fk2 >
<pk>
PUBLISHER
PUBLISHER_ ID
PUBLISHER_ NAM E
EMAIL_ ADDRESS
IS_ADM IN
IS_ENABLED
varch ar(20)
varch ar(255 )
varch ar(255 )
varch ar(5)
varch ar(5)
< pk>
PUBLISHER_ASSERTION
FROM _KEY
TO_KEY
TM ODEL_KEY
KEY_NAME
KEY_VALUE
FROM _CHECK
TO_CHECK
varchar(4 1)
varchar(4 1)
varchar(4 1)
varchar(2 55)
varchar(2 55)
varchar(5 )
varchar(5 )
<fk>
SERVICE_ CATEGORY
SERVICE_KEY
CATEGORY_ID
TMODEL_KEY_REF
KEY_NAM E
KEY_VAL UE
varchar(4 1)
i nte ger(11)
varchar(4 1)
varchar(2 55)
varchar(2 55)
<pk,fk>
<pk>
SERVICE_ DESCR
SERVICE_KEY
SERVICE_DESCR_ID
L ANG_CODE
DESCR
varchar(41)
i nteger(11 )
varchar(5)
varchar(255)
<pk,fk>
<pk>
SERVICE_ NAM E
SERVICE_KEY
SERVICE_NAME_ID
L ANG_CODE
NAM E
varchar(4 1)
i nte ger(11)
varchar(5 )
varchar(2 55)
<pk,fk>
<pk>
TM ODEL
TM ODEL_ KEY
AUTHORIZED_NAME
PUBL ISHER_ID
OPERATOR
NAM E
OVERVIEW_URL
DELETED
LAST_UPDATE
varchar(41)
varchar(255)
varchar(20)
varchar(255)
varchar(255)
varchar(255)
varchar(5)
t im esta mp(19)
<pk>
<fk>
TMODEL_CATEGORY
TMODEL_KEY
CATEGORY_ID
TMODEL_KEY_REF
KEY_NAM E
KEY_VAL UE
varchar(4 1)
i nte ger(11)
varchar(2 55)
varchar(2 55)
varchar(2 55)
<pk,fk>
<pk>
TM ODEL _DESCR
TMODEL_KEY
TMODEL_DESCR_ID
L ANG_CODE
DESCR
varchar(41 )
intege r(11)
varchar(5)
varchar(25 5)
<pk,fk>
<pk>
TM ODEL _DOC_DESCR
TMODEL_KEY
TMODEL_DOC_DESCR_ID
L ANG_CODE
DESCR
varchar(41)
integer(11)
varchar(5)
varchar(255 )
<pk,fk>
<pk>
TMODEL_IDENTIFIER
TMODEL_KEY
IDENTIFIER_ ID
TMODEL_KEY_REF
KEY_NAM E
KEY_VAL UE
varchar(4 1)
i nte ger(11)
varchar(2 55)
varchar(2 55)
varchar(2 55)
<pk,fk>
<pk>
TM ODEL _INSTANCE_INFO
BINDING_KEY
TM ODEL _INSTANCE_INFO_ID
TM ODEL _KEY
OVERVIEW_ URL
INSTANCE_PARM S
varch ar(41)
integer(11)
varch ar(41)
varch ar(255 )
varch ar(255 )
< pk,fk1>
< pk>
< fk2>
TM ODEL_INSTANCE_INFO_DESCR
BINDING_KEY
TMODEL_INSTANCE_INFO_ ID
TMODEL_INSTANCE_INFO_ DESCR_ID
L ANG_CODE
DESCR
va rchar(41 )
in tege r(11)
in tege r(11)
va rchar(5)
va rchar(25 5)
<pk,fk1 ,fk2 >
<pk,fk2 >
<pk>
ADDRESS : 2
BUSINESS_KEY
CONTACT_ID
ADDRESS_ID
USE_TYPE
SORT_CODE
TMODEL_KEY
varch ar(41)
integer(11)
integer(11)
varch ar(255 )
varch ar(10)
varch ar(41)
<pk,fk1,fk2>
<pk,fk2>
<pk>
<fk3>
JUDDI Data Model
ADDRESS : 1
ADDRESS_ID
USE_TYPE
SORT_CODE
<pi> I
VA255
VA10
<M >
ADDRESS_LINE
ADDRESS_LINE_ID
LINE
KEY_ NAM E
KEY_ VAL UE
<pi> I
VA80
VA255
VA255
<M >
<M >
AUTH_TOKEN
AUTH_TOKEN
PUBLISHER_NAM E
CREATED
LAST_USED
NUMBER_OF_USES
TOKEN_ STATE
<pi> VA5 1
VA2 55
TS
TS
I
I
<M >
<M >
<M >
<M >
<M >
<M >
BINDING_CATEGORY
CATEGORY_ID
TMODEL_ KEY_REF
KEY_ NAM E
KEY_ VAL UE
<pi > I
VA41
VA25 5
VA25 5
<M>
<M>
BINDING_ DESCR
BINDING_ DESCR_ID
LANG_CODE
DESCR
<p i> I
VA5
VA25 5
<M>
<M>
BINDING_TEMPLATE
BINDING_ KEY
ACCESS_ POINT_TYPE
ACCESS_ POINT_URL
HOSTING_ REDIRECTOR
L AST_UPDATE
<pi > VA41
VA20
VA255
VA255
TS
<M>
<M>
BUSINESS_CATEGORY
CATEGORY_ID
TMODEL_ KEY_REF
KEY_ NAM E
KEY_ VAL UE
<pi > I
VA41
VA25 5
VA25 5
<M>
<M>
BUSINESS_DESCR
BUSINESS_ DESCR_ ID
L ANG_ CODE
DESCR
<p i> I
VA5
VA2 55
<M>
<M>
BUSINESS_ENTITY
BUSINESS_KEY
AUTHORIZED_NAME
OPERATOR
LAST_UPDATE
<pi> VA4 1
VA2 55
VA2 55
TS
<M>
<M>
<M>
<M>
BUSINESS_IDENTIFIER
IDENTIFIER_ID
TMODEL_ KEY_REF
KEY_ NAM E
KEY_ VALUE
<pi> I
VA41
VA255
VA255
<M >
<M >
BUSINESS_ NAM E
BUSINESS_ NAM E_ID
L ANG_ CODE
NAME
<pi > I
VA5
VA25 5
<M>
<M>
BUSINESS_SERVICE
SERVICE_KEY
LAST_UPDATE
<p i> VA4 1
TS
<M>
<M>
CONTACT
CONTACT_ ID
USE_ TYPE
PERSON_NAM E
<pi > I
VA255
VA255
<M>
<M>
CONTACT_ DESCR
CONTACT_ DESCR_ID
L ANG_ CODE
DESCR
<p i> I
VA5
VA25 5
<M>
<M>
DISCOVERY_URL
DISCOVERY_URL_ID
USE_TYPE
URL
<pi > I
VA25 5
VA25 5
<M>
<M>
<M>
EM AIL
EMAIL _ID
USE_TYPE
EMAIL _ADDRESS
<p i> I
VA25 5
VA25 5
<M>
<M>
INSTANCE_ DETAILS_ DESCR
INSTANCE_DETAILS_ DESCR_ ID
LANG_CODE
DESCR
<pi> I
VA5
VA2 55
<M >
<M >
INSTANCE_ DETAILS_DOC_DESCR
INSTANCE_ DETAILS_DOC_DESCR_ID
LANG_ CODE
DESCR
<pi > I
VA5
VA255
<M>
<M>
PHONE
PHONE_ID
USE_TYPE
PHONE_NUMBER
<p i> I
VA25 5
VA50
<M>
<M>
PUBLISHER
PUBLISHER_ID
PUBLISHER_NAME
EMAIL _ADDRESS
IS_ADMIN
IS_ENABLED
<pi> VA2 0
VA2 55
VA2 55
VA5
VA5
<M >
<M >
PUBLISHER_ASSERTION
FROM_KEY
TO_ KEY
KEY_NAME
KEY_VALUE
FROM_CHECK
TO_ CHECK
VA4 1
VA4 1
VA2 55
VA2 55
VA5
VA5
<M>
<M>
<M>
<M>
<M>
<M>
SERVICE_CATEGORY
CATEGORY_ID
TMODEL_ KEY_REF
KEY_ NAM E
KEY_ VALUE
<pi> I
VA41
VA255
VA255
<M >
<M >
SERVICE_ DESCR
SERVICE_ DESCR_ID
L ANG_CODE
DESCR
<p i> I
VA5
VA25 5
<M>
<M>
SERVICE_ NAM E
SERVICE_ NAM E_ID
L ANG_CODE
NAME
<pi> I
VA5
VA255
<M >
<M >
TMODEL
TMODEL_ KEY
AUTHORIZED_NAM E
OPERATOR
NAME
OVERVIEW_URL
DELETED
L AST_UPDATE
<p i> VA41
VA25 5
VA25 5
VA25 5
VA25 5
VA5
TS
<M>
<M>
<M>
<M>
<M>
TM ODEL_CATEGORY
CATEGORY_ID
TMODEL _KEY_REF
KEY_NAM E
KEY_VAL UE
<p i> I
VA25 5
VA25 5
VA25 5
<M>
<M>
TMODEL_ DESCR
TMODEL_ DESCR_ ID
L ANG_CODE
DESCR
<pi > I
VA5
VA25 5
<M>
<M>
TMODEL _DOC_DESCR
TMODEL _DOC_DESCR_ID
LANG_CODE
DESCR
<pi> I
VA5
VA255
<M >
<M >
TMODEL_ IDENTIFIER
IDENTIFIER_ID
TMODEL_KEY_ REF
KEY_NAME
KEY_VALUE
<pi> I
VA255
VA255
VA255
<M >
<M >
TMODEL_ INSTANCE_INFO
TMODEL_INSTANCE_INFO_ID
OVERVIEW_URL
INSTANCE_ PARMS
<p i> I
VA25 5
VA25 5
<M>
TM ODEL_INSTANCE_ INFO_DESCR
TM ODEL_INSTANCE_ INFO_DESCR_ID
LANG_CODE
DESCR
<pi > I
VA5
VA255
<M>
<M>
ADDRESS : 2
ADDRESS_ID
USE_TYPE
SORT_CODE
<pi> I
VA255
VA10
<M >
JUDDI Advantages
• Free and Open Source
• It works
• Supports a variety of Data Bases
• Can be deployed in any Servlet container that supports spec. 2.3
• Clustering method can be used to integrate different JUDDI
JUDDI Problems
• Poor documentation, just an e-mail list is available
• Could be a little tricky to make it work at thebeginning. But we got that documented
• UDDI spec. 2 is supported at the moment
UDDI Browser
Open questionsWhich UDDI version? JUDDI supports UDDI standard version 2, but currently the
specification is v. 3.V. 3. Specifies a series of UDDI flavours.
Corporate/private: internal registry behind a firewallAffiliated: controlled environment where limited access is grantedPublic: open registry
UDDI in WS-Talk? Are we going to use a single centralised repository, or a set ofdistributed ones. The solution for this may be in the use of ActiveBPEL engine.
Others issues?