ECE 355 ECE 355 Project PointersProject Pointers
In-Class PresentationIn-Class Presentation
K. KontogiannisK. Kontogiannis
Project ObjectivesProject Objectives
Become familiar with UML modeling techniques Become familiar with UML modeling techniques and a structured software development processand a structured software development process
Gain experience with integrating different Gain experience with integrating different technologies and components to produce a technologies and components to produce a working systemworking system
Apply material taught in class to a realistic Apply material taught in class to a realistic project project
SIP Operational ProfileSIP Operational Profile(User Agent Registration)(User Agent Registration)
SIP Operational ProfileSIP Operational Profile(Normal Scenario)(Normal Scenario)
Extended SIP Operational Profile - 1Extended SIP Operational Profile - 1
2.1 The Location Server checks whether Agent B sip:[email protected] has registered any Web service.
2.2. Assuming the result from the Service Registryis NULL, then the operation proceedswith the Location Server returning the IPaddress of sip::[email protected] and the protocolcontinues as if placing a normal call.
Extended Operational Profile -2Extended Operational Profile -2
SIP AgentWrapper
WebService
1. Invite B
Client Agent A ClientAgent B
2. Locate B
2.1 Obtain ServiceHandlers for B
2.2 Return ServiceHandlers for B
3. Forward Service Handlersfor Agent B to Proxy Server
4. DECLINE message for calling B and forward Service Handlers of Agent B to Agent A (caller)to Agent A
8. Wrapper forwardsservice invocationresult status to Agent A
6. Wrapper callsWeb Service using the SOAP protocol and WSIF/JAXRPClibraries
7. Service returnsInvocation result status
Service Repository
Proxy Server
Location Server
5. Agent forwardsService handlerInfo to Wrapper
Step 4.
/* Obtain services and service bindings */
msg = build-message-to-proxy(result);send-message-to-agent(agent, msg);}........
Step 3
result = Query-Service-Registry(agent); If result == NULL then find-agent-location-IP(agent)else { forward-handlers-to-proxy(result)
Processing DetailsProcessing Details
Location Server issues request to obtain service handlers using Location Server issues request to obtain service handlers using JAX-RJAX-R
Location server obtains result and sends it to the Proxy server Location server obtains result and sends it to the Proxy server (either IP or service handler)(either IP or service handler)
Proxy server examines reply and forms the appropriate message Proxy server examines reply and forms the appropriate message and actionand action
User agent selects appropriate service and handler and passes User agent selects appropriate service and handler and passes User Agent credentials and selected service handler (.wsdl file User Agent credentials and selected service handler (.wsdl file location) to Wrapper. One Wrapper per User Agentlocation) to Wrapper. One Wrapper per User Agent
Wrapper calls service using JAX-RPC or WSIFWrapper calls service using JAX-RPC or WSIF
Wrapper notifies User Agent for completion Wrapper notifies User Agent for completion
MessagesMessages
Check RFC 3261 for SIP message formatCheck RFC 3261 for SIP message format
In a nutshell the format is:In a nutshell the format is:
Message Type …….. Message Body
Handler Descriptions go here as a long formatted string
“3 -- EmailToOfficeService www.foo.com/sample1.wsdl -- EmailToHomeService www.test.com/sample2.wsdl -- EmailToMobile www.test.com/sample3.wsdl”
Major Project ComponentsMajor Project Components
JAIN-SIP JAIN-SIP – Registration ServerRegistration Server– Location ServerLocation Server– Proxy ServerProxy Server
SIP CommunicatorSIP CommunicatorWSDPWSDP– Service Registry (uses Tomcat for WSDP or Suns Service Registry (uses Tomcat for WSDP or Suns
App Server)App Server)– JAX-RJAX-R– JAXRPCJAXRPC
WSIF (alternative to JAX-RPC)WSIF (alternative to JAX-RPC)
Service RegistryService Registry
1.1. Organization Organization (Business Entity – Your own (Business Entity – Your own group)group)
1.1.1.1. Services Services (Business Services. Contain descriptions (Business Services. Contain descriptions of services, contact names etc.)of services, contact names etc.)
1.1.1.1.1.1. Service Bindings Service Bindings (Binding Template. Contain technical (Binding Template. Contain technical information about a service, and references to t-Models)information about a service, and references to t-Models)
1.1.1.1.1.1.1.1. External Links External Links (Contain pointers to technical description (Contain pointers to technical description of services. These external links reference wsdl files)of services. These external links reference wsdl files)
Service RegistryService Registry
You can install you own (as part of the You can install you own (as part of the WSDP). You will need Sun’s App Server.WSDP). You will need Sun’s App Server.You can use the public one set for this You can use the public one set for this project at:project at:
http://www.ece.uwaterloo.ca:8080/soar/regihttp://www.ece.uwaterloo.ca:8080/soar/registry/thin/browser.jspstry/thin/browser.jsp
(If this URL changes we will let you know)(If this URL changes we will let you know)
Registering ServicesRegistering Services
The idea is for you to modify the The idea is for you to modify the “template” service we will give to you and “template” service we will give to you and crate “variants”crate “variants”
You can register the new services using You can register the new services using the Registry UI (see URL) or by creating a the Registry UI (see URL) or by creating a Java client program (see examples) using Java client program (see examples) using JAX-RJAX-R
Service TemplateService TemplateService: Service: S::Selective e-mail ServiceS::Selective e-mail ServiceInput: A::Agent /*Calling Agent */Input: A::Agent /*Calling Agent */ Message::StringMessage::StringLocal Variables: B::Agent /*Service Owner – Called Agent)Local Variables: B::Agent /*Service Owner – Called Agent)Output: R::Result statusOutput: R::Result status
/* Operational template *//* Operational template */if (if (A == A1 or A2 orA == A1 or A2 or …) then …) then {{ mail-to:[email protected] (Message::String);mail-to:[email protected] (Message::String); R=OK;R=OK; }}elseif (elseif (A==A3 orA==A3 or . . . ) . . . ) {{ mail-to:[email protected](Message);mail-to:[email protected](Message); R= OKR= OK }}elseif . . . . elseif . . . . . . . . . . . .. . . . . . . .else R=FAILelse R=FAIL
Extended User AgentExtended User Agent
WrapperWrapper
1 IsWrapedBy Wraps 1
User Agent Wrapper
refToWrapper:Wrapper refToUserAgent: UserAgent
Summary of TasksSummary of TasksTo familiarize with the code (JAIN-SIP, SIP-Communicator) and the structure of the To familiarize with the code (JAIN-SIP, SIP-Communicator) and the structure of the Service Registry entriesService Registry entries
To modify the Location server to be able to query the service registry (sample code to To modify the Location server to be able to query the service registry (sample code to query the registry using the JAXR API will be given to you), and pass the list of query the registry using the JAXR API will be given to you), and pass the list of services or NULL to the Proxy for further processingservices or NULL to the Proxy for further processing
To modify the proxy server to be able to accept service descriptions from the registry To modify the proxy server to be able to accept service descriptions from the registry and to compose MESSAGE BODY stringsand to compose MESSAGE BODY strings
To modify the Client Agent to reference a Wrapper. The code for the new Client To modify the Client Agent to reference a Wrapper. The code for the new Client Agent (SIP-communicator) UI will be given to youAgent (SIP-communicator) UI will be given to you
To create a Wrapper class that references the Client Agent. This Wrapper class To create a Wrapper class that references the Client Agent. This Wrapper class should use the WSIF or the JAAX-RPC API to invoke the Web Service that has been should use the WSIF or the JAAX-RPC API to invoke the Web Service that has been selected using the Client Agent UIselected using the Client Agent UI
To modify the template service and the wsdl specification file that will be given to you To modify the template service and the wsdl specification file that will be given to you to create variant Web Services to use in your system.to create variant Web Services to use in your system.
Gantt DiagramsGantt Diagrams
Deliverables for SRSDeliverables for SRS
Use the SRS template document. If there is information Use the SRS template document. If there is information not specified in the project description make an not specified in the project description make an reasonable assumption (pertains more to NFRs)reasonable assumption (pertains more to NFRs)
Use Case Description for scenaria Use Case Description for scenaria 3.2.23.2.2Use Case diagrams for scenaria Use Case diagrams for scenaria 3.2.2, 3.1.23.2.2, 3.1.2Specification Level Collaboration Specification Level Collaboration Diagrams for scenariaDiagrams for scenaria 3.2.1, 3.2.23.2.1, 3.2.2Sequencing Diagrams for scenariaSequencing Diagrams for scenaria
3.2.2, 3.1.33.2.2, 3.1.3
Available ResourcesAvailable ResourcesThe SIP Communicator and the JAIN SIP Proxy / Location / Registration Servers. The SIP Communicator and the JAIN SIP Proxy / Location / Registration Servers.
The on-line Service Registry and the Web interface to register and de-register services. The on-line Service Registry and the Web interface to register and de-register services. The Service registry is part of the WSDP toolkit that you can also download and install it on The Service registry is part of the WSDP toolkit that you can also download and install it on your home PCs. your home PCs.
The JAXR libraries for querying the service registry and sample Java client code to query The JAXR libraries for querying the service registry and sample Java client code to query and update the registry will be provided. The location of our public Service Registry is and update the registry will be provided. The location of our public Service Registry is http://www.ece.uwaterloo.ca:8080/soar/registry/thin/browser.jsphttp://www.ece.uwaterloo.ca:8080/soar/registry/thin/browser.jsp
A sample template Web Service and its handler. The service will do selective e-mail based A sample template Web Service and its handler. The service will do selective e-mail based on the calling Agent, and you can customize it to create several similar services to be on the calling Agent, and you can customize it to create several similar services to be posted on the Registryposted on the Registry
The extended SIP Client interface and the code to select a service from a list of services to The extended SIP Client interface and the code to select a service from a list of services to pass to the wrapper for invoking the servicepass to the wrapper for invoking the service
The Web Services Invocation Framework WSIF and JAXRPC will be provided in the form The Web Services Invocation Framework WSIF and JAXRPC will be provided in the form of libraries. Sample Java code to use for invoking a Web service will be provided for your of libraries. Sample Java code to use for invoking a Web service will be provided for your reference to help you during the implementation stagereference to help you during the implementation stage