Presentation is loading. Please wait.

Presentation is loading. Please wait.

Java Technology for Internet Communications

Similar presentations


Presentation on theme: "Java Technology for Internet Communications"— Presentation transcript:

1 Java Technology for Internet Communications
| JavaOne | Session # Java Technology for Internet Communications Phelim O’Doherty Software Architect Sun Microsystems Mudumbai Ranganathan Computer Scientist National Institute of Standards and Technology (NIST) | JavaOne | Session #1024

2 Overall Presentation Goal
Learn the technologies available for IP Communications networks that enable 3rd party application development. B E G I N | JavaOne | Session #1024

3 Speaker’s Qualifications
Phelim O’Doherty is a Internet Communications Technology Evangelist at Sun Microsystems. Phelim O’Doherty is the specification lead for JSR 32 JAIN SIP and is an expert on JSR 116 SIP Servlet and JSR 180 SIP for J2ME. Mudumbai Ranganathan is a Computer Scientist at NIST. Mudumbai Ranganathan is the primary author of NIST-SIP a public domain implementation of JSR 32 JAIN SIP and serves as an expert on JSR 125 and JSR 141. B E G I N | JavaOne | Session #1024

4 Fact IP Communications will ’NOT’ be a remold of the old communications network, if ’YOU’ start implementing Java services that will run on the network. B E G I N | JavaOne | Session #1024

5 Presentation Agenda Overview of IP Communications Java SIP Containers
SIP for J2ME Overview of JAIN SIP Conclusion B E G I N | JavaOne | Session #1024

6 IP Communications | JavaOne 2003 | Session #

7 Evolution to IP Communications
Circuit-Switched Solutions can come from multiple vendors, at all levels who supply open standards-based products Customers are free to choose best-in-class products to build their network. Open standards enable innovation and reduce costs Soft-Switched Transport Hardware Softswitch Call Control Services, Applications & Features (Management, Provisioning and Back Office) Open Applications APIs Open Protocols APIs PROPR I ETARY Services & Applications Call Control & Switching Transport Hardware Solutions come from a single vendor that supplied everything in one proprietary box: software, hardware and applications Customers are locked-in to their vendor—no room for innovation, expensive to implement and maintain | JavaOne | Session #1024

8 Why Java and IP Communications?
IP Comm’s JAVA Developer Base Platform Indep. Vendor Culture Open Interoperable Standard Acceptance Momentum Flexible Extensible Internet model Innovative Converged Services Scalable | JavaOne | Session #1024

9 Sample Network Architecture
SIP for J2ME SIP for J2ME J2EE Visited Network JAIN SLEE SIP Servlet OSA/OMA Node OSA/OMA Node P-CSCF Core Network SIP Servlet HSS JAIN SIP Untrusted Network MGCF S-CSCF JAIN SIP I-CSCF SIP Servlet JAIN SLEE SIP for J2ME Application Server JAIN SLEE MGW Application Server Application Server Home Network | JavaOne | Session #1024

10 Varieties of IP Communications Containers
| JavaOne | Session # Varieties of IP Communications Containers THIRD PARTY: Converged Services SIP App JSP App EJB App SLEE App Containers in yellow boxes SIP Servlet HTTP Servlet EJB SLEE SIP, Content-based Charging, Call Control, User Interaction, Messaging, Mobility CORE NETWORK: Communications Services Call Control Servers, Proxy Servers, Location, Presence and Messaging 1. 3 main application areas * the kinds of containers deployed * APIs that they use 2. OSS/BSS like traditional enterprise applications use J2EE 3. CORE network: typically embedded containers and applications 4. 3rd Party for building converged services *** just like web and web services are naturally integrated into today’s enterprise applications, communications capabilities using voice interaction, location, messaging, presence will also be naturally integrated into these enterprise applications Will introduce SLEE and SIP Servlet in this presentation SLEE App SLEE App SIP App SIP App SLEE SIP Servlet INAP, TCAP, SIP SIP | JavaOne | Session #1024

11 Why are Communications Applications Converging on Java Containers?
| JavaOne | Session # Why are Communications Applications Converging on Java Containers? Telco apps moving to component based architectures Desire to use Standard, Off-the-shelf container Write-once, run-anywhere Container provides important infrastructure services Higher level abstractions for State management, Transactions, Security, Resource pooling, … Focus on core value-add application logic Leverage large community of Java developers Leverage enterprise development tools, test suites, … Time to market and reduced development cost | JavaOne | Session #1024

12 Java SIP Containers | JavaOne 2003 | Session #

13 SIP Execution Environments
SIP App SIP App SIP App SIP Servlet EJB JAIN SLEE SIP App JAIN SIP JVM | JavaOne | Session #1024

14 Application development options
Specification Developer Community Target Java Platform JAIN SIP Desktop J2SE JAIN SIP & Connector Enterprise J2EE Business Tier JAIN SIP & JAIN SLEE RA Telecom SIP Servlet J2EE Web Tier SIP for J2ME Device J2ME | JavaOne | Session #1024

15 Realizing the SIP stack in Java
| JavaOne | Session # Realizing the SIP stack in Java JCC JAIN SLEE Sipservlet Industry Standard Interfaces JAIN SIP Packet Network Dialog Layer Proprietary Interfaces Transaction Layer Message Layer See upcoming slides SIP | JavaOne | Session #1024

16 SIP in J2EE SIP Servlet JCA Connector SIP EJB Application Server
| JavaOne | Session # SIP in J2EE SIP Servlet JCA Connector JAIN SIP App Server App Server SIP EJB Application Server | JavaOne | Session #1024

17 | JavaOne | Session # JAIN SLEE JAIN SLEE is high performance event processing platform suitable for event driven applications. Supports simple and complex telecommunications applications. Applications deal with service logic only. System issues handled by container i.e. threading, transactions Standard robust application framework and programming model. Object Orientated, asynchronous and distributable Independent of underlying networks. Portable, robust and reusable applications. Asynchronous support Elaborate event distribution mechanism (with priority) Maps events to method invocations on components Creates component instances in response to initial events | JavaOne | Session #1024

18 JAIN SLEE Architecture
Management Application SLEE Component Container JMX Agent component instance Timer Facility component instance component instance SLEE and Service Management Interfaces Alarm Facility component instance Trace Facility component instance Usage Facility Event Dispatcher JAIN SIP API SIP based network | JavaOne | Session #1024

19 SLEE Application Characteristics
| JavaOne | Session # SLEE Application Characteristics Communications Enterprise Invocations Mostly asynchronous Events, messages, protocol triggers Mapped to method invocations Mostly synchronous invocations Components Light-weight fine-grained objects Short transient lifetimes Rapid creation, deletion Heavy weight data access objects Long persistent lifetimes Data Sources Multiple data sources location, context information Provisioned data, cached from master copy Database servers Definitive master copy Back-end systems Transactions Light-weight transactions For state replication demarcation Faster completion and more frequent Database transactions Slower completion and less frequent Computation Compute-intensive Main input and output are resource invocations, messages, events Database access intensive Additional notes: 1. Transactions: * Communications: Simple transactions + no complex joins, projections, more localized data access * Enterprise: More complex transactions + may involve large data sets, benefit from large memory caches | JavaOne | Session #1024

20 JAIN SLEE with JAIN SIP Resource
| JavaOne | Session # JAIN SLEE with JAIN SIP Resource JAIN SLEE represents network resources as resource adaptors and each resource adaptor has a type Resource adaptor type for JAIN SIP is ‘javax.sip’ JAIN SLEE identifies Event by Event types JAIN SIP Events are classified RequestEvents, ResponseEvents and TimeoutEvents, each of these classifications contains numerous types For example the event type of a Request message of type ‘INVITE’ is ‘javax.sip.RequestEvent.Request.INVITE’ JAIN SLEE represents the flow of events as activities Activity Objects in JAIN SIP are ClientTransactions (locally initiated) and ServerTransactions (remotely initiated) | JavaOne | Session #1024

21 | JavaOne | Session # SIP Servlet SIP servlets typically reside on network servers where they will be responsible for making routing decisions. Supports RFC3261, RFC3262, RFC3265, RFC3428, and RFC2976 Utilizes http servlet model as foundation, builds on http generic part for essential SIP request and response functionality Allow applications to perform a fairly complete set of SIP signaling actions User agent client (UAC) User agent server (UAS) Proxy server | JavaOne | Session #1024

22 SIP Servlet Goals Simplicity for the application developer
| JavaOne | Session # SIP Servlet Goals Simplicity for the application developer Containers handle “non-essential” complexity such as managing network listening points, CSeq, Call-ID and Via headers, routes, etc. Containers support converged applications Applications that span multiple protocols and media types, for example, Web, telephony, and presence. Third party application development: An XML DD is used to communicate application information from the application developer to deployers. Application composition: Several applications can execute on the same incoming or outgoing request or response. Each application has its own set of rules and executes independently. | JavaOne | Session #1024

23 Extension to HTTP Servlet Model
| JavaOne | Session # Extension to HTTP Servlet Model HTTP is not a peer-to-peer protocol like SIP therefore SIP Servlet extensions include: Initiate requests Receive responses as well as requests Generate multiple Responses one or more 1xx followed by a final response Proxying requests, possibly to multiple destinations | JavaOne | Session #1024

24 Protocol and Application Sessions
Sipservlet defines two types of sessions: SipSession (Protocol Session) Equivalent to HTTP Session and represents a Dialog in SIP SipApplicationSession Provides storage for application data Enable different protocol sessions to share state i.e. HTTP and SIP Defined by SIPServlet but is expected to be adopted by the Servlet specification in a future release. | JavaOne | Session #1024

25 Message Hierarchy ServletRequest ServletResponse javax.servlet
SipServletMessage javax.servlet.sip SipServletRequest SipServletResponse | JavaOne | Session #1024

26 | JavaOne | Session # SIP for J2ME | JavaOne | Session #1024

27 | JavaOne | Session # Overview: SIP for J2ME SIP for J2ME is the standardised SIP interface for mobile handsets to communicate with core network functionality. SIP for J2ME is an optional package for the J2ME platform that enable resource limited devices to send and receive SIP messages The specific is designed for the CLDC profile, however it can also be used on to the CDC profile also. The specification gives the developer transactional control over the SIP protocol Client devices must support SIP for Rel5.0 of the UMTS architecture. SIP for J2ME is the perfect platform for these client devices. | JavaOne | Session #1024

28 SIP for J2ME Goals Enables terminals supporting CLDC to run SIP enabled MIDlets Builds upon CLDC Generic Connection framework Specifically targeted at mobile phone handsets Keep the “look and feel” of the HTTP API Keep the API size small - keep the number of created objects low Provide developers with helper functions RefreshHelper for Register and Subscribe | JavaOne | Session #1024

29 SIP and the Generic Connection Framework
InputConnection OutputConnection SipConnection DatagramConnection StreamConnection ContentConnection HttpConnection SipConnection Notifier SipClientConnection SipServerConnection | JavaOne | Session #1024

30 SIP for J2ME Architecture
| JavaOne | Session #1024

31 Other SIP and IM Interfaces & J2ME
JAIN PIM MIDP JAIN SIMPLE SIP for J2ME CLDC KVM | JavaOne | Session #1024

32 | JavaOne | Session # JAIN SIP | JavaOne | Session #1024

33 Overview: JAIN SIP Java-standard interface to a SIP signaling stack.
Standardized the interface to the stack. Standardized the events and event semantics. Application portability - verified via the TCK. Designed for the developer who requires powerful access to the SIP protocol. JAIN SIP can be utilized in a user agent, proxy, or imbedded into a service container. Supported RFCs: RFC 3261, 2976, 3262, RFC 3265, 3311, 3428 | JavaOne | Session #1024

34 JAIN SIP Architecture Listener Listener SIP Messages SIP Events
Application Listener Listener SIP Messages SIP Events SIP Messages SIP Events Provider Provider Listening Point Listening Point Stack Stack Network | JavaOne | Session #1024

35 Responsibilities of the Application
Application registers an implementation of the SipListener interface to interact with the SIP Stack Application MUST go via the SipProvider for all messaging with the stack Application Sends messages and access stack objects via the SipProvider. Application receives messages from the stack as Events via the SipListener interface. | JavaOne | Session #1024

36 Services provided by JAIN SIP
Provide methods to format and send SIP messages Parse incoming messages and enable application to access to fields via a standardized JAVA interface. Invoke appropriate application handlers when protocol significant (message arrivals, Transaction time-outs) Provide Transaction support and manage Transaction state and lifetime on behalf of a user application. Provide Dialog support and manage Dialog state and lifetime on behalf on a user application. | JavaOne | Session #1024

37 SIP Transactions UAC Stateful proxy UAS
SIP transaction consists of a single request and any responses to that request. Server transaction Client transaction Server transaction Client transaction UAC Stateful proxy UAS | JavaOne | Session #1024

38 Transaction Support Transaction is created on incoming Request or may be created to send outgoing request. When a Request is sent out statefully, application must request a ClientTransaction for the outgoing Request. When a new Request arrives, Stack associates a ServerTransaction with Request and passes up to application. When a response arrives, the Stack possibly associates a previously created ClientTransaction with the response and passes up to the Application. The JAIN SIP implementation manages the association between Transactions and Dialogs. | JavaOne | Session #1024

39 Support for Dialogs A Dialog is a peer to peer association between communicating SIP endpoints. Maintains Route Sets and Sequence Numbers. Dialogs are never directly created by the Application.. Dialogs are established by Dialog creating Transactions (INVITE, MESSAGE, SUBSCRIBE…), however are managed by the stack. Dialog deletion may be under application control. Transactions may belong to a Dialog Dialog state changes as a result of changes in Transaction State | JavaOne | Session #1024

40 Addresses, Messaging and Headers
Defines support for Address/Header/Message Factories. Address package contains a URI wrapper and defines URIs for SIP and Tel URIs. Header package defines interfaces for all the supported headers. Accessor (set/get) methods for SIP Header parameters. Deep copy requirement for cloning Addresses, Headers and Messages for the benefit of proxies. | JavaOne | Session #1024

41 SipStack Interface Manages Listening Points and Providers.
SipStack associated with an IP address. Can Have multiple Listening points. Application can have multiple SipStacks. Cannot be deleted once created. Instantiated by the SipFactory and initialized with a Property set. javax.sip.* properties are reserved and names defined for stack configuration properties. | JavaOne | Session #1024

42 SipProvider Interface
Send Request's either statefully via client transactions or statelessly. Send Response's to a recently received Requests either statefully via server transactions or statelessly. Register a SipListener to the SipProvider. Notifies Registered Listener of Events (Request/Response/Timeout). De-register a SipListener from the SipProvider. Once de-registered, no longer receive Events from SipProvider. New Client and Server Transaction methods. Listening Point manipulation methods. Only one provider per listening point. | JavaOne | Session #1024

43 SipListener Interface
A single SipListener per SipStack which implies a single Listener in the architecture all SipProviders associated to a Sipstack have the same SipListener. Process Request's either statefully or statelessly dependent on application. Process Response's to a recently sent Requests statefully. Process Transaction timeouts and retransmits Timer events. | JavaOne | Session #1024

44 Application - Stack Creation
Initialize Stack using SipFactory: try { Properties properties = new Properties(); properties.setProperty("javax.sip.IP_ADDRESS", " "); properties.setProperty("javax.sip.OUTBOUND_PROXY", " :5070/UDP"); ……// Other initialization properties. sipStack = sipFactory.createSipStack(properties); } catch(SipException e) { System.exit(-1); } | JavaOne | Session #1024

45 Application – Request Creation
Initialize Request using Factories: try { SipURI requestURI = addressFactory.createSipURI (toUser, toSipAddress); // … Create other headers Request request = messageFactory.createRequest (requestURI, Request.INVITE, callIdHeader, cSeqHeader, fromHeader, toHeader, viaHeaders, maxForwards); } | JavaOne | Session #1024

46 Application - Sending Requests
Send outgoing messages: try { // Create the client transaction ClientTransaction inviteTid = sipProvider.getNewClientTransaction(request); // send the request sipProvider.sendRequest(inviteTid,request); } | JavaOne | Session #1024

47 Application – Processing Requests
Handle incoming messages as Events: try { public void processRequest(RequestEvent requestEvent) { Request request = requestReceivedEvent.getRequest(); ServerTransaction st = requestEvent.getTransaction(); // do request specific processing here } | JavaOne | Session #1024

48 JAIN SIP for Instant Messaging
JAIN SIP can be used for building Instant Messaging and Presence Clients and Servers. API supports the required methods and Headers. JAIN creates and manages Dialogs for SUBSCRIBE and MESSAGE methods. NIST-SIP JAIN IM Client SipListener is about 1100 LOC. Interoperates with Microsoft IM and packaged with RI as example. | JavaOne | Session #1024

49 JAIN-SIP in Proxy Servers
JAIN SIP facilities construction of Proxy Servers: Stateless, Transaction-stateful, and Dialog-stateful operation. Application has access to Dialog/Transaction state and route tables. Support for extensibility and application- controlled Routing. Deep copy semantics for cloning. Example Proxy (including presence server) is about 3500 LOC and is included with RI. | JavaOne | Session #1024

50 JAIN SIP Extensibility
SIP Extensions Typically Define: New Methods New Headers New Dialog Creating Methods JAIN SIP Supports these by: Architected ExtensionHeader that can be created/accessed by name. New Dialog Creating methods specified at Stack configuration via configuration property. | JavaOne | Session #1024

51 JAIN SIP Updates JAIN SIP v1.0 JAIN SIP v1.1 RFC2543 Supported.
J2SE 1.3 and above. Transactions referenced by long. Transaction state is not visible to application. No explicit Dialog Support. Stack Configuration not defined. RFC3261 Supported. J2SE 1.4 and above. Transaction interfaces defined. Transaction/Dialog state can be read by application. Dialog interface defined and managed by stack. Stack Configured with defined properties. | JavaOne | Session #1024

52 JAIN SIP Reference Implementation
In the public domain. Includes example IM client and proxy. Includes trace visualization tools. Footprint About LOC. Jar file about 355 Kb (not counting JAIN API). About 3 Megabytes of memory after class loading and running a few requests. | JavaOne | Session #1024

53 Useful URLs JAIN SIP Specification: http://jcp.org/jsr/detail/032.jsp
NIST IP-Telephony Project Page: JAIN SIP Discussion List: JAIN Homepage: | JavaOne | Session #1024

54 | JavaOne | Session # Conclusion | JavaOne | Session #1024

55 Other Java API’s for IP Communications
JAIN Presence and IM - Panasonic JAIN SIMPLE – Panasonic JAIN SIP Lite - Ubiquity JAIN Enum – NetNumber JAIN MGCP – Telcordia JAIN Megaco – Hughes Software Systems JAIN SDP – dynamicsoft | JavaOne | Session #1024

56 | JavaOne | Session # Summary IP Communications is the crux of NGN’s, investment and converged applications. Java and IP Communications together enable a developers working environment. You can develop services today with an open source SIP stack supporting standardized Java API’s. The Internet and communications networks will converge, Java developers will capitalize. E N D | JavaOne | Session #1024

57 If You Only Remember One Thing…
| JavaOne | Session # If You Only Remember One Thing… Communications is the ‘Killer App’. IP Communications & Java lets you ‘play’! The Internet – – IM The Mobile Phone – SMS - MMS …….. What’s next? The possibilities are endless! E N D | JavaOne | Session #1024

58 Q&A

59 | JavaOne | Session #


Download ppt "Java Technology for Internet Communications"

Similar presentations


Ads by Google