如今,社交网络无所不在 —— 为了与朋友联系,或是为了让自己与时俱进,抑或是为了让别人获知共同关心话题的最新进展。社交网络在企业中也很有用。本文将向您展示如何快速而轻松地在您的 WebSphere MQ 应用程序中使用社交网络软件(比如 Twitter)向广大的系统管理员或最终用户,甚至是向其他应用程序或中间件发送状态及问题信息。本文中的示例使用的是面向 WebSphere Application Server Community Edition 运行时的 JEE 技术(简单的消息驱动的 bean)的 WebSphere MQ 和 Twitter API。
简介
社交网络已经取得了爆炸式的发展,下面所列就是一些社交网络的站点:Facebook、LinkedIn 和 Twitter。各企业现在也开始着手建立内部的社交网络,而 IBM 的 Lotus Connections 产品可以让我们很方便地建立企业规模的社交网络。
本文将向您展示如何在一个企业消息产品,比如 WebSphere MQ 内使用社交网络软件。本文中的三个示例使用的是 Twitter,但也可以使用其他的具有 API 的社交网络站点。这三个 MQ-Twitter 的例子是:
一个简单的队列,文本消息将从这里被检索并直接发布给 Twitter
队列管理器事件,例如创建或删除队列
一个使用了 WebSphere MQ File Transfer Edition(后面简称为 WebSphere MQ FTE)的发布/订阅示例
本文的示例是用部署到 WebSphere Application Server Community Edition 的消息驱动 bean (MDB) 开发的。另一种方式是使用一个具有消息侦听器的独立 Java 应用程序。下面将要介绍的这些代码清单均截取自一个 zip 文件,这个 zip 文件包括了运行这个示例所需的所有源文件。
Twitter API
很多 Java 库都提供一个到 Twitter API 的接口。本文中的示例使用 Apache Commons HTTP 库与 Twitter API 通信。Twitter API 是一个很好的规范 —— 要了解更多信息,请参见 Twitter API wiki。
清单 1 内显示的这个 Java 方法可用来 tweet 一个给定消息。要获得完整的 Java 类,请下载并参考上述的 zip 文件。
清单 1. TwitterPlugin.java: sendNotification() 方法
public void sendNotification(String message) {
if(message.length() > 140) {
System.err.println("Message will be truncated from: "
+ message + " to: " + message.substring(0, 140));
}
PostMethod post = null;
try {
HttpClient client = new HttpClient();
client.getParams().setAuthenticationPreemptive(true);
client.getState().setCredentials(new AuthScope("twitter.com", 80, "realm"),
new UsernamePasswordCredentials(getUsername(), getPassword()));
post = new PostMethod("http://twitter.com/statuses/update.xml");
post.setQueryString(URIUtil.encodeQuery("status="+message));
post.setDoAuthentication( true );
// execute the GET
int status = client.executeMethod( post );
// print the status and response
System.out.println("Status: " + status);
} catch (URIException e ) {
System.err.println(e.getMessage());
} catch (HttpException e) {
System.err.println(e.getMessage());
} catch (IOException e) {
System.err.println(e.getMessage());
} finally {
// release any connection resources used by the method
if(post != null) {
post.releaseConnection();
}
}
}