写一些不同领域的博文,希望我的博文或者经验对不同层次的你有所帮助!下面写一篇关于java web 应用服务器主题的博文!相信大家在刚接触java web 这个方向的时候,做的第一个关于java web的项目的时候使用的第一个web 应用服务器就是(汤姆猫)Tomcat,这个猫一直伴随着从事java web开发的你。相信对于它的配置我再熟悉不过了。那么大家是否已经对汤姆猫应用“疲倦”了呢???下面跟大家介绍一款商业版web 应用服务器【weblogic】,.也欢迎大家进入群【376447127】与我交流互联网技术。
关于weblogic的安装步骤我在这里就不过多废话了,直接进入正题:
安装weblogic11g r1完成之后,如下图:
安装目录说明(如图)(一些常配置目录简介):
下面我们开始走进weblogic,启用weblogic服务,和Tomcat类似,执行自己的启用脚本!这些脚本设置web服务器的一些启用参数以及需要的环境变量参数,这些启动脚本的配置对后期问题处理也至关重要。
下面介绍weblogic的几种常见的部署项目的方式:
方式一:自动部署(看weblogic的目录结构的英文意思就可大致明白每个目录下文件的的作用)
在weblogic的每个域中,即weblogic主目录\Middleware\user_projects\domains\xx域\autodeploy\ 路径下的autodeploy目录其实就相当于Tomcat的的webapps目录,只要我们把自己做好的项目放在该目录即可。这样就可以将我们的 项目自动部署到weblogic中了,不需要到weblogic console中进行手动配置。和Tomcat的webapps类似。
注意事项
1)自动部署适合开发阶段使用,不建议在生产环境中应用
2)将应用copy到autodeploy中,在weblogic的domain的控制台中,进入“域结构”->“部署”,如果未发现自动部署记录,此时,你可以查看weblogic的logs文件夹下面的日志(一般情况下可能是应用问题导致部署失败)
方式二:域控制台部署(weblogic提供图形界面的部署方式,在控制台同时可以进行一些复杂服务器配置型,当然我们猫也有这样图形界面部署,但相对简单)
这个方式部署就跟安装软件一样,傻瓜式的下一步就行。根据自己需要选择配置选项即可!
方式三:命令部署(该种配置方式的具体配置可参见weblogic提供帮助文档来进行或者官网)在这里就不详细说了!
值得注意的是我们做的项目如果要想成功部署到weblogic上,我们还需要给我们项目添加weblogic约定的部署描述符weblogic.xml文件,和我们web.xml类似。这些部署描述符告诉我们web服务器在启动时的一些行为约定。下面weblogic.xml的常见配置:(如下图)
<?xml version="1.0" encoding="UTF-8" ?> <weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd"> <jsp-descriptor> <!-- 在JSP 编译过程中保存作为中间步骤生成的 Java 文件。除非此参数设置为 true,否则编译完成后 将删除所有中间 Java 文件是否让编译jsp文件产 生的.java文件持续存在,如果设置为true,就可 以在部署的环境查看jsp产生的.java文件,方便调 试错误。 --> <keepgenerated>true</keepgenerated> <!-- -1表示永不检查页面,该值为生产环境中的默认值,0表示总是检查页面,1表示每秒检查一次页面,该值为开发环境中的默认值。 --> <page-check-seconds>60</page-check-seconds> <!-- 如果设置为 true,当部署或重新部署 Web应用程序时,或启动 WebLogic时,WebLogic Server会自动预编译所有已修改的JSP。 --> <precompile>true</precompile> <precompile-continue>true</precompile-continue> </jsp-descriptor> <container-descriptor> <!-- 该参数的默认值也是1,每隔1秒检查servlet是否被修改并需要重新编译。 这里建议修改为-1,表示永不检查,具体设置如下: --> <servlet-reload-check-secs>1</servlet-reload-check-secs> <!-- 该参数针对 Web应用程序范围内资源路径中发现的缓存资源执行元数据缓存。 该参数标识 WebLogic Server检查资源是否发生修改的频率,如果已修改,则重新加载。 值 -1 表示元数据进行缓存,但从不对磁盘进行检查以便找出所做的更改。建议在生产环境中使用该值,以提升性能。 值 0 表示不执行元数据缓存。持续更改文件的客户必须将该参数设置为大于或等于 0的一个值。 值 1 表示每秒重新加载一次。该值为开发环境中的默认值。 --> <resource-reload-check-secs>1</resource-reload-check-secs> <!-- 公司的项目还遇到这样一个问题,Tomcat下用的好好的, 但是放到weblogic下就出了问题,最可能造成这样的原因 是应用程序的jar包和weblogic下的jar包冲突。 说明:此种方法理论上可以解决问题,但其改变了weblogic默认的加载jar的顺序。 大部分时候可能带来更多的版本不兼容问题。所以如果此方法中看不中用的话再用下面的方法解决。 --> <prefer-web-inf-classes>true</prefer-web-inf-classes> <optimistic-serialization>true</optimistic-serialization> <show-archived-real-path-enabled> true </show-archived-real-path-enabled> </container-descriptor> <!-- 指定应用上下文,设置在根路径即可访问该服务 如:http://localhost:7001/jplogic--> <context-root>/jplogic</context-root> <!-- 说明: 1)你c盘上面的路径结构应该为 c:\jplogic\jplogic [将需要的资源放入jplogic下面] 2)资源访问路径为 http://localhost:7001/jplogic/..相当于 c:\jplogic\jplogic\... 3)这样配置虚拟目录的方式可以将一些图片、视屏、文件等资源存放在这些目录下,这样在门户网站上就可以访问这些资源 <virtual-directory-mapping> <local-path>c:/jplogic</local-path> <url-pattern>/jplogic/*</url-pattern> </virtual-directory-mapping> --> </weblogic-web-app>
下面详细说一下<prefer-web-inf-classes>true</prefer-web-inf-classes>参数,理论上我们将该参数设置为true之后,welogic加载jar的顺序先加载项目本身的jar,但同时也可以出现其他兼容性问题!这是很多人在将项目部署到Tomcat上是可以正常运行,一旦部署到weblogic的时候就会出现诸多问题。有可能会与weblogic本身自带的jar冲突。
如果遇到类似的问题可从几个方面解决这些问题使用参数<prefer-web-inf-classes>true</prefer-web-inf-classes>配置,如果问题还存在可在weblogic目录中找出冲突jar,然后在weblogic的启动脚本文件中设定jar的加载路径,也就是classpath环境变量!
说了这么多以上三中部署方式仅供大家参考,其实就是配置weblogic的核心配置文件config.xml(启动weblogic之后会根据用户的配置行为以及autodepoy目录是否存在项目来自动检测更新配置文件config.xml)如下所示:
<app-deployment> <name>WebRoot</name> <target>AdminServer</target> <module-type>war</module-type> <source-path>D:\DeveloperTool\javaProjects\workspace\jplogicPlatform\WebRoot</source-path> <security-dd-model>DDOnly</security-dd-model> </app-deployment> <app-deployment> <name>_appsdir_webofficeDemo_dir</name> <target>AdminServer</target> <module-type>war</module-type> <source-path>autodeploy\webofficeDemo</source-path> <security-dd-model>DDOnly</security-dd-model> <staging-mode>nostage</staging-mode> </app-deployment> <app-deployment> <name>_appsdir_textflow_dir</name> <target>AdminServer</target> <module-type>war</module-type> <source-path>autodeploy\textflow</source-path> <security-dd-model>DDOnly</security-dd-model> <staging-mode>nostage</staging-mode> </app-deployment> <app-deployment> <name>_appsdir_suggest_dir</name> <target>AdminServer</target> <module-type>war</module-type> <source-path>autodeploy\suggest</source-path> <security-dd-model>DDOnly</security-dd-model> <staging-mode>nostage</staging-mode> </app-deployment> <admin-server-name>AdminServer</admin-server-nam<strong>e></strong>
下面jplogic部署到weblogic的效果图:
服务器监控视图: