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目录下去,一大堆,累死你。
前提是你已经安装好了Eclipse工具了,比如安装在E:\OpenSource\Eclipse\目录下,以下这个目录以%ECLIPSE_HOME%来进行表示;
此时默认的插件是在%ECLIPSE_HOME%\plugins目录中的;
在%ECLIPSE_HOME%下建立一个PlugInsNew的目录;比如:E:\OpenSource\Eclipse\PlugInsNew\
你下载了个新的插件,比如叫做:XYZ
那么就在%ECLIPSE_HOME%\PlugInsNew\目录下建立XYZ目录,目录里面是eclipse目录,eclipse目录包含有features与plugins两个子目录;结构如下图所示:
把下载的新插件的文件放在以下相应目录中
%ECLIPSE_HOME%\PlugInsNew\XYZ\eclipse\features
%ECLIPSE_HOME%\PlugInsNew\ XYZ\eclipse\plugins
建立相关的.link的文件
然后在%ECLIPSE_HOME%\links目录里建立一个XYZ.link的文件
内容如是:path=E:/OpenSource/Eclipse/PlugInsNew/XYZ就一行这样的路径指示而已。
这样,如果你下载了多个插件就可以如法炮制建立多个Link文件,想加载哪个插件就把哪个插件的Link文件放到%ECLIPSE_HOME%\links的目录中即可,使用与管理都很方便,建议千万不要放在默认的安装目录中;
如果你的%ECLIPSE_HOME%与此不同,请修改XYZ.link文件里的路径
删除,关闭Eclipse
删除%ECLIPSE_HOME%\links\XYZ.link文件即可
删除%ECLIPSE_HOME%\PlugInsNew\XYZ整个目录及文件
重新启动Eclipse即可使用
WebLogic Plugin现在有两个版本1.1.1和2.0.0。1.1.1只是能够配置一台服务器,并只提供启动停止服务器的功能,没有Redeploy、Undeploy;2.0.0可以配置多台,可以Redepoly、Undeploy,不过没有Deploy功能,而且还有一大BUG,就是只是每次重启Eclipse要重新设置一下用户与密码即可。对1.1.1感兴趣的朋友,可以查看:http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=124&threadID=34318&tstart=120。下面介绍2.0.0版本的集成使用方法。以及Bug的修改。
WebLogic Plugin 2.0.0 功能
启动、停止WebLogic 服务器
利用JDT为高度J2EE的应用程序
选择WebLogic域
配置WebLogic服务器的启动参数
要求
Eclipse SDK 2.0.0 或更高的版本
WebLogic Server 6.0或更高的版本
安装
插件安装方法有两种方式:
一种就是采用上一节的《Eclipse使用技巧之插件管理》
另一种就是通过Update Manager的形式来下载安装
地址是:https://eclipse-plugin.projects.dev2dev.bea.com/update
安装步骤如下:
Help è Software Updates è Find and Install…
配置WebLogic Plugin
菜单 Windows è Preferences ,然后选中WebLogic节点可以看到右边配置的服务器实例列表,可以增加、修改、删除相应的服务器配置。
现在开始增加服务器配置,在General标签设置以下各个参数
设置服务器配置的显示名称
选择你的WebLogic Server的版本
设置BEA Home 的目录
设置WebLogic Home的目录
设置Domain 的名称
设置Domain 的目录
设置Server 的名称
设置Host机器名称或IP,本机填localhost即可(weblogic.Admin使用的)
设置端口号(weblogic.Admin使用的)
设置SSL端口号(weblogic.Admin使用的),注意:这个要先在控制台http://localhost:7001/console/ 里先设置好才行,要不然保存时检测不到就保存不了。
设置管理员名称(是有权限启动这个Server的用户名称如默认的weblogic)
设置密码
在Classpath配置标签栏里,可以设置如下参数:
Pre-startup WebLogic Classpath,是设置在WebLogic类库加载之前要先加载的一些类库
Prost-startup WebLogic Classpath,是设置在WebLogic类库加载之后才要开始进行加载的一些类库
注意是先后顺序的不同,根据你的项目需要进行设置之,重新启动Eclipse后,在java.class.path=的前与后会增加进来你设置的这些Classpath
在Runtime配置标签栏里,可以设置如下参数
JRE(选择用来启动WebLogic Server所要用到的JDK,这个可以在菜单Window è Preferences è Java è Installed JREs里进行配置的,上面说过了,要注意根据你的WebLogic的版本选择其相应支持的JDK方可。
VM Arauments(设置传递给JavaVM的参数,如最大与最小堆栈大小,以什么模式启动WebLogic Server,本例我们假设以产品模式启动)
JNI Library Path(设置要加载JNI时的搜索路径)
Run Mode(设置以产品模式还是开发模式进行启动WebLogic Server)
菜单 Windows è Show View è Other …
可以看到WebLogic分类下面有WebLogic Servers菜单项,选择并打开它。
这样可以在这里进行启动、停止WebLogic Server等操作。
选中WebLogic 下的 Project节点,并进行如下参数的设置
Project added to the end of the classpath,通过Add按钮,可以选择你所要加载的项目,这样所选中的项目里所有的类库量也会自动地加进来的,不过它的加载顺序是在Classpath的最后面。
启动WebLogic服务器
在打开的视图中,右键,选择Start就可以启动WebLogic Server了
在控制台会有如下的启动信息显示:
显示启动成功。
在这里也可以进行增加其它WebLogic Server的配置,如下:
修改WebLogic Server的配置
删除WebLogic Server的配置
也可以查看相应的帮助文档,如下:
打开WebLogic Plugin的帮助文档进行查阅,可惜没有看到。
停止WebLogic服务器
在打开的视图中,右键,选择Stop就可以停止WebLogic Server了
在控制台会有如下的停止信息显示:
部署、重新启动、停止应用程序
部署应用:只能通过浏览器去部署新的应用,没有找到这里可以直接进行部署的地方。
重新启动:假如我们通过浏览器或其它控制端部署了一个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 identityfile 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、覆盖、重启:)
1、WebLogic Plugin 2.0.0的配置文件保存在
%ECLIPSE_HOME%\workspace\.metadata\.plugins\com.bea.weblogic.eclipse\目录下
dialog_settings.xml是保存配置对话框的大小之类的文件
servers.xml是保存服务器配置信息的文件
解压出weblogic-eclipse.jar里的所有文件
反编译com\bea\weblogic\eclipse\utils\XMLUtil.class得到XMLUtil.java
在里面增加两个函数
/***
* 将 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;
}
}
在public IServerInstall[] loadServers(File serversFile)函数里修改
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)));
在public void saveServers(IServerInstall servers[],File serversFile)函数里修改
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()));
编译这个XMLUtil.java得到XMLUtil.class,把XMLUtil.class打回weblogic-eclipse.jar包里
关闭Eclipse
把 weblogic-eclipse.jar 覆盖掉原来插件目录里的文件
重新启动Eclipse
Enjoy...
在这里我要补充一点,就是关于weblogic启动时会遇到的问题,在文中已经说过了,但是不是很详细,怕有的朋友没有注意到,所以再拿出来提一下,weblogic8.X版本都不支持jdk1.5,weblogic8.X版本只支持1.42,所以如果装了1.5的朋友也不要紧,因为在weblogic的文件夹下已经打包了一个JDK1.42版本,大家可以在配置的时候注意一下路径的选择问题.
还有一个问题就是关于上文中提到的weblogic配置时设置Server 的名称的问题,如果你已经按照我之前发布的weblogic配置的那篇word文档配置过一个服务器的话,那么在eclipse中关于server名称的设置就要注意了,这个server名称与之前你配置的不要重复,否则是无法启动的,在eclipse中启动weblogic时会有这样的错误信息:
****************************************************************************************************************
The WebLogic Server did not start up properly.
Exception raised: 'weblogic.management.configuration.ConfigurationException: Unable to locate server named hiphop in the configuration file config.xml. Please ensure the argument -Dweblogic.Name=<serverName> matches a server name in that file, for example: <Server ... Name="someName"/>.A single server was found namedmyserver'
Reason: weblogic.management.configuration.ConfigurationException: Unable to locate server named hiphop in the configuration file config.xml. Please ensure the argument -Dweblogic.Name=<serverName> matches a server name in that file, for example: <Server ... Name="someName"/>.A single server was found namedmyserver
****************************************************************************************************************
编辑server,把server名称换一个就可以正常启动了,当然,这也是我在使用中犯的一个小小的错误,拿出来望大家引以为戒.
关于weblogic的配置就说这些,如果有高人也在用java的,不管是在工作,还是在学习,希望能一起讨论.
以后我还会发一些关于在公司中遇到的一些开发时需要注意的问题总结,希望能对大家有所帮助!近期会发布一些关于eclipse使用的一些知识总结,部分为转载,但对大家应该都会有帮助的!