本文介绍如何利用eclipse插件weblogic plugin在eclipse中的使用。
eclipse是目前非常流行的开发平台,开放扩展的架构让很多程序员找到了自己个性化的工作环境。
问题提出:
weblogic目前是使用比较多的应用服务器之一,eclipse是流行的ide,如何集成起来开发使用呢?
解决方法:
采用bea提供的weblogic plugin来进行集成开发。
安装
jdk:1.4.2或1.5.0 从http://java.sun.com上去下载安装,如果是weblogic 8.x.x系列的版本,应当选用jdk 1.4.2的版本。
eclipse:3.1.2 从http://www.eclipse.org 上去下载解压
weblogic plugin 从https://eclipse-plugin.projects.dev2dev.bea.com/下载
技巧 eclipse使用技巧之插件管理
提示:新下载的插件plugin一定不要都放在原始的eclipse目录下去,一大堆,累死你。
配置weblogic plugin
可以看到weblogic分类下面有weblogic servers菜单项,选择并打开它。
这样可以在这里进行启动、停止weblogic server等操作。
project added to the end of the classpath,通过add按钮,可以选择你所要加载的项目,这样所选中的项目里所有的类库量也会自动地加进来的,不过它的加载顺序是在classpath的最后面。
启动weblogic服务器
在控制台会有如下的启动信息显示:
显示启动成功。
在这里也可以进行增加其它weblogic server的配置,如下:
修改weblogic server的配置
删除weblogic server的配置
也可以查看相应的帮助文档,如下:
打开weblogic plugin的帮助文档进行查阅,可惜没有看到。
停止weblogic服务器
在控制台会有如下的停止信息显示:
部署、重新启动、停止应用程序
部署应用:只能通过浏览器去部署新的应用,没有找到这里可以直接进行部署的地方。
重新启动:假如我们通过浏览器或其它控制端部署了一个web application上去了。
这时,通过插件停止weblogic,再启动它后,双击展现web appplication modules,可以在下面看我们部署上去的应用了。不过,而慢进行停止再启动。
可以直接通过插件提供的刷新功能就会把部署上去的模块展现出来,如下:
这时,要重新启动应用程序的话,只要在应用名称上面右键,在弹出的菜单中选择redeploy即可重新部署应用了,速度很快的。
删除应用程序的话,只要在应用名称上面右键,在弹出的菜单中选择undeploy即可删除应用了,模块名称立马消失,速度很快的,要重新部署又得通过浏览器或其它控制端来完成了。
总结
此插件的功能给予我们方便地集成eclipse与weblogic的开发使用,提高了效率。
bug一个,大家要注意。
关闭eclipse之后重新启动eclipse后,这时要启动weblogic会发现以下错误而启动不了,郁闷了吧:)
<critical>
<security>
<bea-090402>
<authentication denied: boot identity not valid;
the user name and/or password from the boot identity file
(boot.properties) is not valid. the boot identity may have been changed
since the boot identity file was created. please edit and update
the boot identity file with the proper values of username and password.
the first time the updated boot identity file is used to start the server,
these new values are encrypted.> *************************************************************************** the weblogic server did not start up properly. reason: weblogic.security.securityinitializationexception:
authentication denied: boot identity not valid;
the user name and/or password from the boot identity file (boot.properties) is not valid.
the boot identity may have been changed since the boot identity file was created.
please edit and update the boot identity
file with the proper values of username and password.
the first time the updated boot identity file is used to start the server,
these new values are encrypted. ***************************************************************************
不过解决的办法也简单,看到下图的信息了吧,这个插件在对用户进行存取的时候出了问题,导致错误的,你每次重新启动eclipse后,要修改一下weblogic的配置文件,把里面的用户名用密码再保存后才行的。
后记
文章写完后,我又修复了上述的bug,这里重点再阐述一下解决过程:解压、反编译、替换加密方法、编译、重打包、关闭eclipse、覆盖、重启:)
/** * 将 source 进行 base64 编码 * * @param source * @return */ public static string buildbase64(string source) { if(source == null) { return null; } return (new sun.misc.base64encoder()).encode(source.getbytes()); } /** * 将 base64 编码的字符串 base65code 进行解码 * * @param base65code * @return */ public static string getfrombase64(string base65code) { if(base65code == null) { return null; } base64decoder base64decoder = new base64decoder(); try { byte[] b = base64decoder.decodebuffer(base65code); return new string(b); } catch(exception e) { e.printstacktrace(); return null; } }
cserverinstall.setusername(cryptoutil.getdefault().decrypt(new string(base64util.base64tobytearray(getnodevalue(celement))),id)); 为 cserverinstall.setusername(getfrombase64(getnodevalue(celement))); 修改 cserverinstall.setpassword(cryptoutil.getdefault().decrypt(new string(base64util.base64tobytearray(getnodevalue(celement))),id)); 为 cserverinstall.setpassword(getfrombase64(getnodevalue(celement)));
org.w3c.dom.text usernametext = doc.createtextnode(base64util.bytearraytobase64(cryptoutil.getdefault().encrypt(cserver.getusername(),cserver.getid()).getbytes())); 为 org.w3c.dom.text usernametext = doc.createtextnode(buildbase64(cserver.getusername())); 修改 org.w3c.dom.text passwordtext = doc.createtextnode(base64util.bytearraytobase64(cryptoutil.getdefault().encrypt(cserver.getpassword(),cserver.getid()).getbytes())); 为 org.w3c.dom.text passwordtext = doc.createtextnode(buildbase64(cserver.getpassword()));
新闻热点
疑难解答