JavaPolis 2004 Java Technologies for Telecom •Gerard Maas Software Architect •Bert Van Vlerken Research Engineer Alcatel Bell Overall Presentation Goal Illustrate how JCA 1.5 and JAIN SLEE 1.0 offer a new and better way to create, integrate, and support telecom-scale services IMPLEMENTING REAL ICT! Speaker’s Qualifications • Gerard Maas – is a Software Architect at Alcatel, creating a J2EE based Telecom integration product – presented his recent work on J2EE and Telecom integration at JavaOne 2004 • Bert Van Vlerken – is a Research Engineer at Alcatel, investigating Java based Service Delivery and Execution Platforms – is lecturer on JAIN SLEE at the Alcatel University Outline • Java & Telecom • Java Connector Architecture 1.5 • JAIN Service Logic Execution Environment • Conclusions Outline • Java & Telecom • Java Connector Architecture 1.5 • JAIN Service Logic Execution Environment • Conclusions Socket NIO JAIN SIP SIP Servlets JAIN MEGACO JAIN INAP HTTP JCC Java loves Telecom, does Telecom love Java ? • Java has had a hard time getting into the telecom space, now 2 technologies are going to change that ! IT/Telecom Convergence IT Client/Server Application Server Carrier Grade Application Server J2EE Softswitch JAIN SLEE Intelligent Network Telecoms Convergence is Happening IP Positioning Servlets Basic Services High Level 3rd Party Itf WebServices JSP J2EE Service Logic Service Primitives Network Element Connector Supporting Components Nw Tx JAIN SLEE GerardConnector JMX Agent Component Container SLEE Timer Facility Bert SBB SBB Alarm Facility SLEE & Service Management Interfaces Trace Facility Usage Facility Event Dispatcher SBB SBB SBB Convergence Requires … • Operators want – Integrated OSS/BSS o o – Faster time to market for their services o o – Easier development Increase developer base Open Standards o o – Single mode of operation Single subscriber concept Increased service portability More ‘shopping’ possibilities Common services & capabilities across all networks • Leading to 1. A Service Environment that bridges the gap between OSS/BSS and various network technologies 2. Converged platforms supporting existing and new services Outline • Java & Telecom • Java Connector Architecture 1.5 • JAIN Service Logic Execution Environment • Conclusions Java Connector Architecture 1.5 Application Server Container Connector Services System Level Contracts J2EE 1.4 Connection Management Work Management Resource Lifecycle Management Adapter Security Contract Resource Adapter Transaction Management Existing System Existing System Java Connector Architecture 1.5 Application Server Connection Management Work Management Security Contract Lifecycle Management Transaction Management ResourceAdapterImpl Connection Conn. Factory Managed Connection Factory bootstrap Work Manager Work Work Resource Endpoint Adapter Factory Managed Managed Managed Connection Connection Connection Managed Managed Managed Connection Connection Connection Managed Managed Managed Connection Connection Connection Container Connector Services System Level Contracts J2EE 1.4 Message Message Endpoint Message Endpoint Endpoint Existing System JCA 1.5: Connection Contract/Sync ConnectionFactory factory = < JNDI Lookup > Container Connector Services Connection conn = factory.getConnection(…); Managed Connection Pool Application Server EJB J2EE 1.4 Connection Management Resource Adapter X X X result = conn.send(request); Same address space Existing System JCA 1.5: Connection Contract/Async Container Connector Services EndpointActivation - endpoint factory - activationSpec Application Server J2EE 1.4 bootstrap Connection Management Resource Adapter X X X MDB’s endpoint factory Same address space Bootstrap phase Existing System JCA 1.5: Connection Contract/Sync Application Server Container Connector Services J2EE 1.4 Connection Management X Resource Adapter MessageEndpointFactory.createEndPoint() X endPoint.onMessage(message); X message) { public void onMessage(MyMessageType data = otherBean.process(message); X report.create(data); store(data); } Same address space Existing System Outline • Java & Telecom • Java Connector Architecture 1.5 • Use Case 1: Bulk file import • JAIN Service Logic Execution Environment • Conclusions JCA 1.5: UC1. File Based Bulk Upload. (OSS Integration.) Timer Service J2EE File parser Record processor X JMS Client JMS Queue X X X Standalone JVM MDB flowManagement.deliver( X ) OSS Interface Contract: • X times/day a new file comes in • The CSV format should be parsed & converted into records • The records should be passed to the app server for processing • The records must be ‘dosed’ to avoid undesired peak loads JCA 1.5: UC1. File Based Bulk Upload. (OSS Integration.) Issues with this solution • Management & monitoring is complex – Involves several disparate systems – Lifecycle management must be custom developed – Extra configuration needed o On the App server o On the standalone VM • Resources are not used optimally – No service re-usability (eg. Scheduler, File reader) – Extra VM o Implies static memory allocation, threads • Difficult to scale & cluster; fragile – Problem tracking involves several disparate systems JCA 1.5: UC1. File Based Bulk Upload. JCA Solution Application Server RecordMDB processor X flowManagement.deliver( Timer Service X ) Container Connector Services J2EE 1.4 File Adapter Record pre-processor File Reader Worker (Scheduled) File System JCA 1.5: UC1. File Based Bulk Upload. JCA Solution Application Server RecordMDB processor flowManagement.deliver( X ) Container Connector Services J2EE 1.4 CSV File Adapter Record pre-processor File Reader Worker (Scheduled) File System JCA 1.5: UC1. File Based Bulk Upload. JCA Solution Application Server RecordXMDB processor flowManagement.deliver( X ) RecordYMDB processor flowManagement.deliver( Y Container Connector Services J2EE 1.4 CSV File Adapter Record pre-processor File Reader Worker (Scheduled) ) File System X Y JCA 1.5: UC1. File Based Bulk Upload. JCA Solution In this solution: • Management & monitoring are standardized and handled by the Application Server • Resources (threads, memory, file system) are managed, shared and used optimally It is: • Integrated, robust, scalable, extendable On top of that… • The connector is a reusable and generic component : Architecturally SOUND! Outline • Java & Telecom • Java Connector Architecture 1.5 • Use Case 2: Real Time Rating • JAIN Service Logic Execution Environment • Conclusions JCA 1.5: UC2. Real Time Rating. WebService JSP/Servlets J2EE Rating User Profile Provisioning Third Party Call Accounting Multimedia Message Call notification Payment Terminal Location Short Message User Status APPLICATION TIME CRITICAL DPE BUS PSE Rating Engine Stats & alarms Loc. Server ….. NETWORK TIME CRITICAL DPE BUS OSP JCA 1.5: UC2. Real Time Rating. WebServices JSP/Servlets J2EE Rating Rating User Profile Provisioning Third Party Call Accounting Multimedia Message Call notification Payment Terminal Location Short Message User Status APPLICATION TIME CRITICAL DPE BUS PSE Rating Engine Stats & alarms Loc. Server ….. NETWORK TIME CRITICAL DPE BUS OSP JCA 1.5: UC2. Real Time Rating. WebService s JSP/Servlets J2EE Rating Rating Rating Rating Rating APPLICATION TIME CRITICAL DPE BUS PSE Rating Engine Stats & alarms Loc. Server ….. NETWORK TIME CRITICAL DPE BUS OSP JCA 1.5: UC2. Real Time Rating. Servlets Basic Services High Level 3rd Party Itf WebServices JSP J2EE Service Logic Service Primitives Supporting Components Nw Tx DPE BUS Connector APPLICATION TIME CRITICAL DPE BUS PSE Rating Engine Stats & alarms Loc. Server ….. NETWORK TIME CRITICAL DPE BUS OSP JCA 1.5: UC2. Real Time Rating. Application Server Container Connector Services J2EE 1.4 getBalance(Account) { Rating EJB getBalance(Account) adviceOfCharge(Account, item) reserveAmount(Account,€$) chargeAmount(Account, €$) } releaseAmount(Account, €$) DPE Conn Connection = ConnectionFactory.getConnetion(); DPEMessage = Connection.createMessage(Service); Message primitives DpeMessage.setRequestType(BALANCE_OP); request, send(Async) DpeMessage.setAccount(Account); result = Connection.request(DpeMessage); sync Connection.close(); async return result; Protocol Impl NIO NIO APPLICATION TIME CRITICAL DPE BUS JCA 1.5: UC2. Real Time Rating. Performance Comparison 400% 350% 300% 250% JAR-Based Connector 200% 150% 100% 50% 0% CPU usage Normalized on JAR-Based Communication (legacy) CAPS Outline • Java & Telecom • Java Connector Architecture 1.5 • JAIN Service Logic Execution Environment • Conclusions JAIN SLEE Application Server Low Latency High Throughput Event Processing • Standardized in the Java Community Process (JCP): – JSR 22: started in July 1999, R1.0 released Feb 2004 – JSR 240: started March 2004, specifies resource adapter framework JAIN SLEE Management Application JMX Agent Component Container SLEE Timer Facility SBB SBB Alarm Facility SLEE & Service Management Interfaces SBB Trace Facility Usage Facility SBB SBB Event Dispatcher JAIN Application Interfaces N e t w o r k HTTP, SIP HTTP, SIP IP/LAN/WAN/3G DSL/WLL A d a p t e r s CAP, WIN SMS, WAP PLMN INAP, AIN PSTN JAIN SLEE Features • Event based component infrastructure – Event router: routes events to interested event consumers – Dynamic event channels: Activities & ActivityContexts – Event filtering support • Designed for performance – Lightweight transactions for low latency – In memory profile data – Garbage Collection linked to life cycle management • Standard Profile Facility – Makes provisioning easy & consistent • The usual container stuff… – Life cycle management, pooling, threading, … Component architecture • The main deployable unit in JAIN SLEE is a Service • A Service consists of – one or more Service Building Blocks (SBBs) – zero or more Profile Table references – zero or more Resource Adaptor references Profile Tables Service SBB RA SBB SBB RA • The SBBs contain the application logic • The Profile Tables represent provisioned data • The Resource Adaptors are the external interfaces Dynamic Event Channels Activities & Activity Contexts SBB Container Resource Adaptor Framework JAIN SLEE 1.0 X public void onEventA(EventA e, AcitivtyContextInterface aci) { doWork(e); } SBB SBB Resource Adapter Framework.activityCreated(activity); X X Framework.sendEvent(activity, eventA); Framework.sendEvent(activity, eventB); public void onEventB(EventB e, AcitivtyContextInterface aci) { doWork(e); } Same address space Network Element Asynchronism in J2EE • Implemented through message driven beans Get State from DB MD-EJB Custom Message Message MD-EJB event channel Message Queue JMS Message Database Relation to Queue or Topic is fixed in deployment descriptor MD-EJB Message Topic Create State in DB MD-EJB … Do I have to process this event ? Mapping of JAIN SLEE Concepts SBB Dynamically attach or detach from Activity Context Handled by JAIN SLEE Activity Context Event SBB Activity Context SBB State Event SBB Activity Context SBB Event Creation of SBB State is handled automatically Dynamic creation of Activity Contexts Outline • Java & Telecom • Java Connector Architecture 1.5 • JAIN Service Logic Execution Environment • Use Case: Prepaid Charging • Conclusions Usage scenario’s for JAIN SLEE • Network Services – Prepaid charging – Virtual Private Networks – Instant Messaging & Presence • Network Control – IP Multimedia Subsystem (IMS) (think SIP and Mobiles) – Call Control – Next Generation Networks (Voice over IP) JAIN SLEE Contains for each phone number a tarif scheme & account info SLEE Periodic ArmEvents Timer Timer Fetch Workmoney Profile Table Timer Facility PrePaid Charging Service Lookup Tarif Component Container SBB Instance A SBB Instance B A AccountManager API AccountManager RA Mobile CC RA Start Start Call Call A AccountManager Call Control API Mobile B Fixed CC RA PSTN JAIN SLEE Contains for each phone number a tarif scheme & account info SLEE Profile Table Timer Facility Component Container Cancel Timer PrePaid Charging Service SBB Instance A SBB Instance B A AccountManager API AccountManager RA Mobile CC RA Stop StopCall CallB AccountManager Call Control API Mobile B Fixed CC RA PSTN JAIN SLEE Contains for each phone number a tarif scheme & account info SLEE Profile Table Timer Facility PrePaid Charging Service Refund Leftover Component Container SBB Instance A SBB Instance B A AccountManager API AccountManager RA Call Control API Mobile CC RA Mobile AccountManager B Fixed CC RA PSTN JAIN SLEE Contains for each phone number a tarif scheme & account info SLEE Profile Table Timer Facility PrePaid Charging Service Component Container SBB Instance A A AccountManager API AccountManager RA Call Control API Mobile CC RA Mobile AccountManager Fixed CC RA PSTN JAIN SLEE Contains for each phone number a tarif scheme & account info SLEE Profile Table Timer Facility PrePaid Charging Service Component Container SBB Instance A A AccountManager API AccountManager RA Call Control API Mobile CC RA Mobile AccountManager Fixed CC RA PSTN JAIN SLEE Contains for each phone number a tarif scheme & account info SLEE Profile Table Timer Facility Component Container PrePaid Charging Service AccountManager API AccountManager RA Call Control API Mobile CC RA Mobile AccountManager Fixed CC RA PSTN Outline • Java & Telecom • Java Connector Architecture 1.5 • JAIN Service Logic Execution Environment • Conclusions Summary • JCA 1.5 – Communicate with external system. – Reuses basic services for integration code. – Enables real J2EE integration in many domains • JAIN SLEE 1.0 – Low-latency, High Throughput, Event processing – Dynamic event channels: Activities & Activity Contexts – Service Building Blocks If You Only Remember One Thing… YES, Telecom loves Java ! ? … does Telecom love Java Socket Socket NIO JAIN SIP SIPNIO Servlets JAIN SIP SIP Servlets JAIN JAIN SLEE JCA 1.5 MEGACO JAIN INAP HTTP MEGACO JAIN INAP JAIN JCC JCC HTTP JavaPolis 2004 •Gerard Maas gerard.maas@alcatel.be •Bert Van Vlerken bert.van_vlerken@alcatel.be www.alcatel.be