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语句只有在运行阶段才能建立