<%@ page contentType="text/html; charset=gb2312"%> WEBLOGIC使用经验谈
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
WEBLOGIC使用经验谈
     发布者: 发布时间:2006-06-16
前  言  
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_HOMEin下,以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.0wlserver6.0inoci816_7;c:ORANT816in;%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_deleteWEB-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: est  >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%libWEBLOGIC6.0_sp.jar;  %WL_HOME%libWEBLOGIC6.0.jar  
如果要用到它带的CLOUDSCAPE数据库,则加上:  
%WL_HOME%samplesevalcloudscapelibcloudscape.jar  
2、EJB中引用的CLASS要在系统的CLASSPATH中,才能访问到。  
3、如果是一个WEB  APPLICATOIN中的某个SERVLET,JSP引用了其他的CLASS,把他们放到该WEB  APPLICATOIN的WEB-INFclasses目录下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=.;.libWEBLOGIC6.0_sp.jar;.libWEBLOGIC6.0.jar;D:WEBLOGIC6.0wlserver6.0configexamplesapplicationsxcjing_ejb_bbsok.jar  
也可以把bbsHome.class.bbsBean.class,bbs.class拷贝到系统的CLASSPATH指定的某一路径下,如WEBLOGIC6.0启动的CLASSPATH如下:  
CLASSPATH=.;.libWEBLOGIC6.0_sp.jar;.libWEBLOGIC6.0.jar;D:WEBLOGIC6.0wlserver6.0configexamplesserverclasses  
可以以上3个文件拷到D:WEBLOGIC6.0wlserver6.0configexamplesserverclasses,该JSP也能访问到。  
5、如果一个  APPLICATION中的JSP中调用到EJB,CLASSPATH,设置同上。如果该APPLICATION中的EJB中引用的其他的CLASS,则这些CLASS要在系统的CLASSPATH中,才能访问到。
(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
WebLogic的安装和配置
Tomcat全攻略
Windows+Apache+resin配置
理解Java应用服务器的七种武器
在Web Service中实现Transaction
根据客户端输入的文字生成图片,再传回给客户端的webservice
 
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号