SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
ably
                                 prob
What's coming
in Java Message Service 2.0
Arun Gupta, Java EE & GlassFish Guy
blogs.oracle.com/arungupta, @arungupta
 1 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
The following is intended to outline our general product direction. It is
intended for information purposes only, and may not be incorporated into any
contract. It is not a commitment to deliver any material, code, or functionality,
and should not be relied upon in making purchasing decisions. The
development, release, and timing of any features or functionality described
for Oracle s products remains at the sole discretion of Oracle.




2 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |   2	
  
Agenda

   •  JSR 343 Update
   •  What's in the JMS 2.0 Early Draft
            –  Simplifying the JMS API
            –  Improving integration with application servers
            –  New API features
   •  Q&A



3 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |   3	
  
                                                                                      3	
  
JMS

   •  Java Message Service (JMS) specification
            –  Part of Java EE but also stands alone
            –  Last maintenance release (1.1) was in 2003
   •  Does not mean JMS is moribund!
            –  Multiple active commercial and open source implementations
            –  Shows strength of existing spec
   •  Meanwhile
            –  Java EE has moved on since, and now Java EE 7 is planned
            –  Time for JMS 2.0
4 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |   4	
  
JMS 2.0

•  March 2011: JSR 343 launched to
   develop JMS 2.0
•  Target: to be part of Java EE 7 in Q2
   2013
•  Early Draft released
•  Community involvement invited
  –  Visit jms-spec.java.net
     and get involved
  –  Join the mailing list
  –  Submit suggestions to the issue tracker


  5 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |   5	
  
JSR 343 Expert Group




                                                                              ...
6 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Initial goals of JMS 2.0

•  Simpler and easier to use                                                    •  Standardise interface with
  –  simplify the API                                                              application servers
  –  make use of CDI (Contexts and                                              •  Clarify relationship with other
     Dependency Injection)                                                         Java EE specs
  –  clarify any ambiguities in the spec                                          –  some JMS behaviour defined in
•  Support new themes of Java EE 7                                                   other specs
  –  PaaS                                                                       •  New messaging features
  –  Multi-tenancy                                                                –  standardize some existing vendor
                                                                                     extensions (or will retrospective
                                                                                     standardisation be difficult?)

  7 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |                                    7	
  
JMS 2.0 Timeline

     ✔	

                              Forma0on	
  of	
  expert	
  group	
        Q2	
  2011	
  


     ✔	

                               Prepara0on	
  of	
  early	
  dra;	
  



     ✔	

                                        Early	
  dra;	
  review	
        Q1	
  2012	
  

                                       Prepara0on	
  of	
  public	
  dra;	
  


                                                      Public	
  review	
          Q3	
  2012	
  


                                        Comple0on	
  of	
  RI	
  and	
  TCK	
  

                                                                                  Q1	
  2013	
  
                                              Final	
  approval	
  ballot	
  
8 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |                        8	
  
What's in the Early Draft
   •  Here are some items in the JMS 2.0 Early Draft
            –  Based on Expert Group members' priorities
            –  All items in JIRA at jms-spec.java.net
   •  Things are still changing
   •  It's not too late
            –  to give us your views on these items
            –  to propose additional items for a later draft or revision



9 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |   9	
  
Simplifying the JMS API




10 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
What's wrong with the JMS API?
    Not a lot...




11 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Receiving messages in Java EE

         @MessageDriven(mappedName = "jms/inboundQueue")
         public class MyMDB implements MessageListener {

                   public void onMessage(Message message) {
                      String payload = (TextMessage)textMessage.getText();
                      // do something with payload
                   }

         }




12 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Sending messages in Java EE

      @Resource(lookup = "jms/connFactory")
      ConnectionFactory cf;
      @Resource(lookup="jms/inboundQueue")
      Destination dest;

      public void sendMessage (String payload) throws JMSException {
         Connection conn = cf.createConnection();
         Session sess =
            conn.createSession(false,Session.AUTO_ACKNOWLEDGE);
         MessageProducer producer = sess.createProducer(dest);
         TextMessage textMessage = sess.createTextMessage(payload);
         messageProducer.send(textMessage);
         connection.close();
      }




13 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Sending messages in Java EE
      @Resource(lookup = "jms/connFactory")                                    Need to create
      ConnectionFactory cf;                                                    intermediate objects
      @Resource(lookup="jms/inboundQueue")                                     just to satisfy the API
      Destination dest;

      public void sendMessage (String payload) throws JMSException {
         Connection conn = cf.createConnection();
         Session sess =
            conn.createSession(false,Session.AUTO_ACKNOWLEDGE);
         MessageProducer producer = sess.createProducer(dest);
         TextMessage textMessage = sess.createTextMessage(payload);
         messageProducer.send(textMessage);
         connection.close();
      }




14 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Sending messages in Java EE
        @Resource(lookup = "jms/connFactory")
        ConnectionFactory cf;                                                  Redundant
        @Resource(lookup="jms/inboundQueue")                                   arguments
        Destination dest;

        public void sendMessage (String payload) throws JMSException {
           Connection conn = cf.createConnection();
           Session sess =
              conn.createSession(false,Session.AUTO_ACKNOWLEDGE);
           MessageProducer producer = sess.createProducer(dest);
           TextMessage textMessage = sess.createTextMessage(payload);
           messageProducer.send(textMessage);
           connection.close();
        }




15 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Sending messages in Java EE

      @Resource(lookup = "jms/connFactory")
      ConnectionFactory cf;
      @Resource(lookup="jms/inboundQueue")
      Destination dest;                                                        Boilerplate code
      public void sendMessage (String payload) throws JMSException {
         Connection conn = cf.createConnection();
         Session sess =
            conn.createSession(false,Session.AUTO_ACKNOWLEDGE);
         MessageProducer producer = sess.createProducer(dest);
         TextMessage textMessage = sess.createTextMessage(payload);
         messageProducer.send(textMessage);
         connection.close();
      }




16 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Sending messages in Java EE
      public void sendMessage (String payload) throws JMSException {
         try {
            Connection conn = null;
            con = cf.createConnection();
            Session sess =
               conn.createSession(false,Session.AUTO_ACKNOWLEDGE);
            MessageProducer producer = sess.createProducer(dest);
            TextMessage textMessage=sess.createTextMessage(payload);
            messageProducer.send(textMessage);
         } finally {
            connection.close();
         }
      }
                                                                               Need to close
                                                                               connections
                                                                               after use


17 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Sending messages in Java EE
      public void sendMessage (String payload) {
         Connection conn = null;
         try {
            con = cf.createConnection();
            Session sess =
               conn.createSession(false,Session.AUTO_ACKNOWLEDGE);
            MessageProducer producer = sess.createProducer(dest);
            TextMessage textMessage=sess.createTextMessage(payload);
            messageProducer.send(textMessage);
         } catch (JMSException e1) {
            // do something
         } finally {
            try {
               if (conn!=null) connection.close();
            } catch (JMSException e2){
               // do something else
            }                                             And there's
         }                                                always exception
      }                                                   handling to add

18 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Approaches to simplification

    •  Simplify the existing API
    •  Define new simplified API
    •  Use CDI annotations to hide the boilerplate code




19 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |   19	
  
Simplify the existing API

•  Need to maintain backwards compatibility limits scope for change
   –  New methods on javax.jms.Connection:
        •  Keep existing method
          connection.createSession(transacted,deliveryMode)

        •  New method for Java SE

         connection.createSession(sessionMode)

        •  New method for Java EE

         connection.createSession()
  –  Make javax.jms.Connection implement java.lang.AutoCloseable

   20 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Sending a Message (Java EE)
    Standard API
        @Resource(lookup = "jms/connectionFactory ")
        ConnectionFactory connectionFactory;

        @Resource(lookup="jms/inboundQueue")
        Queue inboundQueue;

        public void sendMessageOld (String payload) throws JMSException {
        try (Connection connection = connectionFactory.createConnection()) {
             Session session = connection.createSession();
             MessageProducer messageProducer = session.createProducer(inboundQueue);
             TextMessage textMessage = session.createTextMessage(payload);
             messageProducer.send(textMessage);
          }
        }




21 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Sending a Message (Java EE)
    New Simplified API
        @Resource(mappedName="jms/contextFactory")
        ContextFactory contextFactory;

        @Resource(mappedName="jms/inboundQueue")
        Queue inboundQueue;

        public void sendMessage(String payload) {
           try (JMSContext context = contextFactory.createContext();){
                 context.send(inboundQueue,payload);
           }
        }




22 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Sending a Message (Java EE)
    New Simplified API (With Injection)
        @Inject
        @JMSConnectionFactory("jms/contextFactory")
        JMSContext context;

        @Resource(mappedName="jms/inboundQueue")
        Queue inboundQueue;

        public void sendMessage(String payload) {
            context.send(inboundQueue,payload);
        }




23 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Receiving a Message Asynchronously
    Standard API
        @Resource(lookup = "jms/connectionFactory")
        ConnectionFactory connectionFactory;

        @Resource(lookup="jms/inboundQueue")
        Queue inboundQueue;

        public String receiveMessageOld() throws JMSException {
            try (Connection connection = connectionFactory.createConnection()) {
                connection.start();
                Session session = connection.createSession();
                MessageConsumer messageConsumer = session.createConsumer(inboundQueue);
                TextMessage textMessage = (TextMessage)messageConsumer.receive();
                String payload = textMessage.getText();
                return payload;
             }
        }



24 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Receiving a Message Asynchronously
    New Simplified API
        @Resource(lookup = "jms/connectionFactory")
        ConnectionFactory connectionFactory;

        @Resource(lookup="jms/inboundQueue")
        Queue inboundQueue;

        public String receiveMessageNew() {
            try (JMSContext context = connectionFactory.createContext()) {
                JMSConsumer consumer = context.createConsumer(inboundQueue);
                return consumer.receivePayload(String.class);
            }
        }




25 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Receiving a Message Asynchronously
    New Simplified API (With Injection)
        @Inject
        @JMSConnectionFactory("jms/connectionFactory")
        private JMSContext context;

        @Resource(lookup="jms/inboundQueue")
        Queue inboundQueue;

        public String receiveMessageNew() {
            JMSConsumer consumer = context.createConsumer(inboundQueue);
            return consumer.receivePayload(String.class);
        }




26 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Some other simplifications




27 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Making durable subscriptions easier to use

    •  Durable subscriptions are identified by
       {clientId, subscriptionName}
    •  ClientId will no longer be mandatory when using
       durable subscriptions
    •  For a MDB, container will generate default subscription
       name (EJB 3.2)



28 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |   28	
  
New features for PaaS




29 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Annotations to create resources in Java EE

    •  Currently no standard way for an application to define
       what JMS resources should be created in the application
       server and registered in JNDI
    •  No equivalent to DataSourceDefinition:
                @DataSourceDefinition(name="java:global/MyApp/MyDataSource",
                   className="com.foobar.MyDataSource",
                   portNumber=6689,
                   serverName="myserver.com",
                   user="lance",
                   password="secret" )




30 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Annotations to create resources in Java EE

    •  JSR 342 (Java EE 7) will define new annotations
    •  Possible new SPI to create the physical destinations
           @JMSConnectionFactoryDefinition(
              name="java:app/MyJMSFactory",
              resourceType="javax.jms.QueueConnectionFactory",
              clientId="foo",
              resourceAdapter="jmsra",
              initialPoolSize=5,
              maxPoolSize=15 )

           @JMSDestinationDefinition(
              name="java:app/orderQueue",
              resourceType="javax.jms.Queue",
              resourceAdapter="jmsra",
              destinationName="orderQueue")
31 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Improving Integration
    with
    Application Servers




32 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Defining the interface between
    JMS provider and an application server


    •  Requirement: allowing any JMS provider to work in any
       Java EE application server
    •  Current solution: JMS 1.1 Chapter 8 JMS Application
       Server Facilities




33 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
JMS 1.1 Chapter 8
    JMS Application Server Facilities
    •  Interfaces all optional, so not all vendors implement them
    •  No requirement for application servers to support them
    •  Some omissions
             –  No support for pooled connections
    •  Meanwhile…




34 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Java EE Connector Architecture (JCA)

    •  Designed for integrating pooled, transactional resources
       in an application server
    •  Designed to support async processing of messages by
       MDBs
    •  JCA support already mandatory in Java EE
    •  Many JMS vendors already provide JCA adapters



35 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Defining the interface between
    JMS provider and an application server
    •  JMS 2.0 will make provision of a JCA adaptor mandatory
    •  JMS 1.1 Chapter 8 API remains optional, under review




36 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Improvements to MDBs

    •  Proposals being sent to JSR 342 (EJB 3.2)
    •  Fill "gaps" in MDB configuration
    •  Surprisingly, no standard way to specify
             –  JNDI name of queue or topic (using annotation)
             –  JNDI name of connection
             –  clientID!
             –  durableSubscriptionName!



37 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Defining the destination used by a MDB

    •  annotation...
               @MessageDriven(messageDestinationLookup="jms/inboundQueue”)
                public class MyMDB implements MessageListener {
                     ...




    •  ejb-jar.xml...
              <ejb-jar>
                 <enterprise-beans>
                    <message-driven>
                        <ejb-name>MessageBean</ejb-name>
                        <message-destination-lookup-name>
                           jms/inboundQueue
                        <message-destination-lookup-name>
               … all names are provisional
38 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Defining the connection factory used by a MDB

    •  annotation...
          @MessageDriven(connectionFactoryLookup="jms/myCF")
           public class MyMDB implements MessageListener {
                ...




    •  ejb-jar.xml...
           <ejb-jar>
              <enterprise-beans>
                 <message-driven>
                     <ejb-name>MessageBean</ejb-name>
                     <connection-factory-lookup-name>
                        jms/myCF
                     <connection-factory-lookup-name>

           ...all names provisional
39 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Defining the clientId and
    durable subscription name used by a MDB
    •  Define as standard activation config properties
 @MessageDriven(activationConfig = {
    @ActivationConfigProperty(
       propertyName="subscriptionDurability",propertyValue="Durable"),
    @ActivationConfigProperty(
       propertyName="clientId",propertyValue="MyMDB"),
    @ActivationConfigProperty(
       propertyName="subscriptionName",propertyValue="MySub")
 })




    •  Many app servers support these already

40 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
New API Features




41 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
New API features

    •  Delivery delay
    •  Send a message with async acknowledgement from server
    •  JMSXDeliveryCount becomes mandatory
    •  Multiple consumers on the same topic subscription (both durable
       and non-durable)
    •  Some products implement some of these already




42 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Delivery delay

    •  Allows a JMS client to schedule the future delivery of a message
    •  New method on MessageProducer
                   public void setDeliveryDelay(long deliveryDelay)


    •  Sets the minimum length of time in milliseconds from its dispatch
       time that a produced message should be retained by the messaging
       system before delivery to a consumer.
    •  Why? If the business requires deferred processing, e.g. end of day



43 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Send a message with async
    acknowledgement from server
    •  Send a message and return immediately without blocking until an
       acknowledgement has been received from the server.
    •  Instead, when the acknowledgement is received, an asynchronous
       callback will be invoked
           producer.send(message, new AcknowledgeListener(){
            public void onAcknowledge(Message message) {
                 // process ack
               }
           });

    •  Why? Allows thread to do other work whilst waiting for the
       acknowledgement

44 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Make JMSXDeliveryCount mandatory

    •  JMS 1.1 defines an optional JMS defined message
       property JMSXDeliveryCount.
             –  When used, this is set by the JMS provider when a message is
                received, and is set to the number of times this message has
                been delivered (including the first time). The first time is 1, the
                second time 2, etc
    •  JMS 2.0 will make this mandatory
    •  Why? Allows app servers and applications to handle
       "poisonous" messages better
45 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Multiple consumers on a topic subscription

    •  Allows scalable consumption of messages from a topic subscription
             –  multiple threads
             –  multiple JVMs
    •  No further change to API for durable subscriptions (clientID not used)
    •  New API for non-durable subscriptions
      MessageConsumer messageConsumer=
         session.createSharedConsumer(topic,sharedSubscriptionName);

    •  Why? Scalability
    •  Why? Allows greater scalability


46 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Get involved!

    •  Early Draft Already Available
    •  Mailing lists, issue tracker and wiki:
             –  jms-spec.java.net
    •  Join users@jms-spec.java.net to follow and contribute
    •  Applications to join the expert group
             –  http://jcp.org/en/jsr/summary?id=343
    •  Contact the spec lead
             –  nigel.deakin@oracle.com

47 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
Questions & Answers




48 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |

Contenu connexe

Tendances

GlassFish REST Administration Backend
GlassFish REST Administration BackendGlassFish REST Administration Backend
GlassFish REST Administration BackendArun Gupta
 
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012Arun Gupta
 
Java EE7 Demystified
Java EE7 DemystifiedJava EE7 Demystified
Java EE7 DemystifiedAnkara JUG
 
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3 Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3 Skills Matter
 
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012Arun Gupta
 
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgJava EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgArun Gupta
 
Understanding the nuts & bolts of Java EE 6
Understanding the nuts & bolts of Java EE 6Understanding the nuts & bolts of Java EE 6
Understanding the nuts & bolts of Java EE 6Arun Gupta
 
PaaSing a Java EE 6 Application at Geecon 2012
PaaSing a Java EE 6 Application at Geecon 2012PaaSing a Java EE 6 Application at Geecon 2012
PaaSing a Java EE 6 Application at Geecon 2012Arun Gupta
 
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUGJava EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUGArun Gupta
 
Java EE 6 Component Model Explained
Java EE 6 Component Model Explained Java EE 6 Component Model Explained
Java EE 6 Component Model Explained Shreedhar Ganapathy
 
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010Arun Gupta
 
Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 workshop at Dallas Tech Fest 2011Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 workshop at Dallas Tech Fest 2011Arun Gupta
 
GlassFish & Java EE Business Update @ CEJUG
GlassFish & Java EE Business Update @ CEJUGGlassFish & Java EE Business Update @ CEJUG
GlassFish & Java EE Business Update @ CEJUGArun Gupta
 
Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0Arun Gupta
 
Java EE 6 & GlassFish 3
Java EE 6 & GlassFish 3Java EE 6 & GlassFish 3
Java EE 6 & GlassFish 3Arun Gupta
 
Running your Java EE 6 applications in the Cloud
Running your Java EE 6 applications in the CloudRunning your Java EE 6 applications in the Cloud
Running your Java EE 6 applications in the CloudArun Gupta
 
Java EE7 in action
Java EE7 in actionJava EE7 in action
Java EE7 in actionAnkara JUG
 
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012Arun Gupta
 
Sun Java EE 6 Overview
Sun Java EE 6 OverviewSun Java EE 6 Overview
Sun Java EE 6 Overviewsbobde
 
JAX-RS 2.0: RESTful Web services on steroids at Geecon 2012
JAX-RS 2.0: RESTful Web services on steroids at Geecon 2012JAX-RS 2.0: RESTful Web services on steroids at Geecon 2012
JAX-RS 2.0: RESTful Web services on steroids at Geecon 2012Arun Gupta
 

Tendances (20)

GlassFish REST Administration Backend
GlassFish REST Administration BackendGlassFish REST Administration Backend
GlassFish REST Administration Backend
 
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
 
Java EE7 Demystified
Java EE7 DemystifiedJava EE7 Demystified
Java EE7 Demystified
 
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3 Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
 
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
 
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgJava EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
 
Understanding the nuts & bolts of Java EE 6
Understanding the nuts & bolts of Java EE 6Understanding the nuts & bolts of Java EE 6
Understanding the nuts & bolts of Java EE 6
 
PaaSing a Java EE 6 Application at Geecon 2012
PaaSing a Java EE 6 Application at Geecon 2012PaaSing a Java EE 6 Application at Geecon 2012
PaaSing a Java EE 6 Application at Geecon 2012
 
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUGJava EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
 
Java EE 6 Component Model Explained
Java EE 6 Component Model Explained Java EE 6 Component Model Explained
Java EE 6 Component Model Explained
 
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
 
Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 workshop at Dallas Tech Fest 2011Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 workshop at Dallas Tech Fest 2011
 
GlassFish & Java EE Business Update @ CEJUG
GlassFish & Java EE Business Update @ CEJUGGlassFish & Java EE Business Update @ CEJUG
GlassFish & Java EE Business Update @ CEJUG
 
Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0
 
Java EE 6 & GlassFish 3
Java EE 6 & GlassFish 3Java EE 6 & GlassFish 3
Java EE 6 & GlassFish 3
 
Running your Java EE 6 applications in the Cloud
Running your Java EE 6 applications in the CloudRunning your Java EE 6 applications in the Cloud
Running your Java EE 6 applications in the Cloud
 
Java EE7 in action
Java EE7 in actionJava EE7 in action
Java EE7 in action
 
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
 
Sun Java EE 6 Overview
Sun Java EE 6 OverviewSun Java EE 6 Overview
Sun Java EE 6 Overview
 
JAX-RS 2.0: RESTful Web services on steroids at Geecon 2012
JAX-RS 2.0: RESTful Web services on steroids at Geecon 2012JAX-RS 2.0: RESTful Web services on steroids at Geecon 2012
JAX-RS 2.0: RESTful Web services on steroids at Geecon 2012
 

Similaire à GIDS 2012: Java Message Service 2.0

What's new in JMS 2.0 - OTN Bangalore 2013
What's new in JMS 2.0 - OTN Bangalore 2013What's new in JMS 2.0 - OTN Bangalore 2013
What's new in JMS 2.0 - OTN Bangalore 2013Jagadish Prasath
 
'New JMS features in GlassFish 4.0' by Nigel Deakin
'New JMS features in GlassFish 4.0' by Nigel Deakin'New JMS features in GlassFish 4.0' by Nigel Deakin
'New JMS features in GlassFish 4.0' by Nigel DeakinC2B2 Consulting
 
What's new in Java Message Service 2?
What's new in Java Message Service 2?What's new in Java Message Service 2?
What's new in Java Message Service 2?Sivakumar Thyagarajan
 
Java EE 7 in practise - OTN Hyderabad 2014
Java EE 7 in practise - OTN Hyderabad 2014Java EE 7 in practise - OTN Hyderabad 2014
Java EE 7 in practise - OTN Hyderabad 2014Jagadish Prasath
 
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Arun Gupta
 
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...jaxLondonConference
 
GlassFish BOF
GlassFish BOFGlassFish BOF
GlassFish BOFglassfish
 
The Java EE 7 Platform: Productivity++ & Embracing HTML5
The Java EE 7 Platform: Productivity++ & Embracing HTML5The Java EE 7 Platform: Productivity++ & Embracing HTML5
The Java EE 7 Platform: Productivity++ & Embracing HTML5Arun Gupta
 
OTN Tour 2013: What's new in java EE 7
OTN Tour 2013: What's new in java EE 7OTN Tour 2013: What's new in java EE 7
OTN Tour 2013: What's new in java EE 7Bruno Borges
 
Whats Next for JCA?
Whats Next for JCA?Whats Next for JCA?
Whats Next for JCA?Fred Rowe
 
Java EE7
Java EE7Java EE7
Java EE7Jay Lee
 
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7Max Andersen
 
The Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the CloudThe Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the Cloudcodemotion_es
 
Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)Hamed Hatami
 
As novidades do Java EE 7: do HTML5 ao JMS 2.0
As novidades do Java EE 7: do HTML5 ao JMS 2.0As novidades do Java EE 7: do HTML5 ao JMS 2.0
As novidades do Java EE 7: do HTML5 ao JMS 2.0Bruno Borges
 
The Java EE 7 Platform: Productivity &amp; HTML5 at San Francisco JUG
The Java EE 7 Platform: Productivity &amp; HTML5 at San Francisco JUGThe Java EE 7 Platform: Productivity &amp; HTML5 at San Francisco JUG
The Java EE 7 Platform: Productivity &amp; HTML5 at San Francisco JUGArun Gupta
 
Why should i switch to Java SE 7
Why should i switch to Java SE 7Why should i switch to Java SE 7
Why should i switch to Java SE 7Vinay H G
 

Similaire à GIDS 2012: Java Message Service 2.0 (20)

What's new in JMS 2.0 - OTN Bangalore 2013
What's new in JMS 2.0 - OTN Bangalore 2013What's new in JMS 2.0 - OTN Bangalore 2013
What's new in JMS 2.0 - OTN Bangalore 2013
 
'New JMS features in GlassFish 4.0' by Nigel Deakin
'New JMS features in GlassFish 4.0' by Nigel Deakin'New JMS features in GlassFish 4.0' by Nigel Deakin
'New JMS features in GlassFish 4.0' by Nigel Deakin
 
What's new in Java Message Service 2?
What's new in Java Message Service 2?What's new in Java Message Service 2?
What's new in Java Message Service 2?
 
Java ee7 1hour
Java ee7 1hourJava ee7 1hour
Java ee7 1hour
 
Java EE 7 in practise - OTN Hyderabad 2014
Java EE 7 in practise - OTN Hyderabad 2014Java EE 7 in practise - OTN Hyderabad 2014
Java EE 7 in practise - OTN Hyderabad 2014
 
Java EE 7 - Overview and Status
Java EE 7  - Overview and StatusJava EE 7  - Overview and Status
Java EE 7 - Overview and Status
 
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5
 
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
 
WhatsNewInJMS21
WhatsNewInJMS21WhatsNewInJMS21
WhatsNewInJMS21
 
GlassFish BOF
GlassFish BOFGlassFish BOF
GlassFish BOF
 
The Java EE 7 Platform: Productivity++ & Embracing HTML5
The Java EE 7 Platform: Productivity++ & Embracing HTML5The Java EE 7 Platform: Productivity++ & Embracing HTML5
The Java EE 7 Platform: Productivity++ & Embracing HTML5
 
OTN Tour 2013: What's new in java EE 7
OTN Tour 2013: What's new in java EE 7OTN Tour 2013: What's new in java EE 7
OTN Tour 2013: What's new in java EE 7
 
Whats Next for JCA?
Whats Next for JCA?Whats Next for JCA?
Whats Next for JCA?
 
Java EE7
Java EE7Java EE7
Java EE7
 
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
Red Hat and Oracle: Delivering on the Promise of Interoperability in Java EE 7
 
The Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the CloudThe Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the Cloud
 
Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)
 
As novidades do Java EE 7: do HTML5 ao JMS 2.0
As novidades do Java EE 7: do HTML5 ao JMS 2.0As novidades do Java EE 7: do HTML5 ao JMS 2.0
As novidades do Java EE 7: do HTML5 ao JMS 2.0
 
The Java EE 7 Platform: Productivity &amp; HTML5 at San Francisco JUG
The Java EE 7 Platform: Productivity &amp; HTML5 at San Francisco JUGThe Java EE 7 Platform: Productivity &amp; HTML5 at San Francisco JUG
The Java EE 7 Platform: Productivity &amp; HTML5 at San Francisco JUG
 
Why should i switch to Java SE 7
Why should i switch to Java SE 7Why should i switch to Java SE 7
Why should i switch to Java SE 7
 

Plus de Arun Gupta

5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdf5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdfArun Gupta
 
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019Arun Gupta
 
Machine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and KubernetesMachine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and KubernetesArun Gupta
 
Secure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using FirecrackerSecure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using FirecrackerArun Gupta
 
Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019Arun Gupta
 
Why Amazon Cares about Open Source
Why Amazon Cares about Open SourceWhy Amazon Cares about Open Source
Why Amazon Cares about Open SourceArun Gupta
 
Machine learning using Kubernetes
Machine learning using KubernetesMachine learning using Kubernetes
Machine learning using KubernetesArun Gupta
 
Building Cloud Native Applications
Building Cloud Native ApplicationsBuilding Cloud Native Applications
Building Cloud Native ApplicationsArun Gupta
 
Chaos Engineering with Kubernetes
Chaos Engineering with KubernetesChaos Engineering with Kubernetes
Chaos Engineering with KubernetesArun Gupta
 
How to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAMHow to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAMArun Gupta
 
Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Arun Gupta
 
The Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 KeynoteThe Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 KeynoteArun Gupta
 
Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018Arun Gupta
 
Mastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv SummitMastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv SummitArun Gupta
 
Top 10 Technology Trends Changing Developer's Landscape
Top 10 Technology Trends Changing Developer's LandscapeTop 10 Technology Trends Changing Developer's Landscape
Top 10 Technology Trends Changing Developer's LandscapeArun Gupta
 
Container Landscape in 2017
Container Landscape in 2017Container Landscape in 2017
Container Landscape in 2017Arun Gupta
 
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Java EE and NoSQL using JBoss EAP 7 and OpenShiftJava EE and NoSQL using JBoss EAP 7 and OpenShift
Java EE and NoSQL using JBoss EAP 7 and OpenShiftArun Gupta
 
Docker, Kubernetes, and Mesos recipes for Java developers
Docker, Kubernetes, and Mesos recipes for Java developersDocker, Kubernetes, and Mesos recipes for Java developers
Docker, Kubernetes, and Mesos recipes for Java developersArun Gupta
 
Thanks Managers!
Thanks Managers!Thanks Managers!
Thanks Managers!Arun Gupta
 
Migrate your traditional VM-based Clusters to Containers
Migrate your traditional VM-based Clusters to ContainersMigrate your traditional VM-based Clusters to Containers
Migrate your traditional VM-based Clusters to ContainersArun Gupta
 

Plus de Arun Gupta (20)

5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdf5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdf
 
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019
 
Machine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and KubernetesMachine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and Kubernetes
 
Secure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using FirecrackerSecure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using Firecracker
 
Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019
 
Why Amazon Cares about Open Source
Why Amazon Cares about Open SourceWhy Amazon Cares about Open Source
Why Amazon Cares about Open Source
 
Machine learning using Kubernetes
Machine learning using KubernetesMachine learning using Kubernetes
Machine learning using Kubernetes
 
Building Cloud Native Applications
Building Cloud Native ApplicationsBuilding Cloud Native Applications
Building Cloud Native Applications
 
Chaos Engineering with Kubernetes
Chaos Engineering with KubernetesChaos Engineering with Kubernetes
Chaos Engineering with Kubernetes
 
How to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAMHow to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAM
 
Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018
 
The Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 KeynoteThe Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 Keynote
 
Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018
 
Mastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv SummitMastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv Summit
 
Top 10 Technology Trends Changing Developer's Landscape
Top 10 Technology Trends Changing Developer's LandscapeTop 10 Technology Trends Changing Developer's Landscape
Top 10 Technology Trends Changing Developer's Landscape
 
Container Landscape in 2017
Container Landscape in 2017Container Landscape in 2017
Container Landscape in 2017
 
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Java EE and NoSQL using JBoss EAP 7 and OpenShiftJava EE and NoSQL using JBoss EAP 7 and OpenShift
Java EE and NoSQL using JBoss EAP 7 and OpenShift
 
Docker, Kubernetes, and Mesos recipes for Java developers
Docker, Kubernetes, and Mesos recipes for Java developersDocker, Kubernetes, and Mesos recipes for Java developers
Docker, Kubernetes, and Mesos recipes for Java developers
 
Thanks Managers!
Thanks Managers!Thanks Managers!
Thanks Managers!
 
Migrate your traditional VM-based Clusters to Containers
Migrate your traditional VM-based Clusters to ContainersMigrate your traditional VM-based Clusters to Containers
Migrate your traditional VM-based Clusters to Containers
 

Dernier

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 

Dernier (20)

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 

GIDS 2012: Java Message Service 2.0

  • 1. ably prob What's coming in Java Message Service 2.0 Arun Gupta, Java EE & GlassFish Guy blogs.oracle.com/arungupta, @arungupta 1 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 2. The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle s products remains at the sole discretion of Oracle. 2 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. | 2  
  • 3. Agenda •  JSR 343 Update •  What's in the JMS 2.0 Early Draft –  Simplifying the JMS API –  Improving integration with application servers –  New API features •  Q&A 3 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. | 3   3  
  • 4. JMS •  Java Message Service (JMS) specification –  Part of Java EE but also stands alone –  Last maintenance release (1.1) was in 2003 •  Does not mean JMS is moribund! –  Multiple active commercial and open source implementations –  Shows strength of existing spec •  Meanwhile –  Java EE has moved on since, and now Java EE 7 is planned –  Time for JMS 2.0 4 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. | 4  
  • 5. JMS 2.0 •  March 2011: JSR 343 launched to develop JMS 2.0 •  Target: to be part of Java EE 7 in Q2 2013 •  Early Draft released •  Community involvement invited –  Visit jms-spec.java.net and get involved –  Join the mailing list –  Submit suggestions to the issue tracker 5 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. | 5  
  • 6. JSR 343 Expert Group ... 6 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 7. Initial goals of JMS 2.0 •  Simpler and easier to use •  Standardise interface with –  simplify the API application servers –  make use of CDI (Contexts and •  Clarify relationship with other Dependency Injection) Java EE specs –  clarify any ambiguities in the spec –  some JMS behaviour defined in •  Support new themes of Java EE 7 other specs –  PaaS •  New messaging features –  Multi-tenancy –  standardize some existing vendor extensions (or will retrospective standardisation be difficult?) 7 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. | 7  
  • 8. JMS 2.0 Timeline ✔ Forma0on  of  expert  group   Q2  2011   ✔ Prepara0on  of  early  dra;   ✔ Early  dra;  review   Q1  2012   Prepara0on  of  public  dra;   Public  review   Q3  2012   Comple0on  of  RI  and  TCK   Q1  2013   Final  approval  ballot   8 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. | 8  
  • 9. What's in the Early Draft •  Here are some items in the JMS 2.0 Early Draft –  Based on Expert Group members' priorities –  All items in JIRA at jms-spec.java.net •  Things are still changing •  It's not too late –  to give us your views on these items –  to propose additional items for a later draft or revision 9 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. | 9  
  • 10. Simplifying the JMS API 10 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 11. What's wrong with the JMS API? Not a lot... 11 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 12. Receiving messages in Java EE @MessageDriven(mappedName = "jms/inboundQueue") public class MyMDB implements MessageListener { public void onMessage(Message message) { String payload = (TextMessage)textMessage.getText(); // do something with payload } } 12 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 13. Sending messages in Java EE @Resource(lookup = "jms/connFactory") ConnectionFactory cf; @Resource(lookup="jms/inboundQueue") Destination dest; public void sendMessage (String payload) throws JMSException { Connection conn = cf.createConnection(); Session sess = conn.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer producer = sess.createProducer(dest); TextMessage textMessage = sess.createTextMessage(payload); messageProducer.send(textMessage); connection.close(); } 13 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 14. Sending messages in Java EE @Resource(lookup = "jms/connFactory") Need to create ConnectionFactory cf; intermediate objects @Resource(lookup="jms/inboundQueue") just to satisfy the API Destination dest; public void sendMessage (String payload) throws JMSException { Connection conn = cf.createConnection(); Session sess = conn.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer producer = sess.createProducer(dest); TextMessage textMessage = sess.createTextMessage(payload); messageProducer.send(textMessage); connection.close(); } 14 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 15. Sending messages in Java EE @Resource(lookup = "jms/connFactory") ConnectionFactory cf; Redundant @Resource(lookup="jms/inboundQueue") arguments Destination dest; public void sendMessage (String payload) throws JMSException { Connection conn = cf.createConnection(); Session sess = conn.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer producer = sess.createProducer(dest); TextMessage textMessage = sess.createTextMessage(payload); messageProducer.send(textMessage); connection.close(); } 15 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 16. Sending messages in Java EE @Resource(lookup = "jms/connFactory") ConnectionFactory cf; @Resource(lookup="jms/inboundQueue") Destination dest; Boilerplate code public void sendMessage (String payload) throws JMSException { Connection conn = cf.createConnection(); Session sess = conn.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer producer = sess.createProducer(dest); TextMessage textMessage = sess.createTextMessage(payload); messageProducer.send(textMessage); connection.close(); } 16 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 17. Sending messages in Java EE public void sendMessage (String payload) throws JMSException { try { Connection conn = null; con = cf.createConnection(); Session sess = conn.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer producer = sess.createProducer(dest); TextMessage textMessage=sess.createTextMessage(payload); messageProducer.send(textMessage); } finally { connection.close(); } } Need to close connections after use 17 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 18. Sending messages in Java EE public void sendMessage (String payload) { Connection conn = null; try { con = cf.createConnection(); Session sess = conn.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer producer = sess.createProducer(dest); TextMessage textMessage=sess.createTextMessage(payload); messageProducer.send(textMessage); } catch (JMSException e1) { // do something } finally { try { if (conn!=null) connection.close(); } catch (JMSException e2){ // do something else } And there's } always exception } handling to add 18 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 19. Approaches to simplification •  Simplify the existing API •  Define new simplified API •  Use CDI annotations to hide the boilerplate code 19 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. | 19  
  • 20. Simplify the existing API •  Need to maintain backwards compatibility limits scope for change –  New methods on javax.jms.Connection: •  Keep existing method connection.createSession(transacted,deliveryMode) •  New method for Java SE connection.createSession(sessionMode) •  New method for Java EE connection.createSession() –  Make javax.jms.Connection implement java.lang.AutoCloseable 20 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 21. Sending a Message (Java EE) Standard API @Resource(lookup = "jms/connectionFactory ") ConnectionFactory connectionFactory; @Resource(lookup="jms/inboundQueue") Queue inboundQueue; public void sendMessageOld (String payload) throws JMSException { try (Connection connection = connectionFactory.createConnection()) { Session session = connection.createSession(); MessageProducer messageProducer = session.createProducer(inboundQueue); TextMessage textMessage = session.createTextMessage(payload); messageProducer.send(textMessage); } } 21 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 22. Sending a Message (Java EE) New Simplified API @Resource(mappedName="jms/contextFactory") ContextFactory contextFactory; @Resource(mappedName="jms/inboundQueue") Queue inboundQueue; public void sendMessage(String payload) { try (JMSContext context = contextFactory.createContext();){ context.send(inboundQueue,payload); } } 22 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 23. Sending a Message (Java EE) New Simplified API (With Injection) @Inject @JMSConnectionFactory("jms/contextFactory") JMSContext context; @Resource(mappedName="jms/inboundQueue") Queue inboundQueue; public void sendMessage(String payload) { context.send(inboundQueue,payload); } 23 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 24. Receiving a Message Asynchronously Standard API @Resource(lookup = "jms/connectionFactory") ConnectionFactory connectionFactory; @Resource(lookup="jms/inboundQueue") Queue inboundQueue; public String receiveMessageOld() throws JMSException { try (Connection connection = connectionFactory.createConnection()) { connection.start(); Session session = connection.createSession(); MessageConsumer messageConsumer = session.createConsumer(inboundQueue); TextMessage textMessage = (TextMessage)messageConsumer.receive(); String payload = textMessage.getText(); return payload; } } 24 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 25. Receiving a Message Asynchronously New Simplified API @Resource(lookup = "jms/connectionFactory") ConnectionFactory connectionFactory; @Resource(lookup="jms/inboundQueue") Queue inboundQueue; public String receiveMessageNew() { try (JMSContext context = connectionFactory.createContext()) { JMSConsumer consumer = context.createConsumer(inboundQueue); return consumer.receivePayload(String.class); } } 25 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 26. Receiving a Message Asynchronously New Simplified API (With Injection) @Inject @JMSConnectionFactory("jms/connectionFactory") private JMSContext context; @Resource(lookup="jms/inboundQueue") Queue inboundQueue; public String receiveMessageNew() { JMSConsumer consumer = context.createConsumer(inboundQueue); return consumer.receivePayload(String.class); } 26 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 27. Some other simplifications 27 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 28. Making durable subscriptions easier to use •  Durable subscriptions are identified by {clientId, subscriptionName} •  ClientId will no longer be mandatory when using durable subscriptions •  For a MDB, container will generate default subscription name (EJB 3.2) 28 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. | 28  
  • 29. New features for PaaS 29 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 30. Annotations to create resources in Java EE •  Currently no standard way for an application to define what JMS resources should be created in the application server and registered in JNDI •  No equivalent to DataSourceDefinition: @DataSourceDefinition(name="java:global/MyApp/MyDataSource", className="com.foobar.MyDataSource", portNumber=6689, serverName="myserver.com", user="lance", password="secret" ) 30 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 31. Annotations to create resources in Java EE •  JSR 342 (Java EE 7) will define new annotations •  Possible new SPI to create the physical destinations @JMSConnectionFactoryDefinition( name="java:app/MyJMSFactory", resourceType="javax.jms.QueueConnectionFactory", clientId="foo", resourceAdapter="jmsra", initialPoolSize=5, maxPoolSize=15 ) @JMSDestinationDefinition( name="java:app/orderQueue", resourceType="javax.jms.Queue", resourceAdapter="jmsra", destinationName="orderQueue") 31 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 32. Improving Integration with Application Servers 32 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 33. Defining the interface between JMS provider and an application server •  Requirement: allowing any JMS provider to work in any Java EE application server •  Current solution: JMS 1.1 Chapter 8 JMS Application Server Facilities 33 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 34. JMS 1.1 Chapter 8 JMS Application Server Facilities •  Interfaces all optional, so not all vendors implement them •  No requirement for application servers to support them •  Some omissions –  No support for pooled connections •  Meanwhile… 34 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 35. Java EE Connector Architecture (JCA) •  Designed for integrating pooled, transactional resources in an application server •  Designed to support async processing of messages by MDBs •  JCA support already mandatory in Java EE •  Many JMS vendors already provide JCA adapters 35 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 36. Defining the interface between JMS provider and an application server •  JMS 2.0 will make provision of a JCA adaptor mandatory •  JMS 1.1 Chapter 8 API remains optional, under review 36 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 37. Improvements to MDBs •  Proposals being sent to JSR 342 (EJB 3.2) •  Fill "gaps" in MDB configuration •  Surprisingly, no standard way to specify –  JNDI name of queue or topic (using annotation) –  JNDI name of connection –  clientID! –  durableSubscriptionName! 37 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 38. Defining the destination used by a MDB •  annotation... @MessageDriven(messageDestinationLookup="jms/inboundQueue”) public class MyMDB implements MessageListener { ... •  ejb-jar.xml... <ejb-jar> <enterprise-beans> <message-driven> <ejb-name>MessageBean</ejb-name> <message-destination-lookup-name> jms/inboundQueue <message-destination-lookup-name> … all names are provisional 38 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 39. Defining the connection factory used by a MDB •  annotation... @MessageDriven(connectionFactoryLookup="jms/myCF") public class MyMDB implements MessageListener { ... •  ejb-jar.xml... <ejb-jar> <enterprise-beans> <message-driven> <ejb-name>MessageBean</ejb-name> <connection-factory-lookup-name> jms/myCF <connection-factory-lookup-name> ...all names provisional 39 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 40. Defining the clientId and durable subscription name used by a MDB •  Define as standard activation config properties @MessageDriven(activationConfig = { @ActivationConfigProperty( propertyName="subscriptionDurability",propertyValue="Durable"), @ActivationConfigProperty( propertyName="clientId",propertyValue="MyMDB"), @ActivationConfigProperty( propertyName="subscriptionName",propertyValue="MySub") }) •  Many app servers support these already 40 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 41. New API Features 41 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 42. New API features •  Delivery delay •  Send a message with async acknowledgement from server •  JMSXDeliveryCount becomes mandatory •  Multiple consumers on the same topic subscription (both durable and non-durable) •  Some products implement some of these already 42 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 43. Delivery delay •  Allows a JMS client to schedule the future delivery of a message •  New method on MessageProducer public void setDeliveryDelay(long deliveryDelay) •  Sets the minimum length of time in milliseconds from its dispatch time that a produced message should be retained by the messaging system before delivery to a consumer. •  Why? If the business requires deferred processing, e.g. end of day 43 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 44. Send a message with async acknowledgement from server •  Send a message and return immediately without blocking until an acknowledgement has been received from the server. •  Instead, when the acknowledgement is received, an asynchronous callback will be invoked producer.send(message, new AcknowledgeListener(){ public void onAcknowledge(Message message) { // process ack } }); •  Why? Allows thread to do other work whilst waiting for the acknowledgement 44 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 45. Make JMSXDeliveryCount mandatory •  JMS 1.1 defines an optional JMS defined message property JMSXDeliveryCount. –  When used, this is set by the JMS provider when a message is received, and is set to the number of times this message has been delivered (including the first time). The first time is 1, the second time 2, etc •  JMS 2.0 will make this mandatory •  Why? Allows app servers and applications to handle "poisonous" messages better 45 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 46. Multiple consumers on a topic subscription •  Allows scalable consumption of messages from a topic subscription –  multiple threads –  multiple JVMs •  No further change to API for durable subscriptions (clientID not used) •  New API for non-durable subscriptions MessageConsumer messageConsumer= session.createSharedConsumer(topic,sharedSubscriptionName); •  Why? Scalability •  Why? Allows greater scalability 46 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 47. Get involved! •  Early Draft Already Available •  Mailing lists, issue tracker and wiki: –  jms-spec.java.net •  Join users@jms-spec.java.net to follow and contribute •  Applications to join the expert group –  http://jcp.org/en/jsr/summary?id=343 •  Contact the spec lead –  nigel.deakin@oracle.com 47 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |
  • 48. Questions & Answers 48 | Copyright © 2012, Oracle and/or it’s affiliates. All rights reserved. |