WebLogic Server 6.0 Code Examples, BEA Systems, Inc.

examples.jms.drawdemo
Class JMSDrawDemo

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JPanel
                          |
                          +--examples.jms.drawdemo.JMSDrawDemo
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.event.ActionListener, java.util.EventListener, java.awt.image.ImageObserver, java.awt.MenuContainer, javax.jms.MessageListener, java.awt.event.MouseListener, java.io.Serializable

public class JMSDrawDemo
extends javax.swing.JPanel
implements java.awt.event.MouseListener, javax.jms.MessageListener, java.awt.event.ActionListener

This graphical example illustrates key concepts of the JMS publish/subscribe model. Run the example to observe the behavior of transacted sessions, persistent messages, and durable subscribers.

The following sections describe how to:

  1. Build the example
  2. Configure the server
  3. Run the example

Build the Example

  1. Set up your development shell, as described in Setting up your environment.
  2. Compile the example by executing the following command or by executing the build script provided for this example in the samples/examples/jms/drawdemo directory. The script will perform the following step:

    1. Compile the JMSDrawDemo as shown in this example for Windows NT/2000:

        $ javac -d %CLIENT_CLASSES% JMSDrawDemo.java

Configure the Server

The following items have been preconfigured and/or predefined for your convenience:

Note: If you have configured the server to run the examples.jms.topic example, then no additional configuration changes are required to run the JMSDrawDemo example, and you can skip to the section Run the Example.

To configure the server:

  1. Start the server with the examples configuration.
  2. Bring up the Administration Console in your browser.
  3. Click to expand the JMS node in the left pane.
  4. Click to expand the JMS Connection Factories node in the left pane.
  5. Choose the server target for the exampleTopic connection factory as follows:
    1. Select the exampleTopic node. The exampleTopic connection factory configuration information displays in the right pane.
    2. Select the Targets tab in the right pane to display the Available and Chosen targets.
    3. Move the examplesServer target to the Chosen column and click the Apply button to save the assignment.

Run the example

  1. Start the server with the examples configuration (if it is not already started).
  2. Set up two or more development shells your environment and start the JMSDrawDemo application in each shell with the following command:
      $ java examples.jms.drawdemo.JMSDrawDemo t3://hostname:port [DurableSubID]
    where:
    hostname
    Host name of the WebLogic Server.
    port
    Port where the WebLogic Server is listening for connections (weblogic.system.ListenPort).
    DurableSubID
    Include the durable subscriber ID to try out persistence with durable subscribers. Each instance of the application must have a unique durable subscriber ID.

The JMSDrawDemo application displays a command panel at the bottom of the screen allowing you to:

Check the Persistent checkbox to enable persistent messaging. Persistent messages are of most interest to durable subscribers. You can establish a durable subscription by specifying the (optional) durable subscriber ID as the second argument on the command line. Check the Persistent checkbox to enable persistent JMS messages. Persistent messages sent when the subscriber is not active will be delivered when the subscriber reattaches, even after a WebLogic Server reboot.

Check the Transacted checkbox to turn on transacted mode. When the transacted mode is on, JMS does not send messages until you click the Commit button to commit the transaction, or click the Rollback button to roll back the transaction. To view a transaction commit operation, click several times on one canvas, then click the Commit button. The other canvasses are updated only after you select Commit.

Click the Clear button to send a clearScreen message to the topic. When the message is delivered, all instances of the application clear their canvasses.

Click the Quit button to quit the application.

Author:
Copyright (c) 1999-2000 by BEA Systems, Inc. All Rights Reserved.

Inner classes inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Inner classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent, javax.swing.JComponent.ActionStandin, javax.swing.JComponent.IntVector, javax.swing.JComponent.KeyboardState
 
Inner classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Inner classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.AWTTreeLock
 
Field Summary
static java.lang.String IMAGE
          Defines the icon image.
static java.lang.String JMS_FACTORY
          Defines the JMS connection factory for the topic.
static java.lang.String JNDI_FACTORY
          Defines the JNDI context factory.
static java.lang.String TOPIC
          Defines the topic.
 
Fields inherited from class javax.swing.JComponent
_bounds, accessibleContext, listenerList, paintingChild, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Container
component, containerListener, layoutMgr, listeningBoundsChildren, listeningChildren, ncomponents
 
Fields inherited from class java.awt.Component
actionListenerK, adjustmentListenerK, appContext, background, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, componentListener, componentListenerK, componentOrientation, containerListenerK, cursor, dropTarget, enabled, eventMask, focusListener, focusListenerK, font, foreground, graphicsConfig, hasFocus, height, hierarchyBoundsListener, hierarchyBoundsListenerK, hierarchyListener, hierarchyListenerK, incRate, inputMethodListener, inputMethodListenerK, isInc, isPacked, itemListenerK, keyListener, keyListenerK, LEFT_ALIGNMENT, locale, LOCK, metrics, minSize, mouseListener, mouseListenerK, mouseMotionListener, mouseMotionListenerK, newEventsOnly, ownedWindowK, parent, peer, peerFont, popups, prefSize, RIGHT_ALIGNMENT, textListenerK, TOP_ALIGNMENT, valid, visible, width, windowClosingException, windowListenerK, x, y
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
JMSDrawDemo(javax.swing.JFrame frame, java.lang.String url, java.lang.String durableSubscriberID)
           
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent ev)
          Listens for and responds to button presses.
 java.awt.Dimension getPreferredSize()
          Gets the dimensions.
 boolean imageUpdate(java.awt.Image image, int infoFlags, int x, int y, int width, int height)
          Update images.
 java.awt.Image loadImage(java.lang.String resourceName)
          Loads images.
static void main(java.lang.String[] argv)
          main() method.
 void mouseClicked(java.awt.event.MouseEvent e)
          Responds to mouse being clicked.
 void mouseEntered(java.awt.event.MouseEvent e)
          Responds to mouse enter.
 void mouseExited(java.awt.event.MouseEvent e)
          Responds to mouse exit.
 void mousePressed(java.awt.event.MouseEvent e)
          Responds to mouse being pressed.
 void mouseReleased(java.awt.event.MouseEvent e)
          Sends an event with the mouse coordinates (as a scaled percentage of the screen size) when the user clicks in the canvas.
 void onMessage(javax.jms.Message msg)
          Receives a JMS message with X/Y coordinates, or a "clearScreen" message.
 void paint(java.awt.Graphics g)
          Paints the user interface.
 
Methods inherited from class javax.swing.JPanel
, getAccessibleContext, getUIClassID, paramString, updateUI
 
Methods inherited from class javax.swing.JComponent
_paintImmediately, addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, alwaysOnTop, checkIfChildObscuredBySibling, componentInputMapChanged, computeVisibleRect, computeVisibleRect, compWriteObjectNotify, contains, createToolTip, disable, enable, enableSerialization, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getActionMap, getAlignmentX, getAlignmentY, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getCreatedDoubleBuffer, getDebugGraphicsOptions, getGraphics, getHeight, getInputMap, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getVerifyInputWhenFocusTarget, getVisibleRect, getWidth, getX, getY, grabFocus, hasFocus, hide, isDoubleBuffered, isFocusCycleRoot, isFocusTraversable, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processFocusEvent, processKeyBinding, processKeyBindings, processKeyBindingsForAllComponents, processKeyEvent, processMouseMotionEvent, putClientProperty, rectangleIsObscured, rectangleIsObscuredBySibling, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setCreatedDoubleBuffer, setDebugGraphicsOptions, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPaintingChild, setPreferredSize, setRequestFocusEnabled, setToolTipText, setUI, setVerifyInputWhenFocusTarget, setVisible, shouldDebugGraphics, superProcessMouseMotionEvent, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, adjustListeningChildren, applyOrientation, checkGD, countComponents, createChildHierarchyEvents, createHierarchyEvents, deliverEvent, dispatchEventImpl, dispatchEventToSelf, doLayout, eventEnabled, findComponentAt, findComponentAt, findComponentAt, getAccessibleAt, getAccessibleChild, getAccessibleChildrenCount, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents_NoClientCode, getComponents, getLayout, getMouseEventTarget, getWindow, insets, invalidate, invalidateTree, isAncestorOf, layout, lightweightPaint, lightweightPrint, list, list, locate, minimumSize, nextFocus, numListening, paintComponents, paintHeavyweightComponents, postProcessKeyEvent, postsOldMouseEvents, preferredSize, preProcessKeyEvent, printComponents, printHeavyweightComponents, processContainerEvent, processEvent, proxyEnableEvents, proxyRequestFocus, remove, remove, removeAll, removeContainerListener, setFocusOwner, setLayout, transferFocus, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, areInputMethodsEnabled, bounds, checkImage, checkImage, checkWindowClosingException, coalesceEvents, constructComponentName, contains, createImage, createImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getAccessibleIndexInParent, getAccessibleStateSet, getBackground, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont_NoClientCode, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getInputContext, getInputMethodRequests, getLocale, getLocation, getLocationOnScreen_NoTreeLock, getLocationOnScreen, getName, getNativeContainer, getParent_NoClientCode, getParent, getPeer, getSize, getToolkit, getToolkitImpl, getTreeLock, gotFocus, handleEvent, inside, isDisplayable, isEnabled, isEnabledImpl, isLightweight, isRecursivelyVisible, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, repaint, repaint, repaint, resetGC, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

IMAGE

public static final java.lang.String IMAGE
Defines the icon image.

JMS_FACTORY

public static final java.lang.String JMS_FACTORY
Defines the JMS connection factory for the topic.

JNDI_FACTORY

public static final java.lang.String JNDI_FACTORY
Defines the JNDI context factory.

TOPIC

public static final java.lang.String TOPIC
Defines the topic.
Constructor Detail

JMSDrawDemo

public JMSDrawDemo(javax.swing.JFrame frame,
                   java.lang.String url,
                   java.lang.String durableSubscriberID)
            throws javax.naming.NamingException,
                   javax.jms.JMSException
Method Detail

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent ev)
Listens for and responds to button presses.
Specified by:
actionPerformed in interface java.awt.event.ActionListener
Parameters:
ev - action event

getPreferredSize

public java.awt.Dimension getPreferredSize()
Gets the dimensions.
Overrides:
getPreferredSize in class javax.swing.JComponent

imageUpdate

public boolean imageUpdate(java.awt.Image image,
                           int infoFlags,
                           int x,
                           int y,
                           int width,
                           int height)
Update images.
Overrides:
imageUpdate in class java.awt.Component
Parameters:
image - image to update
infoFlags - informational flags
x - X coordinate
y - Y coordinate
width - width
width - height

loadImage

public java.awt.Image loadImage(java.lang.String resourceName)
Loads images.
Parameters:
resourceName - name of resource

main

public static void main(java.lang.String[] argv)
main() method.
Parameters:
argv[] - WebLogic Server URL

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent e)
Responds to mouse being clicked.
Specified by:
mouseClicked in interface java.awt.event.MouseListener
Parameters:
e - mouse event

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent e)
Responds to mouse enter.
Specified by:
mouseEntered in interface java.awt.event.MouseListener
Parameters:
e - mouse event

mouseExited

public void mouseExited(java.awt.event.MouseEvent e)
Responds to mouse exit.
Specified by:
mouseExited in interface java.awt.event.MouseListener
Parameters:
e - mouse event

mousePressed

public void mousePressed(java.awt.event.MouseEvent e)
Responds to mouse being pressed.
Specified by:
mousePressed in interface java.awt.event.MouseListener
Parameters:
e - mouse event

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent e)
Sends an event with the mouse coordinates (as a scaled percentage of the screen size) when the user clicks in the canvas.
Specified by:
mouseReleased in interface java.awt.event.MouseListener
Parameters:
e - mouse event

onMessage

public void onMessage(javax.jms.Message msg)
Receives a JMS message with X/Y coordinates, or a "clearScreen" message.
Specified by:
onMessage in interface javax.jms.MessageListener
Parameters:
msg - message

paint

public void paint(java.awt.Graphics g)
Paints the user interface.
Overrides:
paint in class javax.swing.JComponent
Parameters:
g - user interface

Documentation is available at
http://e-docs.bea.com/wls/docs60

Copyright © 2000 BEA Systems, Inc. All Rights Reserved.