基于 Weblogic 7.0 的应用开发(二)
二.Web的应用
本文将着重讲述在WebLogic7中创建和部署一个Web Application 的的过程。
使用什么样的工具?这是一个许多人关心的问题,特别是对于初学者,更是希望依靠强大的IDE,加快自己的学习进程。然而,结果却往往相反。因为,IDE将许多基本的东西封装在底层自动完成,对于用户而言是透明的。如果你是一个对J2EE结构非常了解的程序员,IDE可以大幅提高你的效率;如果你是初学者,IDE对你隐瞒了许多细节问题。
因此,我在这里使用标准的JDK/写字板的文本格式进行讲述。并且,这里不会对Servlet/JSP的语法细节,进行过多描述。
1.环境设置
安装JDK For Windows,安装包可从Sun的网站上免费下载(http://java.sun.com/),也可直接使用WebLogic 中的JDK,对系统环境变量设置如下:
Path= [weblogic_home]\ jdk131_03 \bin
Classpath=[weblogic_home]\ jdk131_03 \lib;[weblogic_home]\lib\weblogic.jar
要是系统变量生效,需要重新启动计算机;
2.Web Application的目录结构
DefaultWebApp
------+/WEB-INF/(required)
| |
| |----+/classes/(option)
| ||----------*.class
| |
| |----+/lib/(option)
| ||----------*.jar
| |
| +---web.xml(required)
| +---weblogic.xml(option)
|
|-----*.html
|-----*.jsp
|-----其他资源,如图片等。
注:一个 Web Application 至少要包含一个页面,包括jsp 或 html 或 servlet
对于注有required的项是一个Web Application 不可缺少的,必须存在的,如WEB-INF目录,web.xml。
3.打包
将所有程序中使用到的JavaBeans和Servelets编译成.class文件,连同编译生成的目录一起拷贝到WEB-INF\classes\下。
在Dos下,进入Application 根目录,使用jar打包命令,即将当前目下所有文件以及目录打包成webapp_name.war文件。
如:jar cvf webapp_name.war *(其它jar命令的参数,这里不做过多介绍)
注:不要在目录外边执行,这样将导致将外面的目录也打包进去,发布会失败。
4.部署
部署war主要有三种方法,
1)使用Console
使用方法:在浏览器中打开http://[host]:[port]/console,在左边的树中找到Web Applications节点,
点击 Configure a new Web Application,通过界面将打包好的webapp_name.war UPLOAD到Weblogic能找到的地方。
点击[select],然后选择一个Available Server 添加到Target Servers中,输入系统的名称(用于访问),Configure And Deploy。
等待,直到Status中变成Completed。就OK!
2)直接拷贝
使用方法:将启动脚本中的STARTMODE 置为 false,使其处于Development Mode。然后,直接将.war文件拷贝到[当前Domain]/applications/下,系统会自动部署到当前的server上。此时如果系统没有报错,即为部署成功!
3)使用weblogic.deploy类
具体方法可以使用 java weblogic.deploy -help 参考系统提示。
推荐使用,Console或直接拷贝,非常容易上手,3)方法,由于参数复杂,我个人认为适用于非Win32系统。
5.调用
直接在浏览器中输入http://[host]:[port]/webappname即可。
6.补充说明:
上述过程身略了描述文件的编制过程,对于初学者来说,完全了解web.xml和weblogic.xml是有一定困难的。这里将使用Weblogic 7.0的一个新特性,Weblogic Builder。
这里提供了一个简单的步骤:
首先,编写一个最为简单的web.xml文件。
<!--web.xml-->
<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
</web-app>
注意:这是最为省略的了,不能再对它进行修改,而且这也是不可缺少的文件,否则Weblogic Builder将无法打开你想要修改的压缩包。
然后,按照上述步骤生成一个.war文件。
最后,使用Weblogic Builder打开这个.war文件。通过图形界面修改部署描述信息,系统将自动生成相应的weblogic.xml,同时修改web.xml。
这里可以完成一个Web Application的所有部署的描述信息,前提是你对这些选项有一定的认识。
保存,选择菜单Tools/Options,设置需要连接的Host/Server/username/password;选择菜单Tools/Connect to Server,Tools/Deploy,系统部署轻松完成。
另外,对于jsp的语法校验问题一直一个困扰着我们,有一个办法,在不发布的情况下校验jsp语法。那就是java weblogic.jspc jsp_name.jsp 。
具体参数使用java weblogic.jspc 察看。
7.附录:
前面也许很多人会问,为什么我把我的class拷贝到了classes的目录里面并且启动了WebLogic的服务,怎么我的Servlet还是找不到?这里我们简单得讲一下如何在WebLogic中添加一个Servlet;
在WebLogic启动之后,首先测试在DefaultWebApp目录是否已经准备好:
http://localhost:7001/index.html
在%weblogic%/\config\examples目录下面运行setExamplesEnv.cmd,编译HelloWorld.java得到一个HelloWorld.class文件。
javac -d %OUT_DIR % HelloWorld.java
将HelloWorld.class拷贝到DefaultWebApp的目录下面,在本机中的目录为E:\bea\wlserver6.1\config\mydomain\applications\DefaultWebApp。然后打开WebLogic的控制台:
http://127.0.0.1:7001/console
方法一:
点击Deployments---Web Applications ---- DefaultWebApp,然后点击Edit Web Application Descriptor...,点击Servlets 并且Configure a new Servlet…,输入
Servlet Name: HelloWorld
Servlet Class:HelloWorld
点击create来产生这个新的servlet,然后点击Apply来应用该servlet。
点击Servlet Mappings ---- Configure a new ServletMapping…,输入
Servlet: HelloWorld
URL Pattern: /HelloWorld/*
点击create来产生这个新的servlet,然后点击Apply来应用该servlet。重新启动WebLogic服务器。(为什么我安照这样的操作,可是WebLogic重新启动后,Servlet又没有了?)
方法二:
修改该下面的WEB-INF目录中的web.xml文件,输入
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld/*</url-pattern>
</servlet-mapping>
重新启动WebLogic服务器。Servlet安装成功!
备注:
如果你配置了“动态Applications”,你不用重新启动WebLogic,只要将class文件拷贝到相应的目录中就能直接得到修改后的结果。关于配置的参考网址:
http://e-docs.bea.com/wls/docs70/adminguide/appman.html
当“auto-deployment”被选中的情况下,WebLogic的“Deploying Applications”会在每三秒的情况下察看/application目录下面的变化。
8.问题:
如果不这样做,可以使用以目录的形式发布。其实,对于服务器来说,一个目录和.war文件,都是一回事。但是从一个另外一个角度来说,其用途不同。
对于开发阶段,以目录形式发布,便于调试和更新程序,但是不以管理,安全性差。
对于一个成型的产品,最好是打包,因为产品是要交给用户管理的,对于相对素质较差的用户,开放的目录太危险,也不易管理。
同时需要指出,启动方式也是一个问题。对于交给用户的产品而言,运行在development模式下,支持热发布,是不明智的。
……