WEBLOGIC6.0的一些使用经验

来源:互联网 发布:midi音乐软件 编辑:程序博客网 时间:2024/05/16 06:22
WEBLOGIC是一个性能卓越的J2EE服务器,在我国的使用者在快速增长。但现在有关它的中文资料基本没有,更没有介绍使用经验方面的。本文是本人在学习使用WEBLOGIC6.0中得到的一些经验,写出来与大家分享。

前 言
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的控制台
注意:
1、UNIX系统的TMP目录(环境变量TMPDIR或TMP_DIR所指的路径)应有足够的空间,因为WEBLOGIC6.0安装时先解压文件到系统的TMP目录下,然后再进行安装。如果TMP目录空间不够安装会出错,这时你可以把TMPDIR设到要足够空间的目录下。
2、如果用普通用户安装出错,可试着用ROOT用户安装。一般是环境变量及权限的问题。
3、安装软件可到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

对访问权限的设置有两种方式:
1、 在WEBLOGIC6.O的控制台中设置,把结果保存到fileRealm.properties中,即采用WEBLOGIC6.0的file realm.感觉对DATABASE POOL,EJB等比较好用,对JSP,SERVER及某个目录设置访问控制表比较难。我试了很多次都没成功。它可对WEB用户(通过浏览器访问)和普通用户(通过JAVA客户端等访问)起作用。
2、在WEB.XML,WEBLOGIC.XML中设置,只能对WEB用户起作用。下面举个例子说明这种方式。
如:在一个名为OrderWebApp的WEB APPLICATION中,客户的定单文件都放到/orders目录下,只有manager能浏览该目录下的文件。其WEB.XML及WEBLOGIC.XML可设置如下:

*************************WEB.XML*************************
<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 1.2//EN""http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<security-constraint>

<web-resource-collection>
<web-resource-name>SecureOrdersEast</web-resource-name>
<description>Security constraint for resources in the orders directory</description>
<url-pattern>/orders/*</url-pattern>
<http-method>POST</http-method>
<http-method>GET</http-method>
</web-resource-collection>

<auth-constraint>
<description>constraint for orders</description>
<role-name>manager</role-name>
</auth-constraint>

<user-data-constraint>
<description>SSL not required</description>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>

</security-constraint>

<security-role>
<description>managers</description>
<role-name>manager</role-name>
</security-role>

</web-app>

说明:<security-constraint>中定义资源的访问控制表。在<web-resource-collection>中定义资源及其存取方式;在<auth-constraint>中定义可访问该资源的角色;在<user-data-constraint>中定义WEBLOGIC SERVER与CLIENT之间的开始通讯时,是否采用SSL建立连接。在<security-role>中定义角色名。

*************************WEBLOGIC.XML*************************
<!DOCTYPE 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">
<WEBLOGIC6.0-web-app>
<security-role-assignment>
<security-role-assignment>
<role-name>manager</role-name>
<principal-name>peter</principal-name>
<principal-name>bill</principal-name>
</security-role-assignment>
</WEBLOGIC6.0-web-app>

说明:在<security-role-assignment>定义与WEB.XML中定义的角色所对应的用户。这些用户必须已在WEBLOGIC6.0的控制台中定义才行。

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

四、JSP的设置及调试
  在WEBLOGIC6.0中,JSP要放到一个WEB APPLICATION 中才能对它进行访问,对JSP的配置在WEBLOGIC.XML中,如下所示:
<!DOCTYPE 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">
<WEBLOGIC6.0-web-app>
<jsp-descriptor>
<jsp-param>
<param-name>
pageCheckSeconds
</param-name>
<param-value>
1
</param-value>
</jsp-param>
<jsp-param>
<param-name>
verbose
</param-name>
<param-value>
true
</param-value>
</jsp-param>
</jsp-descriptor>
</WEBLOGIC6.0-web-app>

比较重要的有pageCheckSeconds,设置WEBLOGIC6.0每隔多长时间检测一次JSP文件的内容是否改变,并需要重新编译,等于0,每次调用都重新编译(一般用于调试环境中),等于-1从不重新编译(一般用于运行环境中)。当第一次访问某个WEB APPLICATION下的一个JSP文件时,WEBLOGIC6.0把它编译成一个CLASS文件并放到相应的目录下:
1、 如果是以目录结构形式发布的WEB APPLICATION,放到该WEB APPLICATION的
WEB-INF/_tmp_war_examplesServer_examplesServer_*目录下。
2、如果该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.O的控制台中的SECURITY中修改。

六、WEBLOGIC6.O控制台的使用
  WEBLOGIC6.O的控制台要在IE5.0以上的版本中才能启动,如果IE设置了代理服务器,WEBLOGIC6.O的控制台有可能无法启动,应把代理服务器的设置去掉在/工具/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应注意的问题
1、要设置网关
配置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 查看系统的默认网关。
2、WEBLOGIC6.0以CLUSTER方式运行,所采用包含CLUSTER许可的LICENSE才行。
3、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地址
4、在一个CLUSTER中的WEBLOGIC6.0 SERVER的版本要一致,监听的端口也要一样。
5、最好不要在ADMINISTRATOR SEVER中布置任何的应用,把应用放大MANAGED SERVER上。

十、在WEBLOGIC6.0在布置应用
1、WEBLOGIC6.0中应用可分三种,分别对应不同的描述文件及扩展名或目录结构:
(1)*.JAR: 是EJB的压缩包(有3个描述文件ejb-jar.xml,WEBLOGIC6.0-ejb-jar.xml,WEBLOGIC6.0-cmp-rdbms-jar.xml)
(2)*.WAR: 是只包含JSP和SERVLET的WEB APPLICATION压缩包(有2个描述文件web.xml,webloigc.xml)
(3)*.EAR: 是包含EJB和WEB APPLICATION 的J2EE Enterprise Application压缩包(有1 个描述文件,application.xml)

注意:它们不能混用,如WEB APPLICATOIN不能打包成.EAR文件。

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

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

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

十一、WEBLOGIC6.0 6.0中的CLASSPATH问题
WEBLOGIC6.0 6.0中的CLASSPATH比5.1要简单的多,下面对其做一个小结:
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
2、EJB中引用的CLASS要在系统的CLASSPATH中,才能访问到。
3、如果是一个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文件还是没打包的目录方式。
4、如果一个WEB APPLICATION中的JSP中调用到EJB,即JSP是EJB的CLIENT,只要在该JSP中IMPORT一下就可以,如某个JSP调用到EJB: com.test.bbs.jar,其IMPORT格式如下:
<%@ page import="
javax.naming.*,
javax.ejb.*,
java.rmi.RemoteException,
java.rmi.Remote,
java.util.*,
java.sql.*,
com.test.bbs.*
"%>
当然,该com.test.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的。可以把com.test.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/xcjing_ejb_bbsok.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也能访问到。
5、如果一个 APPLICATION中的JSP中调用到EJB,CLASSPATH,设置同上。如果该APPLICATION中的EJB中引用的其他的CLASS,则这些CLASS要在系统的CLASSPATH中,才能访问到。

 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 离职了又想回去怎么办 想辞职领导不批怎么办 急辞职领导不批怎么办 她生气不理我了怎么办 分手了之前的钱怎么办 结婚后老公变了怎么办 我不小心出轨了怎么办 微博账号被锁定怎么办 微博被盗号了怎么办 如果微博被盗了怎么办 老公炒股亏光了怎么办 新id密码不匹配怎么办 手机不识别sd卡怎么办 小米手环容易掉怎么办 小米4gps信号弱怎么办 小米4内存不够用怎么办 地暖放气阀漏水怎么办 暖气排气阀堵了怎么办 跳绳一只脚腕疼怎么办 牙齿不能吃冷的怎么办 牙齿不敢吃凉的怎么办 蛀牙吃凉的就疼怎么办 吃冷的牙齿就痛怎么办 七日杀定居之旅怎么办 眼睛肿好几天了怎么办 下眼睑疼痒肿痛怎么办 整个上眼皮肿了怎么办 上眼皮突然肿了怎么办 眼皮很肿又厚怎么办 上眼皮上长疙瘩怎么办 小孩眼睛长了麦粒肿怎么办 眼睛里长了麦粒肿怎么办 肛周脓肿流脓了怎么办 眼睑肿了一个包怎么办 上眼皮长针眼了怎么办 三岁宝宝内热重怎么办 5个月小孩内火重怎么办 孕妇o型rh阳性怎么办 异次元通讯对方下线了怎么办 人感染朊病毒了怎么办 美图m2忘记密码怎么办