站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题WebLogic6.0的一些使用经验 \

WebLogic6.0的一些使用经验 \

摘要: WebLogic6.0的一些使用经验 \
内容: yippit 原创
WebLogic是一个性能卓越的J2EE服务器,在我国的使用者在快速增长.但现在有关它的中文资料基本没有,更没有介绍使用经验方面的。下面是本人在学习使用WebLogic6.0中得到的一些经验,写出来与大家分享。

一、WebLogic6.0的安装:
WebLogic6.0自带了JDK1.3,所以不用预先安装JDK就可以直接安装它,在WIN2000平台是一个EXE文件,直接运行它即可;在UNIX平台上的安装包是一个*.bin文件,用sh运行它就可以了,最好是加 -i console的控制台选项(如果不加,可能会报CLASSNOFOUND等错误)如下所示:
sh weblogic60_sol.bin -i console的控制台

注意:


UNIX系统的TMP目录(环境变量TMPDIR或TMP_DIR所指的路径)应有足够的空间,因为WebLogic6.0安装时先解压文件到系统的TMP目录下,然后再进行安装。如果TMP目录空间不够安装会出错,这时你可以把TMPDIR设到要足够空间的目录下。
如果用普通用户安装出错,可试着用ROOT用户安装.一般是环境变量及权限的问题。
安装软件可到http://commerce.bea.com/downloads/products.jsp下载,联机文档可到http://edocs.bea.com/wls/docs61/index.html下载。

二、与ORACLE数据库的连接:
WebLogic6.0通过ORACLE客户端访问ORACLE,所以在WebLogic6.0所在的机器上要正确安装ORACLE客户端才行。WebLogic6.0对ORACLE提供TYPE2的JDBC DRIVER支持,是一些动态连接库(NT 是.DLL,UNIX是.SO)文件,在$WL_HOME\bin下,以OCI开头的几个目录中。具体采用哪个目录下库文件,与ORACLE SERVER端及CLIENT端的版本及ORACLE API的版本有关,可参考WebLogic6.0的联机文档.要把这些库所在的路径加到系统的环境变量中,否则访问数据库时,WebLogic6.0会报以下错误:
Java.sql.SQLException: System.loadLibrary threw java.lang.UnsatisfiedLinkError with the message 'no WebLogicoci37 in java.library.path'.....
在WIN2000中要加到PATH环境变量中,如:
set PATH= D:\WebLogic6.0\wlserver6.0\bin\oci816_7;c:\ORANT816\bin;%PATH%
在NIX平台,要到系统的LIBRARY PATH中,如在SUN上,要加到LD_LIBRARY_PATH环境变量中,方法如下:
export LD_LIBRARY_PATH=/bea/weblogic6.0/oci816_8:$ORACLE_HOME/lib
在HP平台上,要加到SHLIB_PATH环境变量中,如:
export SHLIB_PATH=/bea/ weblogic6.0/lib/hpux11/oci816_8:$ORACLE_HOME/lib

三、在WebLogic6.0中设置资源的访问权限
WebLogic6.0几乎可以对它所管理的所有资源设置访问控制表,包括EJB、JSP、SERVLET、POOL、JMS、RMI、JNDI、JDBC等等。当用户第一次访问设置了访问控制表的资源时,WebLogic6.0会弹出一个对话框要求输入口令及密码,如果连输3次都不对,会返回以下错误:
Error 401--Unauthorized xxx From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1: 10.4.2 401 Unauthorized

对访问权限的设置有两种方式:


在WebLogic6.O的控制台中设置,把结果保存到fileRealm.properties中,即采用WebLogic6.0的file realm.感觉对DATABASE POOL,EJB等比较好用,对JSP,SERVER及某个目录设置访问控制表比较难。我试了很多次都没成功。它可对WEB用户(通过浏览器访问)和普通用户(通过JAVA客户端等访问)起作用。
在WEB.XML,WebLogic.XML中设置,只能对WEB用户起作用。下面举个例子说明这种方式。
如:在一个名为OrderWebApp的WEB APPLICATION中,客户的定单文件都放到/orders目录下,只有manager能浏览该目录下的文件。其WEB.XML及WebLogic.XML可设置如下:
*************************WEB.XML*************************
web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 1.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">




SecureOrdersEast
Security constraint for resources in the orders directory
/orders/*
POST
GET



constraint for orders
manager



SSL not required
<transport-guarantee>NONE</transport-guarantee>





managers
manager




说明:中定义资源的访问控制表。在中定义资源及其存取方式;在中定义可访问该资源的角色;在 中定义WebLogic SERVER与CLIENT之间的开始通讯时,是否采用SSL建立连接。在中定义角色名。

*************************WebLogic.XML*************************
WebLogic6.0-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 6.0//EN" "http://www.bea.com/servers/wls600/dtd/WebLogic6.0-web-jar.dtd">



manager
peter
bill



说明:在定义与WEB.XML中定义的角色所对应的用户。这些用户必须已在WebLogic6.0的控制台中定义才行。

当在浏览器中输入http://localhost:7001/OrderWebApp/orders/order100.html时,WebLogic6.0要求输入用户名及口令.只有peter,bill能够访问该文件. 我发现:如果没有在WebLogic.XML中设置,并在WebLogic6.O的控制台中定义的用户名与WEB.XML中中角色的名字一样.则该用户可以访问受保护的资源.如果在在WebLogic.XML中设置了,则与中的角色名字一样的用户也不能访问受保护的资源,只有在中定义的用户才可以访问受保护的资源.


四、JSP的设置及调试:
在WebLogic6.0中,JSP要放到一个WEB APPLICATION 中才能对它进行访问,对JSP的配置在WebLogic.XML中,如下所示:

WebLogic6.0-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 6.0//EN" "http://www.bea.com/servers/wls600/dtd/WebLogic6.0-web-jar.dtd">




pageCheckSeconds


1




verbose


true






比较重要的有pageCheckSeconds,设置WebLogic6.0每隔多长时间检测一次JSP文件的内容是否改变,并需要重新编译,等于0,每次调用都重新编译(一般用于调试环境中),等于-1从不重新编译(一般用于运行环境中).当第一次访问某个WEB APPLICATION下的一个JSP文件时,WebLogic6.0把它编译成一个CLASS文件并放到相应的目录下:

如果是以目录结构形式发布的WEB APPLICATION,放到该WEB APPLICATION的 WEB-INF\_tmp_war_examplesServer_examplesServer_*目录下。
如果该WEB APPLICATON是以一个WAR文件布置的,则放到: …\applications\.wl_temp_do_not_delete\WEB-INF\_tmp_war_examplesServer_examplesServer_*目录下。
在调试JSP时,为了使每次总是访问最新的页面,除了设置pageCheckSeconds=0外,应该让IE不缓存该页面.设置如下:
把/工具/INTERNET选项/常规/设置/的检察所存页面的较新版本,设为每次访问该页时都检查。如果还是不能看到最新的页面,可以到以上介绍的目录下把与该JSP对应的CLASS文件删除,强制WebLogic6.0重编译。


五、PASSWORD的管理:

WebLogic6.0每次启动时都会提示请输入密码,如果不想每次启动时都输入密码,可创建一个PADDWORD.INI文件,并把密码保存在该文件中即可。也可以用-Dpassword=PASSWORD 把密码加到启动脚本中。密码可在WebLogic6.0的控制台中的SECURITY中修改。

六、WebLogic 6.0控制台的使用

WebLogic6.0的控制台要在IE5.0以上的版本中才能启动,如果IE设置了代理服务器,WebLogic6.0的控制台有可能无法启动,应把代理服务器的设置去掉在/工具/INTERNET选项/连接/局域网设置中。在WebLogic6.0的控制台能完成几乎所有的配置,不象WebLogic5.1有时候要直接修改配置文件。

七、config.xml文件:

每次WebLogic6.0启动成功,会自动把CONFIG.XML文件备份成CONFIG.XML.BOOTED(在相同的目录下).如果CONFIG.XML中的内容被改动,导致WebLogic6.0无法启动成功,可用它覆盖被破坏的CONFIG.XML.如果在CONFIG.XML中登记的资源(如某个EJB,WAR文件)被删除,WebLogic6.0每次启动都会给出错误提示,可手工把该EJB或WAR在CONFIG.XML中的登记项删除,以后就不会提示。要注意经常对该文件备份。

八、对默认WEB APPLICATION的访问:

WEBLOGIG有一个默认的WEB APPLICATION,如果某一个HTTP(HTTPS)请求,所指定的WEB APPLICATION都无法处理时,会自动让DEFAULT APPLICATION 来处理,如果DEFAULT APPLICATION也处理不了,则报错。如要访问 HTTP://LOCALHOST:7001/MYWEB/MY.JSP。当MYWEB中没有MY.JSP.如果DEFAULT APPLICATION中有MY.JSP,则由它把结果返回给浏览器.默认WEB APPLICATION就是APPLICATIONS下的DefaultWebApp_examplesServer,它只能是以目录结构形式布置,不能是一个WAR文件,如果把该目录删除,WebLogic6.0启动时也会自动生成该目录.访问它时,不用加上该WEB APPLICATION的名字,加在反而会访问不到.如在DefaultWebApp目录下有一个TEST.JSP: HTTP://LOCALHOST:7001/TEST.JSP能访问到该JSP,但HTTP://LOCALHOST:7001/DefaultWebApp_examplesServer/TEST.JSP访问不到。
注意:访问其他的WEB APPLICATION中的文件.要加上该WEB APPLICATION的名字才行。

九、配置CLUSTER应注意的问题:


要设置网关配置CLUSTER时,每台服务器都要配置默认网关,如果没有配置,MANAGER SERVER会无法连接到ADMINISTRATOR SERVER上.在WIN2000中,可在控制面板中直接加,在UNIX下,用router add IP address设置,IP ADDRESS 可用该服务器的IP地址,并把最后一节改为1,如192.168.1.111可用192.168.1.1做默认网关。UNIX下可用netstat -rn 查看系统的默认网关。
WebLogic6.0以CLUSTER方式运行,所采用包含CLUSTER许可的LICENSE才行.
MulticastAddress不合法有效的MulticastAddress是从224.0.0.0 到 239.255.255.255. 可用WebLogic6.0带的utils.MulticastTest 测试所用的MulticastAddress是不是正常.如: java utils.MulticastTest -N test -A 237.0.0.1 -N 指定一个名字标识该进程,可随便起. -A 要测的IP地址
在一个CLUSTER中的WebLogic6.0 SERVER的版本要一致,监听的端口也要一样.
最好不要在ADMINISTRATOR SEVER中布置任何的应用,把应用放大MANAGED SERVER上。

十、在WebLogic6.0在布置应用:


(1)WebLogic6.0中应用可分三种,分别对应不同的描述文件及扩展名或目录结构:
*.JAR: 是EJB的压缩包(有3个描述文件ejb-jar.xml,WebLogic6.0-ejb-jar.xml,WebLogic6.0-cmp-rdbms-jar.xml)
*.WAR: 是只包含JSP和SERVLET的WEB APPLICATION压缩包(有2个描述文件web.xml,webloigc.xml)
*.EAR: 是包含EJB和WEB APPLICATION 的J2EE Enterprise Application压缩包(有1 个描述文件,application.xml) 注意:它们不能混用,如WEB APPLICATOIN不能打包成.EAR文件。

(2)WebLogic6.0的应用用两种发布方式:
以目录形式存放在WebLogic6.0的APPLICATIONS目录下,适用于开发阶段
以一个压缩包形式存放在WebLogic6.0的APPLICATIONS目录下,适用于运行阶段,可用JAR 打包,如D:\test>jar cf testwar.war * 把TEST目录下的所有文件打包成一个testwar.war文件.

(3)WebLogic6.0应用的布置方式有2种
静态布置:即把应用在CONFIG.XML中登记,可通过WebLogic6.O的控制台进行添加,WebLogic6.0会自动把该应用对应的压缩包拷到APPLICAITONS目录下,如果对该应用修改,需要重新布置才行。
动态布置:没有在CONFIG.XML中登记,可直接把压缩包或目录拷到APPLICATIONS目录下,WebLogic6.0会自动检测到.WebLogic6.0每次启动时会自动对APPLICATIONS目录下没有进行静态布置的应用,进行动态布置。

(4)一个例子:
如果一个应用中有EJB,JSP,SERVLET,其布置步骤如下:
生成EJB的JAR文件,最好一个JAR文件对应一个EJB
生成WEB APPLICATION的WAR文件,在WEB.XML,WebLogic.XML中登记,配置SERVLET,JSP等。
创建一个APPLICATION.XML文件,设置该应用的属性.把APPLICATION.XML,*.JAR, *.WAR,打包成一个*.EAR
WebLogic6.O的控制台中登记该应用或把该EAR文件拷到APPLICAITON目录下。到处就完成。

十一、WebLogic6.0 6.0中的CLASSPATH问题:

WebLogic6.0 6.0中的CLASSPATH比5.1要简单的多,下面对其做一个小结:

WebLogic6.0 6.0启动所需的CLASSPATH只要如下设置就可以了 SET %WL_HOME%\lib\WebLogic6.0_sp.jar; %WL_HOME%\lib\WebLogic6.0.jar 如果要用到它带的CLOUDSCAPE数据库,则加上: %WL_HOME%\samples\eval\cloudscape\lib\cloudscape.jar
EJB中引用的CLASS要在系统的CLASSPATH中,才能访问到.
如果是一个WEB APPLICATOIN中的某个SERVLET,JSP引用了其他的CLASS,把他们放到该WEB APPLICATOIN的\WEB-INF\classes目录下 WebLogic6.0可以访问到。当然,如果在系统的CLASSPATH中设置这些类的路径,WebLogic6.0也可以访问到.在调用时,WebLogic6.0会把WEB-INF/CLASSES/下的类都COPY到../applications/.wl_temp_do_not_delete/...../WEB-INF下,不管是打包的EAR,WAR文件还是没打包的目录方式。
如果一个WEB APPLICATION中的JSP中调用到EJB,即JSP是EJB的CLIENT,只要在该JSP中IMPORT一下就可以,如某个JSP调用到EJB: bbs.jar(他在包com.test.bbs中),其IMPORT 格式如下:
<%@ page import="
javax.naming.*,
javax.ejb.*,
java.rmi.RemoteException,
java.rmi.Remote,
java.util.*,
java.sql.*,
com.test.bbs.*
"% >
当然,该bbs.jar必须已正确布置. 当该WEB APPLICATION是以WAR文件布置时,com.test.bbs.jar不用在系统的CLASSPATH或该WEB APPLICATION的WEB-INF/CLASSES中,该JSP能调用到。但如果一个WEB APPLICATION是以一个目录的方式放在APPLICATIONS下时,该EJB中的类要在系统的CLASSPATH中才能访问到.放到该WEB APPLICATION的WEB-INF/CLASSES/下,该JSP是访问访问不到这个EJB的。可以把bbs.jar加到系统的CLASSPATH中,如WebLogic6.0启动时的CLASSPATH可如下设置: set CLASSPATH=.;.\lib\WebLogic6.0_sp.jar;.\lib\WebLogic6.0.jar;D:\WebLogic6.0\ wlserver6.0\config\examples\applications\ bbs.jar 也可以把bbsHome.class.bbsBean.class,bbs.class拷贝到系统的CLASSPATH指定的某一路径下,如WebLogic6.0启动的CLASSPATH如下: CLASSPATH=.;.\lib\WebLogic6.0_sp.jar;.\lib\WebLogic6.0.jar;D:\WebLogic6.0\wlserver6.0\config\examples\serverclasses 可以以上3个文件拷到D:\WebLogic6.0\wlserver6.0\config\examples\serverclasses,该JSP也能访问到。如果把bbs.jar放到系统得CLASSPATH下,改EJB是无法动态更新的。动态更新时会抛异常。
如果一个 APPLICATION中的JSP中调用到EJB,CLASSPATH,设置同上.如果该 APPLICATION中的EJB中引用的其他的CLASS,则这些CLASS要在系统的 CLASSPATH中,才能访问到.
from javaresearch.org Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd, scwcd yippit
↑返回目录
前一篇: Weblogic EJB 学习笔记一
后一篇: 为RMI实现类Jini的发现机制