本文将通过用于向队列发送消息和从队列接收消息的示例应用程序说明如何在 Linux 上着手安装和配置 WebSphere MQ,以及如何为 MQ 环境开发 Java 应用程序。
引言
本文的目标是让您轻松实现 Linux® 上的 IBM® WebSphere® MQ 入门。由于大部分 Linux 服务器并没有图形用户界面,因此本文将说明如何使用命令行工具在 Linux 上安装和配置 WebSphere MQ。本文将说明如何使用 WebSphere MQ Java API 创建两个示例 Java™ 应用程序:MQSend(用于向队列发送消息)和 MQGet(用于从队列接收消息)。
先决条件
WebSphere MQ V6 安装包。
一台或两台安装了 Linux 的计算机。本文使用两台安装了 Suse Linux Enterprise Server V9 的计算机,不过也可以在一台计算机上完成所有工作。
Linux 管理技能。
Java 开发方面的经验将有所帮助,但并非必须的,因为我们提供了经过预编译的 Java 示例应用程序供下载和在命令行使用。
WebSphere MQ
WebSphere MQ 提供了连接层和应用程序的可靠集成,为 SOA 提供了所需的基础。WebSphere MQ 的主要特色功能包括:
有保证的消息交付 基于可靠队列的消息传递,可确保消息不会丢失或重复。 基于标准的开发 使用 Java Messag ......
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写,Teletype是最早出现的一种终端设备,很象电传打字机,是由Teletype公司生产的。设备名放在特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:
1,串行端口终端(/dev/ttySn):串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备,那时它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev/ttys0、/dev/ttys1等,设备号分别是(4,0)、(4,1)等,分别对应于DOS系统下的COM1、COM2等。若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。例如,在命令行提示符下键入:echo test >/dev/ttys1会把单词”test”发送到连接在ttys1(COM2)端口的设备上。
2,伪终端(/dev/pty/):伪终端(Pseudo Terminal)是成对的逻辑终端设备,例如/dev/ptyp3和/dev/ttyp3(或者在设备文件系统中分别是/dev/pty/m3和/dev/pty/s3)。用ls -l /dev时可以看到pty**和tty**的设备序列,主设备号不同外,成对的此设备号是一致的 ......
Unix中的函数select和poll用来,支持Unix中I/O复用的功能,在Unix中I/O模型可以分为以一几种:
(1)阻塞I/O
(2)非阻塞I/O
(3)I/O复用(select和poll)
(4)信号驱动I/O(SIGIO)
(5)异步I/O
其中,现在比较流行的I/O模型是阻塞I/O模型.阻塞I/O是当应用程序和内核交换数据时,由于内核还没有准备好数据,那么应用程序必须进行阻塞,不能继续执行,直到内核的数据准备好!应用程序取到数据返回后,阻塞过程结束!但返回的结果也并不一定是正确的!这里只是举一个简单的例子!也许情况会更加的复杂!
非阻塞I/O,例如在和内核交换数据时,如果内核的数据没有准备好,那么应用程序不会一真等待,会有一个返回信息,以判断是那里出了问题!这样有助于确认是在那个阶段出了问题!
I/O复用,我们就可以调用系统调用select和poll!在这两个系统调用中的某一个阻塞,而不是真正的阻塞I/O系统调用!
下面主要介绍I/O复用中的select函数!select函数可以指示内核等待多个事件中的任一个发生,仅在一个或多个事件发生,或者等待一个足够的时间后才唤醒进程!select函数的原型如下:
#include <sys/types.h&g ......
LINUX(运行在VWMARE)上自带的SVN,Windows上装的是TortoiseSVN-1.6.7.18415-win32-svn-1.6.9.msi。
在Linux上配置SNV。
1、创建repository。
> svnadmin create /myhome/svnhome/project
其中svnhome是放svn的目录,下一级是不同的repository名。
2、准备好源代码。按下列目录排好。
project/branches
project/tags
project/trunk
project/trunk/sub-project1
project/trunk/sub-project1/source1.c
project/trunk/sub-project1/source1.h
..
3、导入
> snv import project file:///myhome/svnhome/project
4、导出一个子模块。
> svn checkout file:///myhome/svnhome/project/trunk/sub-project1
sub-project1
5、修改server配置,让客户可读写。
编辑/myhome/svnhom/project/config/svnserve.conf,将[general]下的anon-access改为write
anon-access = write
6、启动server
> svnserve –d –r file:///myhome/svnhome/project
7、停止server
> killall svnserve
Windows这一边,当SVN server启动后,
1、导出代码
checkout url : svn://192.168.000.2/trunk/sub-project1
directory: d:\project\sub-project1 ......
在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了:
[root@localhost /]# ./test.sh &
[1] 17208
然后我们就可以用以下命令进行查看:
[root@localhost /]# jobs -l
[1] 17208 Running ./test.sh &
对于已经在前台执行的命令,也可以重新放到后台执行首先按ctrl z暂停已经运行的进程,然后使用bg命令将停止的作业放到后台运行:
[root@localhost /]# bg %1
[1] ./test.sh &
[root@localhost /]# jobs -l
[1] 22794 Running ./test.sh &
但是如上方到后台执行的进程,其父进程还是当前终端shell的进程,而一旦父进程退出,则会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。如果我们要在退出shell的时候继续运行进程,则需要使用nohup忽略hangup信号,或者setsid将将父进程设为init进程(进程号为1)
[root@localhost /]# echo $$
21734
[root@localhost /]# nohup ./test.sh &<br />
[1] 29016
[root@localhost /]# ps -ef | grep test
515 29710 21734 0 11:47 pts/12 00:00:00 /bin/sh ./test.sh
515 29713 2 ......
本文主要内容是介绍ODBC的简单原理,以及如何在Linux/Unix下进行ODBC的安装、配置与编程。
ODBC原理
ODBC
是Open Database Connect 即开放数据库互连的简称,它是由Microsoft 公司于1991
年提出的一个用于访问数据库的统一界面标准,是应用程序和数据库系统之间的中间件。它通过使用相应应用平台上和所需数据库对应的驱动程序与应用程序的交互
来实现对数据库的操作,避免了在应用程序中直接调用与数据库相关的操作,从而提供了数据库的独立性。
ODBC
主要由驱动程序和驱动程序管理器组成。驱动程序是一个用以支持ODBC
函数调用的模块,每个驱动程序对应于相应的数据库,当应用程序从基于一个数据库系统移植到另一个时,只需更改应用程序中由ODBC
管理程序设定的与相应数据库系统对应的别名即可。驱动程序管理器可链接到所有ODBC 应用程序中,它负责管理应用程序中ODBC 函数与DLL
中函数的绑定。
ODBC
使用层次的方法来管理数据库,在数据库通信结构的每一层,对可能出现依赖数据库产品自身特性的地方,ODBC
都引入一个公共接口以解决潜在的不一致性,从而很好地解决了基于数据库系统应用程序的相对独立性,这也是ODBC
一经推出就获得巨大成功的重要原因之一。
......