46fc1d4748557cc4d492adab8484f8df.ppt
- Количество слайдов: 24
JMS Web. Services Petr Aubrecht CA Je 10 druhů lidí: ti, kteří rozumí binárnímu kódu, a ti, kteří ne
Co dnes probereme - JMS - posílání zpráv - textové zprávy, objekty - Web. Services - vzdálené volání funkcí - oboje je dostupné v JEE - WS je dostupné i v JRE (jednoduchý web server) - vhodné pro integraci různých systémů
JMS
JMS - Java Messaging System - asynchronní komunikace - robustní řešení, zaručené doručení zprávy - volitelně priority, timeout - Loosely coupled communication, Message-Oriented Middleware - je možné kombinovat spojovat různé aplikace - vlastní implementace je záležitost implementace, definováno je rozhraní pro uživatele - např. Glassfish má connectory pro připojení na další systémy - legacy systémy, CORBA, mail, Jabber/XMPP
JMS - v případě JEE se o veškerou agendu stará kontejner - connections, vytváření zpracovávajících objektů - škálování, příp. load balancing schéma životní cyklus
Message Driven Bean - Jsou dva typy posílání zpráv, je potřeba zaregistrovat (!) - queue, point to point messaging domain - topic, publish/subscribe messaging domain - zpracování může být - synchronní (volání receive) - asynchronní (listener) - Posílat se mohou zprávy - textové - objektové - dále Map, Bytes, Stream, Empty - zprávy mohou mít textové atributy (key/value)
Queue, Topic - Queue - Topic
JMS zpráva - Definuje několik typů zpráv - Jak je zpráva serializována už definováno není - Zpráva má hlavičku, properties a tělo - Hlavička pro routing zprávy - delivery mode, msg ID, timestamp, priorita, Reply. To, msg type - Properties (jméno, hodnota) - Aplikační + MOM specifické údaje - Díky unifikaci zpráv lze vybírat zprávy podle údajů v hlavičce (tzv. Selektor) (SQL 92 subset) - Tělo - Stream, Map, Text, Object, Bytes
Definice queue/topicu @Message. Driven(mapped. Name = "jms/Test. Queue", activation. Config = { @Activation. Config. Property(property. Name = "acknowledge. Mode", property. Value = "Auto-acknowledge"), @Activation. Config. Property(property. Name = "destination. Type", property. Value = "javax. jms. Queue") }) public class New. Message. Bean implements Message. Listener { public New. Message. Bean() {} public void on. Message(Message message) { } }
Poslání zprávy @Resource(name = "jms/Test. Queue") private Queue test. Queue; @Resource(name = "jms/Test. Queue. Factory") private Connection. Factory test. Queue. Factory; . . . Connection connection = test. Queue. Factory. create. Connection(); Session session = connection. create. Session(false, Session. AUTO_ACKNOWLEDGE); Message. Producer message. Producer = session. create. Producer(test. Queue); message. Producer. send(create. JMSMessage. Forjms. Test. Queue(session, session. create. Text. Message(„Ahoj!“)));
Implementace JMS - Komerční - IBM MQ, Sonic MQ, Fiorano, BEA, Sun MQ - Open Source - Open. JMS, Active. MQ, Jboss. Messaging, JBoss. MQ - mom 4 j, JORAM, Manta. Ray, Uber. MQ
Web Service
Web Service - protokol založený na XML a HTTP - původní motivace byla jednoduchost a využití stávajících zvládnutých technologií - Corba byla na Microsoft příliš složitá (i to XML je pro ně těžký, ale už je to lepší) - průchod skrz firewally - jak psát nové firewally, aby omezily útoky přes WS? - opravdu snadná implementace (na základní úrovni)
W 3 C definice A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machineprocessable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.
Technologie - XML (Extensible Markup Language) - WSDL (Web Services Description Language) - UDDI (Universal Description, Discovery and Integration) - A Web Service is located by its listing in a UDDI - SOAP (Simple Object Access Protocol) - Web Services communicate using SOAP - Dále - XML-RPC - JAX-RPC, JAX-WS
UDDI (Universal Description, Discovery and Integration) - Popisuje služby (services), podobné zlatým stránkám - Slouží k vyhledání vhodné služby pro klienta - “creates a platform-independent, open framework for describing services, discovering businesses, and integrating business services using the Internet. ” - Přístup z Javy pomocí JAXR technologie
WSDL (Web Services Description Language) - Definuje interface dané služby - Types: datové typy (např. pomocí XSD) - Messages: typy zpráv pro komunikaci - Operations: akce podporované službou - Bindings: komunikační protokoly použité pro přenos dat - Ports: komunikační brány (binding + adresa) - Service: popis daní služby
SOAP (Simple Object Access Protocol) - “Lightweight” protokol, nezávislý na platformě a programovacím jazyku - Obálka a tělo zprávy - Typicky přenášený pomocí HTTP - Typicky request-response komunikace
Typické použití - Klient kontaktuje UDDI registr aby nalezl vhodnou službu (web service) - Klient získá WSDL dané služby - Klient vytvoří SOAP zprávu a pošle ji službě - Služba zpracuje požadavek a může odeslat SOAP odpověď
Java technologie pro Web Services - JAX-RPC: API for XML-based RPC - JAXR: Java API for XML Registries - JAXB: Java Architecture for XML Binding - JAXP: API for XML Processing - JAXM: API for XML Messaging - SAAJ: SOAP with Attachments API - JAX-WS: Java API for XML Web Services - Nahrazuje JAX-RPC
Prostředí Web Services v Javě - Apache Axis - od Apache konzorcia, verze 2. 0 je stále vidět - JEE kontainer (Glassfish, JBoss, komerční) - řeší i security, transakce - integrují technologie z předchozí strany - stateless session beans mohou být zpřístupněny pro WS - JSE - základní podpora pro klienta i server
• RESTful Web Services - Jiný způsob jak vytvářet Web Services - REST = Representational State Transfer - Inspirováno WWW (resources, URI, . . . ) - Jednoznačná identifikace zdroje pomocí URI - http: //mycomp. com/eshop/coffee/item/14582 - Veškerý stav přenášen v URI - obecný interface pro přístup ke zdrojům (e. g. , HTTP GET, POST, PUT, DELETE) - Architektonický styl, ne standard
Závěr - Vyzkoušejte, není to složité. - Další čtení - Sun JEE tutorial: http: //java. sun. com/javaee/5/docs/tutorial/doc/bncgl. h tml - Java Passion: http: //www. javapassion. com/javaee_advanced / - Celé se to začne komplikovat, když dojde na zabezpečení, login, transakce atd. Objeví se nekompatibilita, takže pro opravdu kritická nasazení nasadit řešení jednoho výrobce (typicky buď všechno od MS nebo nic : -) ).
46fc1d4748557cc4d492adab8484f8df.ppt