webapp 怎么构建openfirewebapp服务器端

构建 基于openfire + jwchat 的 WEB
IM - JavaEye - Java - ITeye论坛
构建 基于openfire + jwchat 的 WEB
& 上一页 1
锁定老帖子
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
等级: 初级会员
来自: 上海
发表时间:&&
最后修改:
相关知识库:
拿到这个任务之后,我便在WEB上寻找文档学习,前人栽树 ,后人乘凉;
经过半天的时间,初步了解到:
*********************************************************** ******************
Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用。
XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息IM)以及在线现场探测。它在促进服务器之间的准即时操作。 这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。XMPP的技术来自于Jabber,其实它是 Jabber的核心协定,所以XMPP有时被误称为Jabber协议。Jabber是一个基于XMPP协议的IM应用,除Jabber之外,XMPP还支 持很多应用。
*********************************************************************************
而常用的jabber服务器软件就是 openfire。openfire是一款基于XMPP协议的一款即时通信
开源的服务器端软件,正如它的开源精神一样,XMPP协议也是容纳各种协议的一种
通信协议,总之 ,XMPP协议可说是一种“开放式协议”,允许客户端使用各种通信
协议连接到 openfire
(服务器端),所以,使用基于XMPP协议的openfire允许客户
使用基于各种协议的客户端进行通信。
JWChat是一个功能强大,基于Web的Jabber(TM)客户端。采用AJAX技术开发,
这个客户端只用到了JavaScript与HTML。它具备基本的jabber即时消息功能,用户管理,
基于MUC协议的群聊天功能
下面就来搭建系统了,由于网上的资料大多对自己使用的软件版本说明不全, 我用Tomcat5.0导致我几天时间都在看Service
unavaliable
这个错误(郁闷),经过我的测试 这样的搭配是可以的 :
后来,据网友测试说 Tomcat5.5也可以,而最初我用的是Tomcat5.0,所以,初步推测
tomcat版本号要大于5.5
至于jdk为什么要用1.6?
那是因为jwchat里有一个叫JabberHTTPBind的插件是用jdk1.6环境下编译的,所以如
果用其他的jdk会提示class
版本不对,当然你也可以把 这些class在自己的jdk环境下重新编译一下 ,不过我没有
架设 openfire
,如果是安装文件,直接安装就可以了,如果是解压缩文件 ,解压缩之后 ,运行
openfire_3_4_3\openfire\bin
下的 openfire.exe
进入进行配置服
,其他的都可以默认值,但是数据库最好使用自己的,你要确认你已经安装好了数据库
,推荐使用 mysql
创建一个数据库名字叫
。以后next就可以了
启动openfire
并把配置的本地数据库服务打开
部署jwchat
, 安装好jdk1.6
,然后安装
指定其使用的jdk或jre 为 刚刚安装好的 jdk1.6版
把 jwchat.war
放到webapps下热部署,
var SITENAME = "computer"; //
此处为openfire所设置的 域名
var BACKENDS =
name:"Open Relay",
description:"HTTP Binding backend that allows connecting to any jabber server",
httpbase:"/jwchat/JHB/",
//此处为修改后的值
type:"binding",
default_server: SITENAME
如果一切顺利,那么就能登陆到 openfire了
祝大家一切顺利 ,我写这篇文章的目的主要是提醒大家注意使用软件的版本,因为这类文章网上已经有很多
版本注意了 ,基本 就没什么问题了 。由于软件太大 ,所以这里只能提供
jwchat.war的下载,其他软件要
大家到网上去下了,由此带来的不方便,请原谅
如果是linux系统
大家可以参考如下网址
(309.6 KB)
描述: 解压缩出
jwchat.war放到 webapps下热部署
下载次数: 2951
等级: 初级会员
来自: 北京
发表时间:&&
我用的也是tomcat6,jdk6,openfire3.4.5
登陆时候,弹出提示框报授权失败,请问怎么回事?
官方网站求~助论坛看了看,一堆问题,基本没有人回。
从控制台看输出信息,似乎已经连接到openfire了
PS:javaeye居然屏蔽了“求~ 助”两个字,看来混这里的多是牛上之人啊
哈哈哈
请登录后投票
等级: 初级会员
来自: 上海
发表时间:&&
如果 其他地方都ok的话& 那就是由一个地方你没有修改
请注意,如果使用的时候提示验证失败,
请在jsjac.js中找到
if(this.has_sasl)行&& (如果你的编辑器有行号 ,大概在300多行)
在它前边加上this.has_sasl =
就ok了
如果还有问题& 请留下你的msn& ,以便能尽快联系到你& :)
我的msn已经留在上面了
请登录后投票
等级: 初级会员
来自: 北京
发表时间:&&
mircle 写道拿到这个任务之后,我便在WEB上寻找文档学习,前人栽树 ,后人乘凉;
经过半天的时间,初步了解到:
*********************************************************** ******************
Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用。
XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息IM)以及在线现场探测。它在促进服务器之间的准即时操作。 这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。XMPP的技术来自于Jabber,其实它是 Jabber的核心协定,所以XMPP有时被误称为Jabber协议。Jabber是一个基于XMPP协议的IM应用,除Jabber之外,XMPP还支 持很多应用。*********************************************************************************1
而常用的jabber服务器软件就是 openfire。openfire是一款基于XMPP协议的一款即时通信
开源的服务器端软件,正如它的开源精神一样,XMPP协议也是容纳各种协议的一种 通信协议,总之 ,XMPP协议可说是一种“开放式协议”,允许客户端使用各种通信 协议连接到 openfire
(服务器端),所以,使用基于XMPP协议的openfire允许客户 使用基于各种协议的客户端进行通信。
JWChat是一个功能强大,基于Web的Jabber(TM)客户端。采用AJAX技术开发, 这个客户端只用到了JavaScript与HTML。它具备基本的jabber即时消息功能,用户管理, 基于MUC协议的群聊天功能
下面就来搭建系统了,由于网上的资料大多对自己使用的软件版本说明不全, 我用Tomcat5.0导致我几天时间都在看Service
unavaliable
这个错误(郁闷),经过我的测试 这样的搭配是可以的 :软件版本openfire
3.4.3jwchat 1.0beta3tomcat6.0jdk1.6
后来,据网友测试说 Tomcat5.5也可以,而最初我用的是Tomcat5.0,所以,初步推测
tomcat版本号要大于5.5 至于jdk为什么要用1.6?
那是因为jwchat里有一个叫JabberHTTPBind的插件是用jdk1.6环境下编译的,所以如 果用其他的jdk会提示class
版本不对,当然你也可以把 这些class在自己的jdk环境下重新编译一下 ,不过我没有 这么做
架设 openfire
,如果是安装文件,直接安装就可以了,如果是解压缩文件 ,解压缩之后 ,运行 openfire_3_4_3\openfire\bin
下的 openfire.exe
进入进行配置服 务器
,其他的都可以默认值,但是数据库最好使用自己的,你要确认你已经安装好了数据库
,推荐使用 mysql 创建一个数据库名字叫
。以后next就可以了
启动openfire
并把配置的本地数据库服务打开 2
部署jwchat
, 安装好jdk1.6
,然后安装
指定其使用的jdk或jre 为 刚刚安装好的 jdk1.6版 本,
把 jwchat.war
放到webapps下热部署,
var SITENAME = "computer"; //
此处为openfire所设置的 域名var BACKENDS = [
name:"Open Relay",
description:"HTTP Binding backend that allows connecting to any jabber server",
httpbase:"/jwchat/JHB/",
//此处为修改后的值
type:"binding",
default_server: SITENAME
如果一切顺利,那么就能登陆到 openfire了
祝大家一切顺利 ,我写这篇文章的目的主要是提醒大家注意使用软件的版本,因为这类文章网上已经有很多 版本注意了 ,基本 就没什么问题了 。由于软件太大 ,所以这里只能提供
jwchat.war的下载,其他软件要 大家到网上去下了,由此带来的不方便,请原谅
如果在架设过程中遇到什么问题 ,请联系我
请登录后投票
来自: 上海
发表时间:&&
不知道支持LDAP么?
请登录后投票
等级: 初级会员
来自: 上海
发表时间:&&
引用deaboway 2 小时前
不知道支持LDAP么?
openfire& 支持LDAP 。
请登录后投票
等级: 初级会员
来自: 武汉
发表时间:&&
倒拉 我的登陆之后 弹出一对话窗体& An Error Occured:Code:400 type=modify Condition:bad-request这是为什么。啊。 我晕啊。
请登录后投票
yangpanwww
等级: 初级会员
来自: 杭州
发表时间:&&
An Error Occured:Code:400 type=modify Condition:bad-request
& 好象是var SITENAME = "computer"; //& 此处为openfire所设置的 域名
地方没有配置好吧..我开始也是..配置了就可以了..
&
&&& computer就 服务器计算机名
请登录后投票
等级: 初级会员
来自: 上海
发表时间:&&
最近比较忙& 没能及时回复各位朋友的问题
非常抱歉 ,也希望大家把自己的操作心得留下
一起进步&& fighting!
请登录后投票
等级: 初级会员
来自: 北京
发表时间:&&
请问如何和现有系统集成?
最难的就是如何用现有系统的用户表数据?
请登录后投票
& 上一页 1
跳转论坛:移动开发技术
Web前端技术
Java企业应用
编程语言技术您所在的位置: &
一步一步开发自己的Openfire插件
一步一步开发自己的Openfire插件
开发环境:System:Windows;WebBrowser:IE6+、Firefox3+;JavaEE Server:tomcat5.0.2.8、tomcat6;IDE:eclipse、MyEclipse 8
这篇是简单插件开发,下篇聊天记录插件。
开发环境:
System:Windows
WebBrowser:IE6+、Firefox3+
JavaEE Server:tomcat5.0.2.8、tomcat6
IDE:eclipse、MyEclipse 8
开发依赖库:
Jdk1.6、jasper-compiler.jar、jasper-runtime.jar、openfire.jar、servlet.jar
在开始之前,如果你不知道怎么使用openfire,安装openfire服务器,建议你看这篇文章:
一、准备工作
1、 下载相关jar包和openfire源码
Openfire源码下载:
其他的jar包你可以去tomcat中的lib目录找到或者其他的地方也有(在下面的步骤会提到),这里就赘述了。
2、 新建一个自己的java project工程,添加的jar包如下:
将jasper-compiler.jar、jasper-runtime.jar、servlet.jar添加到新建的工程中。如果没有jar先不要急,看下面的步骤:
下载后的openfire源码目录是这样的
如果你有ant工具可以用dos命令行的方式,直接运行build目录中的ant脚本,运行脚本后,你会发现有一个target的目录。该目录如下:
在lib目录中可以找到我们需要的jar文件了,将openfire.jar也添加到你的工程中。
如果你没有安装ant你可以用MyEclipse,将openfire源码中的build、documentation、resources目录复制到一个Java Project中,然后在MyEclipse中运行src中的build.xml ant脚本就会出现和上面一样的文件目录。
建议将你的MyEclipse中的openfire源码工程目录设置成这样的
其中,src/plugins/tree是我自己写的插件,现在暂时可以无视。而target就是我们需要的,里面存放了openfire的配置和需要的jar包。Work是工作目录,是一个完整的openfire服务器。如果你还没有下载openfire服务器的话,可以用这个服务器。
3、 了解openfire源码中的插件
我们找一个插件目录看看,主要看看里面的结构,目录结构很重要。因为我们将写好的插件打成jar包后,打包的jar的目录有一定规范结构,不能随便建立其他目录。
这是一个userservice的插件,在src/java中是我们的插件源代码;web目录中则是前端的页面,其中web-custom.xml是配置当前插件UserServiceServlet配置;changelog.html是修改日志;logo_small.gif是插件图标;plugin.xml是我们配置插件的文件,这个很重要(在这里先提示下);
二、开发简单插件
工程现在的目录机构如下
1、 建立自己的插件类,SamplePlugin.java,里面简单的写点内容。
package&com.hoo.server. && &import&java.io.F &import&org.jivesoftware.openfire.XMPPS &import&org.jivesoftware.openfire.container.P &import&org.jivesoftware.openfire.container.PluginM && &&&&&&&&&&&&public&class&SamplePlugin&implements&Plugin&{ && &&&&&private&XMPPServer& &&&&& &&&&&@Override&&&&&public&void&initializePlugin(PluginManager&manager,&File&pluginDirectory)&{ &&&&&&&&&server&=&XMPPServer.getInstance(); &&&&&&&&&System.out.println(&初始化&&&安装插件!&); &&&&&&&&&System.out.println(server.getServerInfo()); &&&&&} && &&&&&@Override&&&&&public&void&destroyPlugin()&{ &&&&&&&&&System.out.println(&服务器停止,销毁插件!&); &&&&&} &} &
比较简单,如果你将插件安装在openfire服务器上的时候,启动服务器一个可以看到初始化的内容,关闭服务器可以看到销毁的内容。
2、 配置插件
&version=&1.0&&encoding=&UTF-8&&&&com.hoo.server.plugin.SamplePlugin&& &&SimplePlugin&This&is&the&my&sample&plugin.&hoojo&& &1.0&28/02/2013&http://localhost:9090/openfire/plugins.jsp&3.4.1&gpl&& &&&&& &&&&&&&
注意上面的class的配置,那个配置是最为重要的,配置的是插件的全路径;name是插件的名称,安装后的插件名称;author是插件作者;lincenseType是协议;adminconsole是配置插件关联的页面的;稍后再讲!
3、 可部署的插件包jar的目录结构
这个很重要,目录结构将决定你插件 发布的成败。
在编写命令之前,我们可以看看openfire服务器中已经安装的插件的jar包的目录结构,到时候我们也要打包成那样的结构才行的。必须打包成这样的目录结构,否则哼哼&&后果很严重的!声明!
在我机器中的openfire服务器中,插件目录在C:\Program Files\openfire\plugins,里面有一个search.jar插件。提示:当你将一个可以安装的jar安装在openfire后,会被openfire解压成目录结构。就向JavaEE中的war包发布的应用服务器中的效果一样的。
打成可部署的插件jar包(相当于发布的应用服务器的目录结构)的search.jar目录结构如下:
首先看看文件命名,search.jar就是我们打包的插件的名称,而国际化的配置文件就是以插件名称开头_118n.properties或插件名称开头_118n_language.properties;而lib目录中的是插件的src目录的class打成的jar包;带有*-jspc.jar是web目录下的jsp编译成servlet后的class打成的包文件,都是以插件名称开头;WEB-INF/web.xml配置的是*-jspc.jar中的class文件;web/images是图片文件,需要用到的图片都放置在这个目录即可;plugin.xml文件名固定的,里面是配置插件的xml内容。
其中,118n国际化文件,它主要是我们在插件中的jsp和Java程序中的国际化配置。Web目录存放jsp、图片、web.xml内容;lib目录是存放插件的src目录的java代码编译后打包的jar,以及jsp编译成servlet的class打包后的jar;其他的文件都是根目录的;
对照上面插件包的jar,我们看看实际开发中的目录结构:
稍提醒下,如果你的插件中包含servlet,那你需要将它配置在web目录下的WEB-INF/web-custom.xml目录中;这个在以后会经常用到的,比如你提供一个接口给外部程序调用的情况下。目录结构参考:
UserServiceServlet配置在web-custom.xml目录中。
4、 编写ant命令,打可部署jar包。如果你不懂ant命令也没关系,你总知道java的基本常用的dos命令。只不过ant就是将dos转换成一个可重复多次调用的命令行。
在工程的根目录中新建一个build目录,新建
build.xml& &&&name=&Webapp&Precompilation&&default=&openfire-plugins&&basedir=&.&&&&&&&file=&build.properties&&&&&&& &&&&&&&&&&&name=&java.jar.dir&&value=&${webapp.path}/java-dist&&&&&&&&&&&&name=&jsp.jar.dir&&value=&${webapp.path}/jsp-dist/lib&&&&&&&&&& &&&&&&&&&&&name=&java.jar&&value=&${java.jar.dir}/plugin-${plugin.name}.jar&&&&&&&name=&jsp.jar&&value=&${jsp.jar.dir}/plugin-${plugin.name}-jsp.jar&&&&&& &&&&&&&&&&&name=&plugin.web.xml&&value=&${webapp.path}/jsp-dist/web.xml&&&&&&&&&& &&&&&&&&&&&name=&jspc&&&&&&&&&& &&&&&&&&&&classname=&org.apache.jasper.JspC&&name=&jasper2&&&&&&&&&&&&&&&id=&jspc.classpath&&&&&&&&&&&&&&&&&&&location=&${java.home}/../lib/tools.jar&&&&&&&&&&&&&&&&&&&&dir=&${tomcat.home}/bin&&&&&&&&&&&&&&&&&&&&&&&name=&*.jar&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&dir=&${tomcat.home}/server/lib&&&&&&&&&&&&&&&&&&&&&&&name=&*.jar&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&dir=&${tomcat.home}/common/lib&&&&&&&&&&&&&&&&&&&&&&&name=&*.jar&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&!-- &&&&&&&&&&&&&&&&&&dir=&D:/Workspace/openfire/build/lib&&&&&&&&&&&&&&&&&&&&&&&name=&**/*.jar&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&javaEncoding=&UTF-8&&validateXml=&false&&&&&&&&&&&&&&uriroot=&${plugin.path}/web&&&&&&&&&&&&&&outputDir=&${webapp.path}/jsp-dist/src&&&&&&&&&&&&&&package=&com.hoo.openfire.plugin.${plugin.name}&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&validateXml=&false&&&&&&&&&&&&&&uriroot=&${plugin.path}/web&&&&&&&&&&&&&&outputDir=&${webapp.path}/jsp-dist/src&&&&&&&&&&&&&&package=&com.hoo.openfire.plugin.${plugin.name}&&&&&&&&&&&&&&webXml=&${plugin.web.xml}&&&&&&&&&&& &&&&&&&&&&&name=&compile&&& &&&&&&&&&&dir=&${webapp.path}/jsp-dist/classes&&&&&&&&&&&&dir=&${webapp.path}/jsp-dist/lib&&&&&&&&&&&&dir=&${webapp.path}/jsp-dist/src&&&&&&&&&&& &&&&&&&&&&destdir=&${webapp.path}/jsp-dist/classes&&optimize=&off&&&&&&&&&&&&&&encoding=&UTF-8&&debug=&on&&failonerror=&false&&&&&&&&&&&&&&srcdir=&${webapp.path}/jsp-dist/src&&excludes=&**/*.smap&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&location=&${webapp.path}/jsp-dist/classes&&&&&&&&&&&&&&&&&&&&dir=&${webapp.path}/jsp-dist/lib&&&&&&&&&&&&&&&&&&&&&&&name=&*.jar&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&location=&${tomcat.home}/common/classes&&&&&&&&&&&&&&&&&&&&dir=&${tomcat.home}/common/lib&&&&&&&&&&&&&&&&&&&&&&&name=&*.jar&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&location=&${tomcat.home}/shared/classes&&&&&&&&&&&&&&&&&&&&dir=&${tomcat.home}/shared/lib&&&&&&&&&&&&&&&&&&&&&&&name=&*.jar&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&dir=&${tomcat.home}/bin&&&&&&&&&&&&&&&&&&&&&&&name=&*.jar&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&name=&**&&&&&&&&&&&&&&&&name=&tags/**&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&jarfile=&${jsp.jar}&&basedir=&${webapp.path}/jsp-dist/classes&&&&&&&&& &&&&&&&&&&&name=&java-jar&&&&&&&&&&&dir=&${java.jar.dir}&&&&&&&&&&&jarfile=&${java.jar}&&&&&&&&&&&&&&&dir=&${webapp.path}/bin&&includes=&**/*.class&&&&&&&&&&&&&& &&&&&&&&& && &&&&&&&&&&&name=&plug-jar&&&&&&&&&&&&&&&&&&&&dir=&${webapp.path}/${plugin.name}/lib&&&&&&&&&&&dir=&${webapp.path}/${plugin.name}/web/WEB-INF&&& &&&&&&&&&&&&&&&&&&&file=&${java.jar}&&todir=&${webapp.path}/${plugin.name}/lib&&&&&&&&&&&file=&${jsp.jar}&&todir=&${webapp.path}/${plugin.name}/lib&&& &&&&&&&&&&&&&&&&&&&todir=&${webapp.path}/${plugin.name}&&&&&&&&&&&&&&&dir=&${plugin.path}&&includes=&*.*&&&&&&&&&&&&&&&&&&&&todir=&${webapp.path}/${plugin.name}/web&&&&&&&&&&&&&&&dir=&${plugin.path}/web&&&&&&&&&&&&&&&&&&&name=&*&&&&&&&&&&&&&&&&&&&name=&**/*.*&&&&&&&&&&&&&&&&&&&name=&**/*.xml&&&&&&&&&&&&&&&&&&&name=&**/*.jsp&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&file=&${plugin.web.xml}&&todir=&${webapp.path}/${plugin.name}/web/WEB-INF&&&&&&&&&&&todir=&${webapp.path}/${plugin.name}/web&&&&&&&&&&&&&&&dir=&${plugin.path}/web&&includes=&**/*.xml&&&&&&&&&&&&&&&&&&&&!--&将国际化相关资源文件复制到插件目录下& &&&&&&&&&&file=&${webapp.path}/bin/i18n&&todir=&${webapp.path}/${plugin.name}&&&&&&&&&&--&&&&&&&&&&&&&&&&&&&jarfile=&${webapp.path}/${plugin.name}.jar&&&&&&&&&&&&&&&dir=&${webapp.path}/${plugin.name}&&includes=&**/**&&&&&&&&&&&&&& &&&&&&&&& &&&&& &&&&&&&&&&&name=&java-plug-jar&&&&&&&&&&&&&&&&&&&&dir=&${webapp.path}/${plugin.name}/lib&&& &&&&&&&&&&&&&&&&&&&file=&${java.jar}&&todir=&${webapp.path}/${plugin.name}/lib&&& &&&&&&&&&&&&&&&&&&&todir=&${webapp.path}/${plugin.name}&&&&&&&&&&&&&&&dir=&${plugin.path}&&includes=&*.*&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&jarfile=&${webapp.path}/${plugin.name}.jar&&&&&&&&&&&&&&&dir=&${webapp.path}/${plugin.name}&&includes=&**/**&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&name=&clean&&&&&&&&&&&file=&${webapp.path}/${plugin.name}.jar&&&&&&&&&&&dir=&${webapp.path}/${plugin.name}&&&&&&&&&&&dir=&${webapp.path}/jsp-dist&&&&&&&&&&&dir=&${webapp.path}/java-dist&&&&&&&&&&& &&&&&&name=&all&&depends=&clean,jspc,compile&&& &&&&&&name=&openfire-plugin&&depends=&jspc,java-jar&&& &&&&&&name=&openfire-plugins&&depends=&all,java-jar,plug-jar&&&&&& &&&&&&name=&openfire-plugin-java&&depends=&clean,java-jar,java-plug-jar&&&
build.properties文件内容
#tomcat&home &tomcat.home=D:/tomcat-5.0.28/tomcat-5.0.28&webapp.path=D:/Workspace/OpenfirePlugin && &plugin.name=sample &plugin.path=D\:/Workspace/OpenfirePlugin/src/plugins/sample &
注意:这里我没有编写编译java代码到class的步骤,我是直接使用MyEclipse自动编译的bin/class的。如果你没有用MyEclipse或Eclipse,那么你需要将src中的Java代码编译class。
这里需要配置tomcat的目录,我这里是5.0.28的版本。我用tomcat6有些问题,这里主要是用tomcat中的lib库,帮助我们编译jsp。还需要配置你当前工程的所在目录,也就是工程在Eclipse中的目录位置。最后你需要配置插件的名称和插件在工程中的所在目录,这个是在打包的时候,需要将其他的html、image、xml等资源导入的jar内。
因为这里的插件是不带jsp的,所以我们执行clean、java-jar、java-plugin-jar。也就是openfire-plugin-java这个命令即可。执行命令后,你可以看到工作空间的工程目录下多了目录和文件。见图:
java-dist目录里面的就是src/plugin/sample目录中的java代码打成的jar包。具体你可以用zip打开看看。
sample就是我们的插件目录,和sample.jar中的内容是一模一样的。
sample.jar就是将sample目录打成jar包。
5、 发布插件
发布插件有2种方式
第一种:直接将插件放置在openfire服务器的plugins目录下。我的是在:C:\Program Files\openfire\plugins目录。重起openfire后你可以看到控制台输出我们插件中输出的内容,并且在C:\Program Files\openfire\plugins目录中可以看到该目录下多了一个sample的目录(openfire可以自动解压jar包)。
当你在关闭服务器的瞬间,也会打印销毁插件的消息。
第二种:在openfire启动的情况下,访问页面,点击页面下方的upload plugin完成插件上传操作。
插件按照成功后,访问页面你就可以看到安装好的插件了。
至此,不带jsp页面的简单插件就编写部署成功了。
三、开发带jsp、PluginServlet的插件
有些插件是单纯的继承Plugin或Handler什么的,但有些是需要jsp页面和Servlet的。下面我们就来开发带jsp和servlet的插件。
在之前的目录下添加文件,目录结构如下:
1、 首先建立一个SampleServlet的文件,内容如下
package&com.hoo.server. && &import&java.io.IOE &import&java.io.PrintW &import&javax.servlet.ServletE &import&javax.servlet.http.HttpS &import&javax.servlet.http.HttpServletR &import&javax.servlet.http.HttpServletR && &&&&&&&&&&&&public&class&SampleServlet&extends&HttpServlet&{ &&&&& &&&&&private&static&final&long&serialVersionUID&=&-6926869L; && &&&&&@Override&&&&&public&void&init()&throws&ServletException&{ &&&&&&&&&super.init(); &&&&&} &&&&& &&&&&@Override&&&&&protected&void&doGet(HttpServletRequest&request,&HttpServletResponse&response)&throws&ServletException,&IOException&{ &&&&&&&&&super.doGet(request,&response); &&&&&&&&& &&&&&&&&&response.setContentType(&text/plain&); &&&&&&&&&PrintWriter&out&=&response.getWriter(); &&&&&&&&&System.out.println(&请求SampleServlet&GET&Method&); &&&&&&&&&out.print(&请求SampleServlet&GET&Method&); &&&&&&&&&out.flush(); &&&&&} && &&&&&@Override&&&&&protected&void&doPost(HttpServletRequest&request,&HttpServletResponse&response)&throws&ServletException,&IOException&{ &&&&&&&&&super.doPost(request,&response); &&&&&&&&& &&&&&&&&&response.setContentType(&text/plain&); &&&&&&&&&PrintWriter&out&=&response.getWriter(); &&&&&&&&&System.out.println(&请求SampleServlet&GET&Method&); &&&&&&&&&out.print(&请求SampleServlet&POST&Method&); &&&&&&&&&out.flush(); &&&&&} && &&&&&@Override&&&&&public&void&destroy()&{ &&&&&&&&&super.destroy(); &&&&&} &} &
2、 在当前插件根目录添加web目录,在目录下建立WEB-INF目录,添加web-custom.xml文件(文件名应该是固定的)。在里面配置我们的servlet。
&?xml&version=&1.0&&encoding=&ISO-8859-1&?& &&!DOCTYPE&web-app&PUBLIC&&-//Sun&Microsystems,&Inc.//DTD&Web&Application&2.3//EN&&&/dtd/web-app_2_3.dtd&& &&web-app& &&&&& &&&&&&servlet& &&&&&&&&&&servlet-class&com.hoo.server.plugin.SampleServlet&/servlet-class& &&&&&&&&&&servlet-name&SampleServlet&/servlet-name& &&&&&&/servlet& &&&&& &&&&&&servlet-mapping& &&&&&&&&&&servlet-name&SampleServlet&/servlet-name& &&&&&&&&&&url-pattern&/servlet&/url-pattern& &&&&&&/servlet-mapping& &&/web-app& &
当插件发布后你可以通过用: 就可以访问到这个servlet了。但我发现我们只需用配置。
注意:这里的是固定的,至少plugins是固定的。所有的插件都在plugins目录下访问的。如果你想知道为什么,你可以看看openfire源码下的web.xml,具体目录路径在/openfire/src/web/WEB-INF/web.xml。里面有一个PluginServlet是过来plugin的配置的。
3、 在web目录下添加jsp文件,文件名是插件名称-自定义名称.jsp(建议规范命名)
%@&page&language=&java&&import=&java.util.*&&pageEncoding=&UTF-8&%&&!DOCTYPE&HTML&PUBLIC&&-//W3C//DTD&HTML&4.01&Transitional//EN&&&&&&&&&&hello&world:&你好openfire&&&&&&http-equiv=&Content-Type&&content=&text/&charset=UTF-8&&&&&&&name=&pageID&&content=&sample-service&&&&&&& &&&&&&&&hello&world&jsp!!&&href=&/plugins/sample/servlet&SampleServlet&&&&&&class=&jive-contentBoxHeader&jive-contentBoxHeader&&&&&&class=&jive-contentBox&jive-contentBox&&&&& &&&&&&class=&jive-table&&&&&&&&&&&cellpadding=&0&&cellspacing=&0&&border=&0&&width=&100%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&sss&&&&&&&&&&&&&&&&&&&&&&nowrapa&&&&&&&&&&&&&&&&&&&&&&nowrapb&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&align=&center&asdf&&&&&&&&&&&&&&&&&&&&&&align=&center&asdf&&&&&&&&&&&&&&&&&&&&&&align=&center&asdf&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&class=&jive-even&&&&&&&&&&&&&&&&&&&&&&&&&&align=&center&asdf&&&&&&&&&&&&&&&&&&&&&&align=&center&asdf&&&&&&&&&&&&&&&&&&&&&&align=&center&asdf&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&class=&jive-odd&&&&&&&&&&&&&&&&&&&&&&&&&&align=&center&asdf&&&&&&&&&&&&&&&&&&&&&&align=&center&asdf&&&&&&&&&&&&&&&&&&&&&&align=&center&asdf&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
其中最重要的一点就是:&meta name=&pageID& content=&sample-service&/&这个pageID。这里的是固定的,后面的content对应我们plugin.xml的内容(等下看看plguin.xml的配置)。然后可以适当的看下里面table的 属性和样式,因为很多时候会在jsp中显示内容,且用table布局的。
4、 改下之前的plugin.xml的配置,配置组件在openfire 管理员控制台的哪个地方显示,以及显示的页面。
&version=&1.0&&encoding=&UTF-8&&&&&&&&&&&&com.hoo.server.plugin.SamplePlugin&& &&&&&&&&&&SimplePlugin&&&&&This&is&the&my&sample&plugin.&&&&&hoojo&& &&&&&1.0&&&&&28/02/2013&&&&&http://localhost:9090/openfire/plugins.jsp&&&&&3.4.1&&&&&gpl&& &&&&&&&&& &&&&&&&&&&id=&tab-server&&&&&&&&&&&&&&&id=&sidebar-server-settings&&&&&&&&&&&&&&&&&&&id=&sample-service&&name=&Sample&Service&&url=&sample-service.jsp&&&&&&&&&&&&&&&&&&&&&&&description=&Click&is&trigger&sample&plugin&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
这里主要就是adminconsole这里面的配置。首先tab-server应该是在管理员控制台页面的服务器菜单中显示;sidebar中的的id配置固定这样写即可;item中的id(sample-service)对应的就是上面的sample-service.jsp的&meta name=&pageID& content=&sample-service&/&的content内容;item的url对应的是我们写的jsp页面;name是插件的菜单名称。也就是说在管理员控制台页面中的服务器菜单下增加一个sample service的菜单,打开的页面是sample-service.jsp页面。
5、 运行ant脚本,打包发布插件。在上一章节有完整ant脚本的,运行build.xml中的这个openfire-plugins命令即可打包。然后将打好包的sample.jar发布到openfire的plugins目录下即可。
打包后的jar插件目录结构如下:
启动openfire后,在openfire管理员控制台页面的服务器-&服务器设置中就可以看到Sample Service插件了。
点击Sample Servlet就可以看到openfire控制台打印请求的文字信息。
ok,至此开发自己的openfire插件基本上就是这样的,网上这方面的资料很少,我也是官方的插件源码和网上提供的小部分资料才整出来的。本来在去年(2012)就应该发布这篇文章的,不料那个时候每天都很忙。加班、上线什么的,所以这篇文章才在今日发表。
原文链接:
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&的更多文章
IE浏览器不支持很多CSS属性是出了名的,即便在支持的部分中,也
随着云计算、物联网、大数据、移动互联网的大发展,你应该知道这些。
Eclipse 是一个开源的、可扩展的集成开发环境。平台本
这个架构是从我近期在做的一个项目中剥离出来的,这个
MongoDB的转变也正是10gen的转变,Dwight Merriman在
本书全面、深入地介绍了网络应用技术,主要内容包括:RMS权限管理服务、Exchange邮件服务、LCS即时消息服务、WSUS系统更新服务、
51CTO旗下网站

我要回帖

更多关于 webapp服务器 的文章

 

随机推荐