SlideShare uma empresa Scribd logo
1 de 52
Baixar para ler offline
1 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
ably
                                prob
What's coming
in Java Message Service 2.0
Adam Leftik
Product Management
 2 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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.




3 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8   3	
  
Agenda

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



4 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8   4	
  
                                                                                                                                                       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
5 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8   5	
  
JMS 2.0

•  March 2011: JSR 343 launched to
   develop JMS 2.0
•  Target: to be part of Java EE 7 in Q3
   2012
•  Expert group now in operation and
   working towards the "early draft" for
   public review
•  Community involvement invited
  –  Visit jms-spec.java.net
     and get involved
  –  Join the mailing list
  –  Submit suggestions to the issue tracker
  6 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8   6	
  
JSR 343 Expert Group

•  Oracle (lead)                                                                                                                    •  Red Hat
•  Caucho                                                                                                                           •  Pramati Technologies
•  IBM                                                                                                                              •  Vmware
•  Red Hat                                                                                                                          •  FuseSource (soon)
•  TIBCO                                                                                                                            •  ...and 6 individual members




  7 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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?)

  8 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8                             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	
                                                                       Q2	
  2012	
  

                                        Comple0on	
  of	
  RI	
  and	
  TCK	
  

                                                                                                                                               Q3	
  2012	
  
                                              Final	
  approval	
  ballot	
  
9 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8                    9	
  
What's coming in the Early Draft
    •  Here are some items expected in the JMS 2.0 Early
       Draft
             –  Based on Expert Group members' priorities
             –  All items in JIRA at jms-spec.java.net
             –  Subject to final approval by the Expert Group
    •  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
10 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8   10	
  
Simplifying
    the JMS API




11 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
What's wrong with the JMS API?
    Not a lot...




12 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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
    }

}




    13 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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();
}




  14 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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();
}




  15 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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();
}




  16 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
Sending messages in Java EE
@Resource(lookup = "jms/connFactory")
ConnectionFactory cf;
                                                                                                                                                  Boilerplate code
@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();
}




  17 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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


  18 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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

     19 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
Approaches to simplification

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




20 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8   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

   21 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
Possible new API
@Resource(mappedName="jms/contextFactory")
ContextFactory contextFactory;

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

public void sendMessage(String payload) {
   try (MessagingContext mCtx = contextFactory.createContext();){
      TextMessage textMessage = mCtx.createTextMessage(payload);
      mCtx.send(orderQueue,textMessage);
   }
}




  22 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
Annotations for the new API
@Resource(mappedName="jms/orderQueue")
Queue orderQueue;

@Inject
@MessagingContext(lookup="jms/contextFactory")
MessagingContext mCtx;

@Inject
TextMessage textMessage;

public void sendMessage(String payload) {
   textMessage.setText(payload);
   mCtx.send(orderQueue,textMessage);
}




  23 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
Annotations for the old API
@Inject
@JMSConnection(lookup="jms/connFactory")
@JMSDestination(lookup="jms/inboundQueue")
MessageProducer producer;
@Inject
TextMessage textMessage;
public void sendMessage (String payload){
    try {
             textMessage.setText(payload);
             producer.send(textMessage);
    } catch {JMSException e}
             // do something
    }
}


    24 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
Some other simplifications




25 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
Sending object payloads directly

    •  No need to create a message
             –  producer.send(String text);
             –  producer.send(Serializable object);
    •  But:
             –  wouldn't allow message properties to be set
             –  may not be appropriate for BytesMessage etc
             –  less obvious how to offer this for receive() methods
    •  How useful is this in practice?

26 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8   26	
  
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)



27 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8   27	
  
New features for PaaS




28 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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" )




  29 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
Annotations to create resources in Java EE
     •  JSR 342 (Java EE 7) will define new annotations
     •  Possible new SPI to create the physical destinations as well
@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")

 30 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
Improving integration with application
    servers




31 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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




32 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
JMS 1.1 Chapter 8
       JMS Application Server Facilities
                                                                                                                                                   API for concurrent processing of
API for JTA transactions
                                                                                                                                                   messages
XAQueueConnectionFactory                                                                         XAConnection                                      ServerSession
XAQueueConnection                                                                                XASession                                         ServerSessionPool
XAQueueSession                                                                                   XAConnectionFactory                               ConnectionConsumer
XATopicConnectionFactory                                                                         XAConnection                                      Session.setMessageListener
XATopicConnection                                                                                XASession                                         Session.getMessageListener
XATopicSession                                                                                                                                     Session.run
XAConnectionFactory




   33 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
New API Features




41 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
New API features

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


42 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
Topic hierarchies

    •  Topics can be arranged in a hierarchy
             –         STOCK.NASDAQ.TECH.ORCL
             –         STOCK.NASDAQ.TECH.GOOG
             –         STOCK.NASDAQ.TECH.ADBE
             –         STOCK.NYSE.TECH.HPQ
    •  Consumers can subscribe using wildcards
             –  STOCK.*.TECH.*
             –  STOCK.NASDAQ.TECH.*
    •  Most vendors support this already
    •  Details TBD
46 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
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


47 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
Batch delivery

    •  Will allow messages to be delivered asynchronously in batches
    •  New method on MessageConsumer
void setBatchMessageListener(
   BatchMessageListener listener,
   int batchSize,
   long batchTimeOut)

    •  New listener interface BatchMessageListener
void           onMessages(Message[] messages)

    •  Acks also sent in a batch
    •  Why? May be more efficient for JMS provider or application

48 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
Agenda for the Early Draft

    •  Those were some items being considered for the JMS
       2.0 Early Draft
    •  Many items still being discussed by the Expert
       Group
    •  A more detailed description can be found in JIRA at jms-
       spec.java.net
    •  It's not too late
             –  to give us your views on these items
             –  to propose additional items for a later draft (or for JMS 2.1)
49 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
Get involved!

    •  Mailing lists, issue tracker and wiki:
             –  jms-spec.java.net
    •  Applications to join the expert group
             –  http://jcp.org/en/jsr/summary?id=343
    •  Look out for the Early Draft in Jan 2012
    •  Contact the spec lead
             –  nigel.deakin@oracle.com



50 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
Questions & Answers




51 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
52 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8

Mais conteúdo relacionado

Mais procurados

Oracle 10g sql fundamentals i
Oracle 10g sql fundamentals iOracle 10g sql fundamentals i
Oracle 10g sql fundamentals iManaswi Sharma
 
Aras Vision and Roadmap with Aras Innovator PLM Software
Aras Vision and Roadmap with Aras Innovator PLM SoftwareAras Vision and Roadmap with Aras Innovator PLM Software
Aras Vision and Roadmap with Aras Innovator PLM SoftwareAras
 
Smalltalk in Large-scale Enterprise Architectures
Smalltalk in Large-scale Enterprise ArchitecturesSmalltalk in Large-scale Enterprise Architectures
Smalltalk in Large-scale Enterprise ArchitecturesESUG
 
S424. Soa Mainframe Practices Best And Worst
S424. Soa Mainframe Practices   Best And WorstS424. Soa Mainframe Practices   Best And Worst
S424. Soa Mainframe Practices Best And WorstMichaelErichsen
 
Shin J2 Ee Programming Half Day
Shin J2 Ee Programming Half DayShin J2 Ee Programming Half Day
Shin J2 Ee Programming Half Daylokendralodha
 
Interoperability for Intelligence Applications using Data-Centric Middleware
Interoperability for Intelligence Applications using Data-Centric MiddlewareInteroperability for Intelligence Applications using Data-Centric Middleware
Interoperability for Intelligence Applications using Data-Centric MiddlewareGerardo Pardo-Castellote
 
DB2 for i 7.1 - Whats New?
DB2 for i 7.1 - Whats New?DB2 for i 7.1 - Whats New?
DB2 for i 7.1 - Whats New?COMMON Europe
 
Omnikron Services 2009
Omnikron Services 2009Omnikron Services 2009
Omnikron Services 2009Robin Borough
 
Aras ALM Workshop for PLM Configuration Management
Aras ALM Workshop for PLM Configuration ManagementAras ALM Workshop for PLM Configuration Management
Aras ALM Workshop for PLM Configuration ManagementAras
 
Structured development in BMC Remedy AR System
Structured development in BMC Remedy AR SystemStructured development in BMC Remedy AR System
Structured development in BMC Remedy AR Systemgramlin42
 
Jee design patterns- Marek Strejczek - Rule Financial
Jee design patterns- Marek Strejczek - Rule FinancialJee design patterns- Marek Strejczek - Rule Financial
Jee design patterns- Marek Strejczek - Rule FinancialRule_Financial
 
Modernize your-java ee-app-server-infrastructure
Modernize your-java ee-app-server-infrastructureModernize your-java ee-app-server-infrastructure
Modernize your-java ee-app-server-infrastructurezslmarketing
 
Imaginea product-support-offering
Imaginea product-support-offeringImaginea product-support-offering
Imaginea product-support-offeringRajaneeshChandra
 

Mais procurados (15)

Oracle 10g sql fundamentals i
Oracle 10g sql fundamentals iOracle 10g sql fundamentals i
Oracle 10g sql fundamentals i
 
Aras Vision and Roadmap with Aras Innovator PLM Software
Aras Vision and Roadmap with Aras Innovator PLM SoftwareAras Vision and Roadmap with Aras Innovator PLM Software
Aras Vision and Roadmap with Aras Innovator PLM Software
 
Smalltalk in Large-scale Enterprise Architectures
Smalltalk in Large-scale Enterprise ArchitecturesSmalltalk in Large-scale Enterprise Architectures
Smalltalk in Large-scale Enterprise Architectures
 
S424. Soa Mainframe Practices Best And Worst
S424. Soa Mainframe Practices   Best And WorstS424. Soa Mainframe Practices   Best And Worst
S424. Soa Mainframe Practices Best And Worst
 
Shin J2 Ee Programming Half Day
Shin J2 Ee Programming Half DayShin J2 Ee Programming Half Day
Shin J2 Ee Programming Half Day
 
Interoperability for Intelligence Applications using Data-Centric Middleware
Interoperability for Intelligence Applications using Data-Centric MiddlewareInteroperability for Intelligence Applications using Data-Centric Middleware
Interoperability for Intelligence Applications using Data-Centric Middleware
 
DB2 for i 7.1 - Whats New?
DB2 for i 7.1 - Whats New?DB2 for i 7.1 - Whats New?
DB2 for i 7.1 - Whats New?
 
Omnikron Services 2009
Omnikron Services 2009Omnikron Services 2009
Omnikron Services 2009
 
Day 2 p3 - automation
Day 2   p3 - automationDay 2   p3 - automation
Day 2 p3 - automation
 
Aras ALM Workshop for PLM Configuration Management
Aras ALM Workshop for PLM Configuration ManagementAras ALM Workshop for PLM Configuration Management
Aras ALM Workshop for PLM Configuration Management
 
Structured development in BMC Remedy AR System
Structured development in BMC Remedy AR SystemStructured development in BMC Remedy AR System
Structured development in BMC Remedy AR System
 
Jee design patterns- Marek Strejczek - Rule Financial
Jee design patterns- Marek Strejczek - Rule FinancialJee design patterns- Marek Strejczek - Rule Financial
Jee design patterns- Marek Strejczek - Rule Financial
 
Sotona
SotonaSotona
Sotona
 
Modernize your-java ee-app-server-infrastructure
Modernize your-java ee-app-server-infrastructureModernize your-java ee-app-server-infrastructure
Modernize your-java ee-app-server-infrastructure
 
Imaginea product-support-offering
Imaginea product-support-offeringImaginea product-support-offering
Imaginea product-support-offering
 

Semelhante a JMS 2.0 Early Draft Simplifies Messaging API

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 and HTML5: Developing for the Cloud
Java EE 7 and HTML5: Developing for the CloudJava EE 7 and HTML5: Developing for the Cloud
Java EE 7 and HTML5: Developing for the CloudArun 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
 
Jfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Jfokus 2012 : The Java EE 7 Platform: Developing for the CloudJfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Jfokus 2012 : The Java EE 7 Platform: Developing for the CloudArun Gupta
 
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
 
Fusion app tech_con8707_pdf_8707_0001
Fusion app tech_con8707_pdf_8707_0001Fusion app tech_con8707_pdf_8707_0001
Fusion app tech_con8707_pdf_8707_0001jucaab
 
Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Arun Gupta
 
Extending The Value Of Oracle Crm On Demand Through Cloud Based Extensibility
Extending The Value Of Oracle Crm On Demand Through Cloud Based ExtensibilityExtending The Value Of Oracle Crm On Demand Through Cloud Based Extensibility
Extending The Value Of Oracle Crm On Demand Through Cloud Based ExtensibilityJerome Leonard
 
Übersicht Cloud Control - EM 12c
Übersicht Cloud Control - EM 12cÜbersicht Cloud Control - EM 12c
Übersicht Cloud Control - EM 12cVolker Linz
 
GlassFish Community Update @ JavaOne 2011
GlassFish Community Update @ JavaOne 2011GlassFish Community Update @ JavaOne 2011
GlassFish Community Update @ JavaOne 2011Arun Gupta
 
Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...
Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...
Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...Sivakumar Thyagarajan
 
Oracle enterprise architects day
Oracle enterprise architects dayOracle enterprise architects day
Oracle enterprise architects dayAyodele Peter Boglo
 
Ebs troubleshooting con9019_pdf_9019_0001
Ebs troubleshooting con9019_pdf_9019_0001Ebs troubleshooting con9019_pdf_9019_0001
Ebs troubleshooting con9019_pdf_9019_0001jucaab
 
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012Arun Gupta
 
Oracle Fusion Middleware,foundation for innovation
Oracle Fusion Middleware,foundation for innovationOracle Fusion Middleware,foundation for innovation
Oracle Fusion Middleware,foundation for innovationAlicja Sieminska
 
JavaOne2015報告会 in Okinawa
JavaOne2015報告会 in OkinawaJavaOne2015報告会 in Okinawa
JavaOne2015報告会 in OkinawaTakashi Ito
 
Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Vinay H G
 
Oracle Fusion Applications: User Assistance
Oracle Fusion Applications: User Assistance Oracle Fusion Applications: User Assistance
Oracle Fusion Applications: User Assistance Ultan O'Broin
 

Semelhante a JMS 2.0 Early Draft Simplifies Messaging API (20)

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 and HTML5: Developing for the Cloud
Java EE 7 and HTML5: Developing for the CloudJava EE 7 and HTML5: Developing for the Cloud
Java EE 7 and HTML5: Developing for the Cloud
 
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
 
Jfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Jfokus 2012 : The Java EE 7 Platform: Developing for the CloudJfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Jfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
 
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
 
Fusion app tech_con8707_pdf_8707_0001
Fusion app tech_con8707_pdf_8707_0001Fusion app tech_con8707_pdf_8707_0001
Fusion app tech_con8707_pdf_8707_0001
 
Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7Java Summit Chennai: Java EE 7
Java Summit Chennai: Java EE 7
 
Extending The Value Of Oracle Crm On Demand Through Cloud Based Extensibility
Extending The Value Of Oracle Crm On Demand Through Cloud Based ExtensibilityExtending The Value Of Oracle Crm On Demand Through Cloud Based Extensibility
Extending The Value Of Oracle Crm On Demand Through Cloud Based Extensibility
 
Übersicht Cloud Control - EM 12c
Übersicht Cloud Control - EM 12cÜbersicht Cloud Control - EM 12c
Übersicht Cloud Control - EM 12c
 
GlassFish Community Update @ JavaOne 2011
GlassFish Community Update @ JavaOne 2011GlassFish Community Update @ JavaOne 2011
GlassFish Community Update @ JavaOne 2011
 
Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...
Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...
Handling Service Orchestration in the Cloud for GlassFish - JavaOne, San Fran...
 
Oracle enterprise architects day
Oracle enterprise architects dayOracle enterprise architects day
Oracle enterprise architects day
 
Ebs troubleshooting con9019_pdf_9019_0001
Ebs troubleshooting con9019_pdf_9019_0001Ebs troubleshooting con9019_pdf_9019_0001
Ebs troubleshooting con9019_pdf_9019_0001
 
JDK versions and OpenJDK
JDK versions and OpenJDKJDK versions and OpenJDK
JDK versions and OpenJDK
 
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
 
Oracle Fusion Middleware,foundation for innovation
Oracle Fusion Middleware,foundation for innovationOracle Fusion Middleware,foundation for innovation
Oracle Fusion Middleware,foundation for innovation
 
JavaOne2015報告会 in Okinawa
JavaOne2015報告会 in OkinawaJavaOne2015報告会 in Okinawa
JavaOne2015報告会 in Okinawa
 
Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807
 
Oracle Fusion Applications: User Assistance
Oracle Fusion Applications: User Assistance Oracle Fusion Applications: User Assistance
Oracle Fusion Applications: User Assistance
 
JDK 10 Java Module System
JDK 10 Java Module SystemJDK 10 Java Module System
JDK 10 Java Module System
 

Mais 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
 

Mais 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
 

Último

Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialJoão Esperancinha
 
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sectoritnewsafrica
 
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
 
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
 
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
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentMahmoud Rabie
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
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
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
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
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
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
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 

Último (20)

Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorial
 
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
 
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
 
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...
 
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
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career Development
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
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
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
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
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 

JMS 2.0 Early Draft Simplifies Messaging API

  • 1. 1 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 2. ably prob What's coming in Java Message Service 2.0 Adam Leftik Product Management 2 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 3. 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. 3 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8 3  
  • 4. Agenda •  JSR 343 Update •  What's coming in the JMS 2.0 Early Draft –  Simplifying the JMS API –  Improving integration with application servers –  New API features •  Q&A 4 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8 4   4  
  • 5. 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 5 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8 5  
  • 6. JMS 2.0 •  March 2011: JSR 343 launched to develop JMS 2.0 •  Target: to be part of Java EE 7 in Q3 2012 •  Expert group now in operation and working towards the "early draft" for public review •  Community involvement invited –  Visit jms-spec.java.net and get involved –  Join the mailing list –  Submit suggestions to the issue tracker 6 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8 6  
  • 7. JSR 343 Expert Group •  Oracle (lead) •  Red Hat •  Caucho •  Pramati Technologies •  IBM •  Vmware •  Red Hat •  FuseSource (soon) •  TIBCO •  ...and 6 individual members 7 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 8. 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?) 8 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8 8  
  • 9. 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   Q2  2012   Comple0on  of  RI  and  TCK   Q3  2012   Final  approval  ballot   9 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8 9  
  • 10. What's coming in the Early Draft •  Here are some items expected in the JMS 2.0 Early Draft –  Based on Expert Group members' priorities –  All items in JIRA at jms-spec.java.net –  Subject to final approval by the Expert Group •  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 10 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8 10  
  • 11. Simplifying the JMS API 11 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 12. What's wrong with the JMS API? Not a lot... 12 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 13. 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 } } 13 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 14. 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(); } 14 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 15. 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(); } 15 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 16. 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(); } 16 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 17. Sending messages in Java EE @Resource(lookup = "jms/connFactory") ConnectionFactory cf; Boilerplate code @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(); } 17 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 18. 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 18 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 19. 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 19 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 20. Approaches to simplification •  Simplify the existing API •  Define new simplified API •  Use CDI annotations to hide the boilerplate code 20 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8 20  
  • 21. 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 21 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 22. Possible new API @Resource(mappedName="jms/contextFactory") ContextFactory contextFactory; @Resource(mappedName="jms/orderQueue") Queue orderQueue; public void sendMessage(String payload) { try (MessagingContext mCtx = contextFactory.createContext();){ TextMessage textMessage = mCtx.createTextMessage(payload); mCtx.send(orderQueue,textMessage); } } 22 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 23. Annotations for the new API @Resource(mappedName="jms/orderQueue") Queue orderQueue; @Inject @MessagingContext(lookup="jms/contextFactory") MessagingContext mCtx; @Inject TextMessage textMessage; public void sendMessage(String payload) { textMessage.setText(payload); mCtx.send(orderQueue,textMessage); } 23 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 24. Annotations for the old API @Inject @JMSConnection(lookup="jms/connFactory") @JMSDestination(lookup="jms/inboundQueue") MessageProducer producer; @Inject TextMessage textMessage; public void sendMessage (String payload){ try { textMessage.setText(payload); producer.send(textMessage); } catch {JMSException e} // do something } } 24 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 25. Some other simplifications 25 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 26. Sending object payloads directly •  No need to create a message –  producer.send(String text); –  producer.send(Serializable object); •  But: –  wouldn't allow message properties to be set –  may not be appropriate for BytesMessage etc –  less obvious how to offer this for receive() methods •  How useful is this in practice? 26 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8 26  
  • 27. 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) 27 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8 27  
  • 28. New features for PaaS 28 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 29. 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" ) 29 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 30. Annotations to create resources in Java EE •  JSR 342 (Java EE 7) will define new annotations •  Possible new SPI to create the physical destinations as well @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") 30 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 31. Improving integration with application servers 31 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 32. 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 32 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 33. JMS 1.1 Chapter 8 JMS Application Server Facilities API for concurrent processing of API for JTA transactions messages XAQueueConnectionFactory XAConnection ServerSession XAQueueConnection XASession ServerSessionPool XAQueueSession XAConnectionFactory ConnectionConsumer XATopicConnectionFactory XAConnection Session.setMessageListener XATopicConnection XASession Session.getMessageListener XATopicSession Session.run XAConnectionFactory 33 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 41. New API Features 41 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 42. New API features •  Delivery delay •  Send a message with async acknowledgement from server •  JMSXDeliveryCount becomes mandatory •  Topic hierarchies •  Multiple consumers on the same topic subscription (both durable and non-durable) •  Batch delivery •  Some products implement some of these already 42 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 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 © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 46. Topic hierarchies •  Topics can be arranged in a hierarchy –  STOCK.NASDAQ.TECH.ORCL –  STOCK.NASDAQ.TECH.GOOG –  STOCK.NASDAQ.TECH.ADBE –  STOCK.NYSE.TECH.HPQ •  Consumers can subscribe using wildcards –  STOCK.*.TECH.* –  STOCK.NASDAQ.TECH.* •  Most vendors support this already •  Details TBD 46 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 47. 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 47 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 48. Batch delivery •  Will allow messages to be delivered asynchronously in batches •  New method on MessageConsumer void setBatchMessageListener( BatchMessageListener listener, int batchSize, long batchTimeOut) •  New listener interface BatchMessageListener void onMessages(Message[] messages) •  Acks also sent in a batch •  Why? May be more efficient for JMS provider or application 48 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 49. Agenda for the Early Draft •  Those were some items being considered for the JMS 2.0 Early Draft •  Many items still being discussed by the Expert Group •  A more detailed description can be found in JIRA at jms- spec.java.net •  It's not too late –  to give us your views on these items –  to propose additional items for a later draft (or for JMS 2.1) 49 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 50. Get involved! •  Mailing lists, issue tracker and wiki: –  jms-spec.java.net •  Applications to join the expert group –  http://jcp.org/en/jsr/summary?id=343 •  Look out for the Early Draft in Jan 2012 •  Contact the spec lead –  nigel.deakin@oracle.com 50 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 51. Questions & Answers 51 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
  • 52. 52 | Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8