基于 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模式下,支持热发布,是不明智的。
|