MQ Java Client 方式和MQ Java Binding方式的区别

Python010

MQ Java Client 方式和MQ Java Binding方式的区别,第1张

 MQ Java Binding方式使用JNI(Java Native Interface)类似于MQ 服务器应用程序

MQSeries Java客户机服务器连接最快的方式是MQ Java Binding方式,这种方式要求MQ Java应用和MQ Server在同一台机器上。使用MQ Java Binding方式避免了建立网络连接的开销,因此,当连接对性能影响很大时,应当选用MQ Java Binding方式。

MQ Java Client方式通过Server端定义的服务器连接通道连接,服务器方需要启动侦听程序。MQ Java Client方式用于Java客户程序和服务器不在同一台机器时进行连接。

客户端连接,建立MQEnvironment类

MQEnvironment.hostname

以下是,客户端连接例子

// ===========================================================================

//

// Licensed Materials - Property of IBM

//

// 5639-C34

//

// (c) Copyright IBM Corp. 1995,1999

//

// ===========================================================================

// WebSphere MQ M'z Java f sample applet

//

// This sample runs as an applet using the appletviewer and HTML file,

// using the command :-

// appletviewer MQSample.html

// Output is to the command line, NOT the applet viewer window.

//

// Note. If you receive WebSphere MQ error 2 reason 2059 and you are sure your

// WebSphere MQ and TCP/IPsetup is correct,

// you should click on the "Applet" selection in the Applet viewer window

// select properties, and change "Network access" to unrestricted.

import com.ibm.mq.*// Include the WebSphere MQ classes for Java package

public class MQSample extends java.applet.Applet

{

private String hostname = "your_hostname"// define the name of your

// host to connect to

private String channel = "server_channel"// define name of channel

// for client to use

// Note. assumes WebSphere MQ Server

// is listening on the default

// TCP/IPport of 1414

private String qManager = "your_Q_manager"// define name of queue

// manager object to

// connect to.

private MQQueueManager qMgr// define a queue manager object

// When the class is called, this initialization is done first.

public void init()

{

// Set up WebSphere MQ environment

MQEnvironment.hostname = hostname// Could have put the

// hostname &channel

MQEnvironment.channel = channel// string directly here!

MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,//Set TCP/IPor server

MQC.TRANSPORT_MQSERIES)//Connection

} // end of init

public void start()

{

try {

// Create a connection to the queue manager

qMgr = new MQQueueManager(qManager)

// Set up the options on the queue we wish to open...

// Note. All WebSphere MQ Options are prefixed with MQC in Java.

int openOptions = MQC.MQOO_INPUT_AS_Q_DEF |

MQC.MQOO_OUTPUT

// Now specify the queue that we wish to open, and the open options...

MQQueue system_default_local_queue =

qMgr.accessQueue("SYSTEM.DEFAULT.LOCAL.QUEUE",

openOptions)

// Define a simple WebSphere MQ message, and write some text in UTF format..

MQMessage hello_world = new MQMessage()

hello_world.writeUTF("Hello World!")

// specify the message options...

MQPutMessageOptions pmo = new MQPutMessageOptions()// accept the defaults,

// same as

// MQPMO_DEFAULT

// constant

// put the message on the queue

system_default_local_queue.put(hello_world,pmo)

// get the message back again...

// First define WebSphere MQ message buffer to receive the message into..

MQMessage retrievedMessage = new MQMessage()

retrievedMessage.messageId = hello_world.messageId

// Set the get message options..

MQGetMessageOptions gmo = new MQGetMessageOptions()// accept the defaults

// same as

// MQGMO_DEFAULT

// get the message off the queue..

system_default_local_queue.get(retrievedMessage, gmo)

// And prove we have the message by displaying the UTF message text

String msgText = retrievedMessage.readUTF()

System.out.println("The message is: " + msgText)

// Close the queue

system_default_local_queue.close()

// Disconnect from the queue manager

qMgr.disconnect()

}

// If an error has occurred in the above, try to identify what went wrong.

// Was it WebSphere MQ error?

<1. WebSphere MQ classes for Java >} applet (2/3)

>}zk

62 WebSphere MQ 9C Java

>}

TBzkN]>vr%D&CLr,|9Cs(==:

1. ,S=SP\mw

2. +{"Ek SYSTEM.DEFAULT.LOCAL.QUEUE

3. YN!5XD{"

catch (MQException ex)

{

System.out.println("WebSphere MQ error occurred : Completion code " +

ex.completionCode +

" Reason code " + ex.reasonCode)

}

// Was it a Java buffer space error?

catch (java.io.IOException ex)

{

System.out.println("An error occurred whilst writing to the

message buffer: " + ex)

}

} // end of start

} // end of sample

late binding: 后期联编

early binding: 前期联编

Oracle编译PL/SQL程序块分为两个种:

1) 其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型;

2) 另外一种是后期联编(late binding),即SQL语句只有在运行阶段才能建立