throbber

`
`
`
`\ |
`
`—— ee
`
`L = &\'/ 0) & r¢ BEEJETC
`‘ny,IPR2022-00368
`
`12,99
`
`6.55
`
`Zynga Ex. 1019, p. 1
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Summary of Contents
`
`Introduction
`
`Chapter 1:
`
`Chapter 2:
`
`Chapter 3:
`
`Chapter 4:
`
`Chapter 5:
`
`Chapter 6:
`
`Chapter 7:
`
`Introduction to Java Networking
`
`Network Basics
`
`Network Application Models
`
`Web Basics
`
`Java I/O
`
`Threads
`
`Java Security Model
`
`Chapter8:
`
`Intennet Addressing and Naming,
`
`Chapter 9:
`
`TCP Programming
`
`Chapter 10:
`
`UDP Programming
`
`Chapter 11:
`
`Muilticasting
`
`Chapter 12:
`
`Java URL Handler Architecture
`
`Chapter 13:
`
`implementing an HTTP Server
`
`Chapter 14:
`
`Making Network Applications More Secure
`
`Chapter 15:
`
`Object Serialization
`
`Chapter 16:
`
`RMI
`
`Chapter 17:
`
`CORBA
`
`Chapter 18:
`
`Servlets
`
`Chapter 19:
`
`E-mail With JavaMail
`
`Chapter 20:
`
`Messaging with JMS
`
`Chapter 21:
`
`Networking in JDK 1.4
`
`Appendix A:
`
`Java Network Connectivity Exceptions
`
`Appendix Bi:
`
`nstalling and Configuring Tomcat 4.0
`
`index:
`
`E
`
`7
`
`7
`
`
`
`eiseebetkteeggssee
`
`=|=
`
`77?
`
`Zynga Ex. 1019,p. 2
`Zynga v.
`IPR2022-00368
`
`Zynga Ex. 1019, p. 2
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Beginning Java Networking
`
`Chad Darby
`John Griffin
`Pascal de Haan
`Peter den Haan
`Alexander V. Konstantinou
`Sing Li
`Sean MacLean
`Glenn E. Mitchell
`Joel Peach
`Peter Wansch
`William Wright
`
`Wrox Press Lid. ®
`
`Zynga Ex. 1019, p. 3
`Zynga v. IGT
`IPR2022-00368
`
`Zynga Ex. 1019, p. 3
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Beginning Java Networking
`
`C 2001 Wrox Press
`
`All rights reserved. No part of this book may be reproduced, stored in a retrieval system or
`transmitted in any form or by any means, without the prior written permission of the publisher,
`except in the case of brief quotations embodied in critical articles or reviews.
`
`The author and publisher have made every effort in the preparation of this book to ensure the
`accuracy of the information. However, the information contained in this book is sold without
`warranty, either express or implied. Neither the authors, Wrox Press, nor its dealers or
`distributors will be held liable for any damages caused or alleged to be caused either directly or
`indirectly by this book.
`
`wrox
`Published by Wrox Press Ltd,
`Arden House, 1102 Warwick Road, Acocks Green,
`Birmingham, B27 6B1i. UK
`Printed in the United States
`ISBN 1861005601
`
`Zynga Ex. 1019, p. 4
`Zynga v. IGT
`IPR2022-00368
`
`

`

`20
`
`Messaging with JMS
`
`In any enterprise, many applications are used to support the business processes. Just as departments of
`enterprises need to communicate with each other to get their work done, different applications will need
`to communicate with each other to achieve the same. The communication between applications within
`one enterprise is sometimes called enterprise messaging. Other forms of communication between
`applications also exist, examples of these forms are:
`
`O Business to business: Here applications belonging to different enterprises interact
`
`O
`
`Inter-application: Here an application is a distributed solution with components (perhaps
`viewed as an application) on several different pieces of hardware
`
`Enterprise messaging applications exchange information using the concept of message passing. This
`means an application will inform another application it wants something done by sending a message to
`it. For example, a sales department would send a copy of an order to the finance department for it to
`send out a bill.
`
`This chapter explains the basics of using enterprise messaging with Java applications. It will cover the
`different techniques for enterprise messaging and make clear what the respective advantages and
`drawbacks are. At the end of the chapter, you will be able to implement enterprise messaging in your
`own applications.
`
`In particular, this chapter will cover:
`
`O Message oriented middleware
`
`O Hub and spoke architecture
`▪
`Java Messaging Service (JMS)
`
`Enterprise Messaging
`Before getting started on programming enterprise messaging applications, we must examine the basic
`models on which our applications will be built. The explanations will often refer to the scenario of the
`interaction between a sales application and a finance application. For instance. the sales application
`might send details of an order to a finance application so the customer can be billed. This finance
`application could then send a payment history back.
`
`Zynga Ex. 1019, p. 5
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Chapter 20
`
`}
`
`Sales apt:ideation
`
`Order
`
` Payment
` History
`
`Finance application
`
`Enterprise messaging is the communication between different applications within the same company
`and there are many ways to achieve this communication.
`
`To get a more complete picture of the various methods we'll look at some of the common ones:
`
`q Raw network
`
`•
`
`Remote procedure calls (RPC)
`
`3 Electronic Mail
`• Message Oriented Middleware (MOM)
`
`1
`
`t
`
`Raw Network Communication
`The use of raw network communication techniques, such as named pipes or TCP/IP sockets, form the
`basis for all the other techniques. Achieving communications between applications using this low-level
`technique is the most time-consuming for a programmer to accomplish. As a programmer you spend a
`lot of time dealing with adverse network conditions and how best to cope with such situations on top of
`processing the messages. Some examples of the problems you have to solve include the temporary loss
`of a connection, requiring you to reconnect and the encoding of your information into a byte format
`that is understood at the destination. The received information also needs to be transformed from an
`array of bytes to a convenient programming object like a string or integer. The main advantage of using
`raw network communication techniques is the potential of high data throughput. An example of this is a
`live streaming application that needs continuous video feeds.
`
`Remote Procedure Calls
`To make it easier for programmers to invoke methods in other applications, remote procedures calls
`were devised (see Chapter 16 for more details on doing RPC calls with Java by using Remote Method
`Invocation. RMI). This communication technique deals with the data encoding issues and most network
`communication aspects, like opening a TCP/IP port. Remote procedure calls (RPC) make it easy to
`invoke a specific piece of logic within another application. The logic in the remote application must be
`exposed as a method suitable for invocation through RPC.
`
`Although RPC is a powerful method for network programming, it does have some important
`disadvantages. Applications communicating with one another using RPC need to be running at the same
`time. Upgrades and configuration changes that require an application to be temporarily offline may
`result in errors in the other application. Maintenance should thus be planned at the same time or the
`logic that uses RPC will have to be intelligent enough to retry the invocation later.
`
`Applications that use RPC must run at a similar speed if overall performance is to be guaranteed, as
`each component should be able to handle requests at a comparable rate. Going back to our example,
`you will see that the finance application should be able to process orders just as fast as the sales
`application, othenvise the sales application is slowed down in its order intake.
`690
`
`a,
`
`Zynga Ex. 1019, p. 6
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Messaging with JMS
`
`Electronic Mail
`To allow applications to run at a different speed one could make use of mail. Mail is an asynchronous
`way of exchanging messages - if the sales application mailed the order to the finance application then it
`can continue processing new orders, while the finance application can take its time processing the order,
`so you will not be billed so fast.
`
`Mail abstracts raw network aspects from the programmer and it has several ways to encode information
`with the use of MIME or XML messages, however it has a big disadvantage in that it is not reliable. The
`chance of a mail message being lost, certainly within the same enterprise, can be very small but it is a
`possibility. If the sales department processes an order and the items are shipped, you will want the
`absolute guarantee that the finance department will bill that customer.
`
`Also, keep in mind that electronic mail (e•mail) is a method of communication between people, or
`between software applications and people. However, it is not ideally suited for communication between
`software applications or software components. Although programs shuffle the data from place to place,
`the actual writing of the message and more importantly the interpretation of a received message is done
`by a human. E-mail has no means for helping applications interpret the received message or invoke a
`new action within that application.
`
`Message Oriented Middleware
`The communication techniques provided by message oriented middleware (MOM) deal with all the
`issues described earlier. MOM allows for reliable message exchange between applications. It also
`abstracts all network problems from the application programmer. Message-exchange can be achieved
`asynchronously and synchronously. In most cases, MOM implementations support multiple message
`formats and provide tools to encode and decode information within a message.
`
`All this additional functionality can affect performance and this form of intracompany communication is
`not always the best solution. If an application needs to stream data continuously to another application,
`the use of raw network communication techniques will be a wiser choice.
`
`Message oriented middleware is software that connects otherwise separate applications through the
`passing of messages. The software creates an infrastructure that insulates the application developer from
`the details of the various operating systems and network interfaces.
`
`Message oriented middleware has several key concepts:
`
`3 Clients
`
`q Message agents
`
`3 Destinations
`
`Messages
`
`The messaging system is often a peer-to-peer facility. This means that a messaging client can send
`messages to, and receive messages from, any other messaging client. There is no central server that
`distributes the messages, as with e-mail.
`
`A messaging agent provides facilities for creating. sending, and receiving messages. Each client connects
`to its own messaging agent to make use of these facilities. The messaging agent will see to it that a
`message is delivered to the requested destination or other client.
`
`691
`
`Zynga Ex. 1019, p. 7
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Chapter 20
`
`Messages are not sent to applications or message agents directly, but to an abstract location called a
`destination, this is a unique address within the message oriented middleware software. A messaging
`agent is needed to send messages to. or read messages delivered to a specific destination. A destination
`can point to a location on the same machine or anywhere on the network.
`
`Illustrated in the diagram above is the structure of the sales/finance application we discussed in the last
`section if it was implemented using message oriented middleware.
`
`A message can be separated into roughly two parts. One part, referred to as the message header,
`contains information intended only for the message agent. The other part, referred to as the
`message body or payload, holds information intended for the target-application or message
`receiving application.
`
`The message header instructs the messaging agent on where to deliver the message and how it should
`be transported. The header also contains other instructions, like indications about the desired assurances
`or the number of times a delivery was attempted. Other information describes the return address (also a
`destination) to which the target-application should send its response (if any).
`
`The message body is mostly left untouched by the MOM software. However, transformations are
`made on the information intended for the target application if the platform on which the application
`runs, requires such transformations. The transformation should only involve changes in byte ordering
`when crossing big endian and little endian boundaries or when the character encoding differs (like
`ASCII or Unicode).
`
`Transformation of a message body does not occur when using the Java APL
`Regardless of operating system or hardware platform, Java always uses the same byte
`iirdering (big endian) and character encoding (Unicode).
`
`Hub and Spoke Architecture
`Creating applications that use enterprise messaging requires a design that spans across the several
`applications communicating with each other. This overall design is often referred to as system
`architecture.
`
`As you let more and more applications communicate with enterprise messaging, your
`architecture can slowly grow to be a mesh of one-to-one connections between applications. The
`figure below shows such a mesh between applications. Each arrow indicates a set of destinations
`known to each application.
`
`692
`
`Zynga Ex. 1019, p. 8
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Messaging with JMS
`
`Each enterprise messaging application may need to create a connection for each application within your
`company. When a new application is created, every existing application that requires interaction with
`this new application, needs to be modified. Several solution strategies for dealing with this mesh of
`connections may immediately pop into your mind. You might think of creating additional end-points to
`prepare your application for possible future expansion. However, this leads to unnecessary message
`sending when no expansion is created. The strategy is also useless after all the end-points have been
`used up.
`
`One of the solutions to this problem is the hub and spoke architecture. This architecture defines a
`central application, called a message broker or message server, to be the destination of all applications.
`It is the responsibility of the message broker to route messages to the correct target application based on
`information within the message. The message broker is not part of the message oriented middleware
`software, but a separate application, so the argument mentioned earlier stating that message oriented
`middleware does not have a central server still holds, however the use of the hub and spoke architecture
`does introduce such an application.
`
`Message brokers differ in level of complexity. Simple ones are only capable of forwarding messages,
`more advanced ones have the additional capability of transforming the message content from one
`format to another format by rearranging them or adding information. The most complex message
`brokers offer administrative capabilities, like logging, and they can perform alternative transformations
`or forwarding if error conditions occur. Some can even be configured to expect a level of service from
`an application, meaning that if an application doesn't respond to a send message within a certain
`timeframe or with a specific message (format), the message broker can take alternative actions. These
`could include resending the message or contacting an administrator. Any new application added to the
`enterprise messaging system will only require changes in the message broker.
`
`When you look at the architecture you can make an analogy with a hub (message broker) and spokes
`(applications) of a wheel. The next figure illustrates this architecture. As you can see this is a simpler
`architecture. For instance, adding a new module doesn't require changes to the other modules. Nor
`do the individual modules now have to know where the others are or how to communicate with them.
`
`693
`
`Zynga Ex. 1019, p. 9
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Chapter 20
`
`7
`
`There is an easy way to use the hub and spoke architecture without having to buy or create a message
`broker application. You can use the publish and subscribe domain of Java Messaging Service UMS).
`Note that Java Messaging Service UMS) implementations are not free. The one provided with Java 2
`Platform, Enterprise Edition PEE) reference implementation is not suitable for production use. If you
`do have another J2EE implementation, which is supplied with most application servers, you can use the
`publish and subscribe domain. Also, note that most message broker applications cost several times the
`cost of an application server.
`
`The Java Message Service (JMS)
`The first part of this chapter gave you the run-down on what enterprise messaging is, what
`technologies you can use and some of the architectures that are possible. The remaining sections will
`guide you through programming enterprise messaging applications with the use of the Java
`Messaging Service (JMS). Two examples will be used to demonstrate program applications or
`software components that can communicate with each other via messages. But before we get to that
`we must examine the JMS in detail.
`
`The Java Message Service is a Java API that allows applications to create, send, receive, and read
`messages. The API defines a common set of interfaces and associated semantics that allow programs
`written in the Java programming language to communicate with message oriented middleware.
`
`Java Messaging Service UMS) applications are capable of communicating with heterogeneous
`applications that are written in other programming languages, run on other operating systems or
`machine architectures. This is because messages, created with the JMS API, can match most formats
`used by existing, nonJMS applications. The non Java and non JMS application will need to access their
`messages through means provided by the Java Messaging Service UMS) vendor-implementations.
`Examples of these are proprietary APIs or other standards like the CORBA Messaging Service from the
`Object Management Group (OMG).
`
`The use of the JMS API in your programs will give them the flexibility to switch between messaging
`implementations. This is similar to the way the use of the JDBC API makes your programs flexible in
`switching between database management systems. This portability is only valid if your applications use
`only JMS and not the vendor-specific API for communications with MOM.
`
`694
`
`Zynga Ex. 1019, p. 10
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Messaging with JMS
`
`The advent of Java Messaging Service also brought about a consensus on what components are used in
`messaging. One messaging system would require the use of a separate configuration-component, while
`another incorporated the configuration options within methods of the message client directly.
`Previously, conceptually similar components would also be called something different across messaging
`systems. With the creation of the unified API for various messaging strategies, JMS minimized the set of
`components that a Java language programmer must learn to create enterprise messaging products.
`
`The behavior of messaging systems is different. Some systems provide only facilities for delivering
`messages to a client as they arrive (push model), while others only support means for clients to
`actively request messages (pull model). The semantic specifications within JMS remove these
`differences, by describing completely how and when messages arrive at clients. Semantics are also
`defined at a low level with various rules, for instance on how and when the properties of a message
`header are (can be) set. At the high level the specifications divide the behavior of key components
`within the two messaging domains.
`
`Messaging Domains in JMS
`Java Messaging Service (JMS) describes the many difference in messaging systems with just two
`messaging domains.
`
`Point-to-Point
`
`q Publish and Subscribe
`
`The point-to-point domain has a lot of similarity to the postal service; addresses are predefined and
`messages sent to a specific address are mostly intended for one person. This domain uses message
`queues instead of postal addresses as destinations. Each message is addressed to a specific queue; clients
`extract messages from the queue(s) established to hold their messages. Similar to postal addresses, you
`will find that queues are generally predefined, so they are known at design time. Just as with a queue at
`the checkout in the supermarket, the first to arrive will be helped (delivered) first.
`
`The publish and subscribe (or Pub/Sub) domain is built around the idea of a content hierarchy. It lets
`clients, called publishers, send messages to a node located somewhere within a content hierarchy.
`Subscribers are clients that subscribe to a node in the content hierarchy in order to receive messages,
`published to this particular node. The system takes care of distributing messages arriving from a node's
`multiple publishers to its multiple subscribers. Publishers and subscribers are generally anonymous and
`may dynamically publish or subscribe to a content hierarchy. Messages intended for several clients or
`messages intended for unknown clients are best sent using the publish and subscribe domain of Java
`Messaging Service UMS).
`
`The JMS Specification defines rules for compliance for each domain. A standalone JMS provider may
`implement one or both domains. A Java 2 Platform, Enterprise Edition (J2EE) provider must implement
`both domains. Most current implementations of the JMS API provide support for both the point-to-
`point and publish/subscribe domains. JMS clients are allowed to combine the use of both domains in a
`single application.
`
`Application Architecture
`Previous we defined the key components of a MOM-based messaging service: clients, message agents,
`destinations, and messages. Java Messaging Service (JMS) refines these key components and adds a few more.
`
`695
`
`Zynga Ex. 1019, p. 11
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Chapter 20
`
`JMS calls a messaging system that implements the interfaces and provides administration and control
`features, a JMS Provider. Message clients are separated into the JMS clients and non:JMS clients
`categories. JMS clients are programs or components written in the Java programming language and that
`send and receive messages by using the JMS API. All other programs, regardless of their programming
`language, are considered non JMS clients. Communication between clients of both categories is
`possible; the JMS Provider is tasked to solve this problem. JMS introduces another key component,
`called administered objects; these are preconfigured JMS objects such as destinations or connection
`factories. They are created and configured by an administrator for use by client applications. Later on,
`the benefits and such of administered objects will be explained further.
`
`Java Messaging Service calls clients that send messages message producers and clients that receive
`messages message consumers. Depending on the message domain used within your program the JMS API
`refers to message producers, message consumers and destinations differently. The table below supplies an
`overview of the way JMS refers to key components of MOM within a particular messaging domain.
`
`JMS
`
`Destination
`
`Point to point domain
`
`Pub/Sub domain
`
`Queue
`
`Topic
`
`Message producer
`
`QueueSender
`
`TopicPublisher
`
`Message consumer
`
`QueueReceiver
`
`TopicSubscriber
`
`What's Not in JMS
`At this point, the Java Messaging Service (JMS) might seem the ideal solution for all your enterprise
`application needs; however, JMS does not completely cover every aspect of large distributed
`intracompany communications software.
`
`The specification does not address the following functionality:
`
`• Wire protocol: Vendors are allowed to implement JMS with no restrictions made on the wire
`protocol (network communication protocol) used. A message sent from one vendor does not
`need to be interpretable by another vendor simply by reading the network message. The
`exchange between different implementations is only required at the API level, using code.
`
`q Administration: Administered objects are a core piece of Java Messaging Service (JMS). The
`storage and removal of these objects are done through the Java Naming and Directory
`Interface (JNDI). Apart from storage of Java objects, administration also involves other
`activities like the configuration of wire protocol resources (IP numbers, sockets etc.).
`O Security: JMS is part of the Java 2 Platform, Enterprise Edition (J2EE) so most security aspects
`(such as login) are delegated to other parts of the platform. Controlling privacy and integrity of
`messages or the way digital signatures or keys should be used or distributed among clients are
`not specified within JMS. JMS considers security to be a JMS provider-specific feature that is
`configured by an administrator. Clients should not control security aspects through the JMS API.
`Resilience: Enterprise messaging applications usually need a high level of service. This means
`high availability and reliability, preferably achieved by using load balancing and fault
`tolerance capabilities of the messaging product. A popular way to support these capabilities in
`a messaging product involves combining multiple, cooperating clients into one critical service.
`How such clients work together to be a single, unified service is not defined in the JMS
`specification - this is left to providers to realize.
`
`•
`
`696
`
`Zynga Ex. 1019, p. 12
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Messaging with JMS
`
`Choosing a resilience level can be achieved in a variety of ways, more hardware (RAM or
`processors), making use of OS features (duplicate processes), or software capabilities, such as
`clustering. When solving a resilience 'problem', any of these solutions might be the right one,
`taking into account budget, current environment, company standards, business ambitions,
`available time, experience etc. Considering all these options means that choosing a JMS
`provider is not an easy task.
`O Error/Advisory Notification: Clients receive messages asynchronously from most MOM
`products informing them of problems or system events. A standard for system messages or
`notifications does not exist in the JMS specification. Conformance to the guidelines defined by
`JMS will prevent clients from using these messages. Good JMS clients are not allowed to
`depend on any system messages. Any portability problems introduced by the use of or the
`dependency on error/ advisory notifications through messages is thus prevented by
`conformance to the Java Messaging Service (JMS) specification.
`
`O
`
`Triggering: The arrival of a message or the signaling of a problem (like no more room for
`messages) will likely need a particular client to be running, and there's no guarantee that it
`will be. Some JMS providers support such triggering mechanism through their own
`administrative facilities; JMS however does not provide a mechanism for triggering the
`execution of a client.
`
`3 Persistent message storage: Messages sent through an enterprise messaging system will
`conform to a certain type definition. The type definition describes for instance the fields
`present in a message and in what sequence they can be found. These type definitions may be
`stored within a repository by messaging products. There are no means to define type
`definitions or store them in repositories using the JMS API.
`
`The list of functionalities that are not a part of the Java Messaging Service (JMS) specification may seem
`a long one. Not having these functionalities however does not mean that the specification of JMS is
`incomplete. In fact, JMS describes only those things that directly relate to messaging. Because the focus
`lies on just the kind of producers, consumers, message formats, associated behavior and so on,
`implementing and using JMS only requires knowledge of messaging. This results in a low learning curve
`for using Java Messaging Service (JMS).
`
`Also, bear in mind that JMS is part of the Java 2 Platform, Enterprise Edition (J2EE). The other
`functionalities mentioned above, are most likely a required part of an enterprise messaging application.
`The J2EE contains the necessary standards for most of these functionalities. Mentioning them in the
`Java Messaging Service (JMS) specification would mean that this specification would redefine standards
`that are already implemented elsewhere.
`
`Anatomy of JMS Messages
`Before delving into the depths of the Java Messaging Service VMS) API, this section focuses on the
`fundamental part of any messaging service: the messages. You have read about enterprise messaging,
`message oriented middleware and had an introduction to the Java Messaging Service (JMS). This section
`discusses mainly the anatomy of messages within the context of the JMS specification.
`
`\Then discussing message exchange between applications, the JMS specification defines its own terms -
`consume and produce.
`
`697
`
`Zynga Ex. 1019, p. 13
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Chapter 20
`
`a The term consume is defined as the receipt of a message by a JMS client. This in turn means
`that a JMS provider has received a message through the MOM and has given the message to
`the client. The specification makes no difference in the term consume, even though it does
`distinguish between asynchronous and synchronous receipt of messages.
`The term produce means the sending of a message in the most general sense, without regard
`to the way the message is distributed among destinations by the messaging system. In
`conclusion, produce stands for the giving of a message to aJMS provider with the intent that
`the provider should deliver it to one or more destinations that then consume this message.
`
`Properties
`In a previously, messages were described as consisting of a header and a body: the header contains
`instructions intended for MOM; the body contains the information intended for the target
`application(s). The JMS specification adds another part to a message called properties. The properties
`section defines addition of optional fields that can be added to the message header. The order in which
`property values are stored, is not defined.
`
`The value of a property can be any primitive Java language type (boolean, byte, short, int, long,
`float, double) or of type java lang . String. The JMS specification supports automatic
`transformations between property values. The transformations occur when using the typed property
`retrieval methods, which follow the pattern get<Type> Proper ty ( ). If a conversion cannot be
`performed. a MessageFormatException will be thrown. In cases of String to numeric conversion
`problems a NumberFormat Except ion will be thrown.
`
`Properties are divided into three categories:
`
`U Standard: These properties are non-mandatory attributes of any JMS message, but have a
`standardized name and meaning
`Provider specific: These properties are mainly intended for providers to send additional
`information with messages, helping them process the messages correctly to non-JMS clients
`Application specific: These are used by the sending and receiving applications to help with
`their message processing
`
`Java Messaging Service (JMS) specifies several standard properties that are not mandatory. The optional
`header fields have property names that are prefixed by the text ' JMSX '
`
`The following table shows most of the standard properties in aJMS message, who sets their value and
`what they are used for.
`
`Name
`
`JMSXUserID
`
`SMSKApp ID
`
`Set by
`
`Provider just before a message is
`produced
`
`Use
`Identifies the user of the
`sending application
`
`Provider just before a message is
`produced
`
`Identifies the sending
`application
`
`698
`
`Zynga Ex. 1019, p. 14
`Zynga v. IGT
`IPR2022-00368
`
`

`

`Messaging with JMS
`
`Name
`
`Set by
`
`Use
`
`JMSXDeliveryCount
`
`Provider just before a message is
`consumed
`
`The number of attempts made
`to deliver the message (starts
`with 1)
`
`JMSXRcvTimestamp
`
`Provider just before a message is
`consumed
`
`The time the message is
`delivered to the consumer
`
`JMSXGrouplD
`
`JMSXGroupSeq
`
`Client
`
`Client
`
`The identity of message group
`
`Indicates the sequence
`number of the message in a
`message group (starts with 1)
`
`The value for JMSXRcvTimes tamp is set by the provider just before consumption of the message by
`the consumer. The provider is part of the JMS implementation and should not be confused with the
`producer or sending application of the message.
`
`The names of provider-specific properties are prefixed with the text "JMS_<vendor_name>", the
`values and the types stored under these names are determined by the vendors of messaging software.
`Provider-specific properties can be used to store information needed to support JMS with provider-
`native clients. They are not intended to help coordinate JMS-to-JMS messaging.
`
`T

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket