如何在resin中部署和布署的区别.WAR文件

resin部署war包_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
resin部署war包
&&resin部署war包
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢博客访问: 228098
博文数量: 48
博客积分: 3010
博客等级: 中校
技术积分: 400
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
三、Resin使用简介
使用Resin开发Java Web项目时,需要建立自己的WebApp。这里不介绍Resin Cmp/Ejb的开发和使用,只介绍用Resin开发普通的jspjava servlet项目。在这里还要谈到resin.conf的配置。
Resin中的应用可以有2种方式发布:
一是在Resin的目录下发布;二是打包成War发布。
1、在Resin的目录下发布 在resin.conf中查找&web-app&标签,该标签表示一个web应用。标签中,id属性表该应用的Web路径。如&web-app id=&/test&&,表示该应用在Web上访问的时候应该用 http://hostname/test/来访问。app-dir属性表示该应用的实际路径。如&app-dir&d:\resindoc\test&/app-dir&表示该应用在d:\resindoc est目录下面。默认值为根下面的和id同名的目录。Resin可以配置3种error-page:404错误也就是文件找不到错误页;Exception违例页;不能连接java引擎页。他们分别可以这样子设置。404文件找不到页
&web-app id=&/app1&&
&error-page error-code=&404& location=&/file_not_found.jsp&/&
&/web-app&
Exception 违例页
&web-app id=&/foo&&
&error-page exception-type=&java.lang.NullPointerException&location=&/nullpointer.jsp&/&
&/web-app&
不能连接到srun Servlet引擎错误页
该页设置和应用无关,属于服务器的设置。
&http-server&
&error-page exception-type=&connection&
location=&/missing_file.html&/&
&/http-server&
classpath的设置
参见下面的语句:
&classpath id=&WEB-INF/classes& source=&WEB-INF/src& compile=&true&/&id参数的值表示classpath中编译后的class的存放路径;source参数的值表示classpath中java源代码的存放路径;compile中的值可能是true或者false,表示是否由Resin的srun自动编译java源代码。Classpath的设置一般和javaBean或者Servlet的使用有关。id的值表示javaBean的编译好的包存放的根,source的值表示javaBean的java源代码存放的根。
Servlet相同。
Servlet的设置
参见下面的语句:
&servlet-mapping url-pattern=&*.xtp& servlet-name=&xtp&/&
&servlet-mapping url-pattern=&*.jsp& servlet-name=&jsp&/&
&servlet-mapping url-pattern=&/servlet/*& servlet-name=&invoker&/&
一般就是指定那些需要通过srun的解析。比如在这里,把*.jsp改成*.jss,其他不变,那么只要在访问时遇到*.jss的文件就和原来遇到*.jsp一样处理。通过这个可以指定解析的引擎,如以下的配置:
&servlet-mapping url-pattern=&*.xtp& servlet-name=&com.caucho.jsp.XtpServlet&/&
在Servlet中,也可以指定servlet。如
&servlet servlet-name=&hello& servlet-class=&test.HelloWorld&/&
&servlet-mapping url-pattern=&/hello.html& servlet-name=&hello&/&
在servlet-mapping中有个重要的参数case-sensitive 如果在windows上,最好配置成false,忽略大小写,从而和windows的约定一致。
Session的配置参见如下的配置语句:
&session-config&
&session-max&4096&/session-max&
&session-timeout&30&/session-timeout&
&enable-cookies&true&/enable-cookies&
&enable-url-rewriting&true&/enable-url-rewriting&
&file-store&WEB-INF/sessions&/file-store&
&/session-config&
session-max :最大 session数量
session-timeout :session过期时间,以分钟为单位。是否允许cookie :指session是否采用cookies。如果采用cookies,浏览器必须支持session才能使用,发布时建议改成false。enable-url-rewriting和enable-cookies一般配合使用。如果enable-cookies是false,enable-url-rewriting应该设成true比较合适。file-store :该配置指示服务器是否把session作为文件存放在服务器上。如果把该项注释掉,则在你的web-app目录下的WEB-Inf/sessions目录不保存序列化后的session对象。Session还有jdbc-store配置,对应着把session通过jdbc永久保存在数据库中。其实也就是会话变量的序列化后的保存和重新载入的物理实现。在这里session还支持了多服务器的设置问题,通过tcp-store参数设置。由于涉及到负载平衡的问题,在这里不详细叙述,只简单写一个例子:
&http-server&
&http id=&a& port=&80&/&
&srun id=&a& host=&host-a& port=&6802&/&
&http id=&b& port=&80&/&
&srun id=&b& host=&host-b& port=&6802&/&
&host id=&&&
&web-app id=&&&
&session-config&
&tcp-store/& &always-load-session/&
&/session-config&
&/web-app&
&/http-server&
这个例子表示session是按照tcp ring的方式传递。
temp-dir 的设置
temp-dir指的是应用的临时目录。也就是在javax.servlet.context.tempdir中用到的目录。模认是应用目录下的WEB-INF tmp目录。以上的设置都可以在&web-app&标签对中设置,控制某个web应用的设置。
2、打包成War发布
以下是介绍对如何在resin下使用已经打包成War的java Web应用进行发布。其实这个是最简单也是最清晰的良好方法。在j2ee中,所有的项目都打包成ear发布。其中,Web应用打包成war,ejb应用打包成jar。在resin中,这些都可以直接部署。这里我只对打包成war的Web应用的部署做介绍。在resin.conf中,查找这个:&war-dir id=&webapps&/&。他表示war文件应该被拷贝的路径。这里指的是相对于resin的安装路径,如以上的设置表示d:\resinwebapps。只要重新启动Resin就可以了。Resin会把该war自动解包到webapps目录下。你可以在command控制台或者stdout.log中看到类似于[ 09:56:21.680] initializing application 的语句。这个表示该Web应用是自动安装的。只要这个应用是符合j2ee标准的Web应用,应该不会有问题。通过如上显示的路径就可以访问到这个应用。如果你到d:\resinwebapps wtest中浏览,你会看到Resin已经为你生成了rwtest目录,下面是META-INF和WEB-INF还有你自己的JSPservlet 文件和目录。是完全符合j2ee的结构的。你可以在rwtest目录下建立新的jspservlet,一样可以被编译和解析并运行的。在实际操作中,可以使用Jbuilder或者 WebSphere等Ide工具进行集成调试和打包,非常的方便。
四、使用Resin进行java Web项目的开发和调试
这里篇幅有限,不可能讲太多,我只对实际中最有用的部分做介绍。Resin中如果定义了错误页,则出错后最常见的一大串Exception不会被看到,直接跳转到错误页。所以建议开发中先不设置错误页。jsp错误中最常见的就是Nullpoint Exception,其次是名称的拼写错误。错误也可以在Resin安装目录下的log目录下的stderr.log中找到。通过对该log文件的分析可以看到很多有用的错误信息。在调试jsp的时候,如果定义了compile为true,jsp先被翻译成Servlet的java文件,再被编译成class文件。可以在你自己的work目录中找到该文件。java的名称在Resin中是这样子定义的:原先的jsp文件名前加下划线,再加上_jsp这个字样。所以在java 应用中的命名不要以_jsp结尾,也不要出现中文名称等字符;其实名称以_jsp为开头也是不合法的。
关于java对多国语言的支持问题,在Resin中得到了很好的解决。以jsp为例,参考Resin自动生成的javaServlet文件。只要在任何的jsp文件的最开始处增加:
&% @page contentType="text/charset=gb2312" %&
中文问题就解决了。察看生成的Servlet源文件片断:response.setContentType("text/charset=gb2312");
request.setCharacterEncoding("GB2312");
以上为设置字符集
private static byte[] _jsp_string26;
private static byte[] _jsp_string27;
_jsp_string26 = " &/table& &table class="type"& &tr& &td&".getBytes("GB2312");
_jsp_string27 = " &/td&&td& &/tr& &!-- &tr& &td& ".getBytes("GB2312");
以上是对页面的显示的编码。其中,getBytes("gb2312")是静态编码,这是Resin为了解决某些环境下还是不能正常显示而设置的。在Resin的配置文件(/conf/resin.conf)中,可以通过设置
&jsp precompile=&true&static-encoding=&false& recompile-on-error=&true&/&中的static-encoding属性为true或者false,来控制是否静态编码。其实在Resin容器的内部,所有的字符都是按照iso-8859-1来处理的。iso-8859-1是一个大字符集,虽然中文的gb在字的定义上有不同,但是编码是包容了gb2312的。按照解决多国语言的方法,在纯英文平台上用iso-8859-1处理内部编码,而把字符的显示推向客户端的机器。所以这样只要编码是正确的,在页面上显示中文就不存在问题。Tomcat3.2不方便的地方是Tomcat对数据库的操作中文支持不好,需要手动在java Bean或者Servlet中硬编码。通过测试,在Resin中完全没有这个问题。Tomcat4.0解决了这个问题。不过个人习惯来讲还是觉得resin在配置方面方便一些。
在Resin中可以自动解决引入的jar。这个在使用特殊的类或者第三方提供的开发包非常有用。方法非常简单:只要把该jar或者是zip拷贝到Resin安装目录下的lib目录下面,重新启动Resin,就可以了。如db2用到的db2java.zip文件,只要轻松拷贝到d:\resinlib中就可以了。Resin提供了对Jbuilder的集成调试。可以到:/projects/jbuilder/resin-jbuilder.jar免费下载到resin的jbuilder的ide扩展包。然后,把该包该名成:resin-jbuilder.jar,拷贝到jbuilder6libext目录下。然后,把Resin2.1解包安装在jbuilder6resin-2.1目录下,就可以了。打开任何的War项目,在project上点右键,选择properties,选择Servers标签。在原来的选择框上,就可以看到多了一项Resin2.1。这样子就可以象原来用tomcat一样调试jspservlet了,而且比Tomcat更方便。调试方法和用Tomcat调试一样。
阅读(3830) | 评论(0) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。从Resin官网()下载Resin解压后,启动Resin,运行resin根目录下的resin.exe文件,运行期间将出现下图所示的命令提示符窗口。&&
表示Resin已成功启动,启动后在浏览器输入http://localhost:8080/进入Resin默认页面。&
部署&我们选择/resin-admin链接(管理员控制台),进入管理员控制台后要求输入用户名和密码,由于是第一次使用,我们需要创建一个新的管理员用户。输入用户名和密码后单击注册按钮
输入正确后,会提示如下图所示的信息:&
成功创建了一个用户,将生成的用户名和密码拷贝到/conf/resin.properties文件中,就可以登陆了。
但是目前也仅限于本机登陆,如若想要外部的主机能够访问,还需要在/conf/resin.properties文件中增加
admin_external : true
admin_secure : true
 或者在/conf/resin.xml文件中增加
&resin:set var="resin_admin_external" value="true"/&
重启resin.exe,进入http://localhost:8080/&
将打包好的war包发布到/webapps目录下,启动服务器,即可访问你的应用。
到这里我们就差最后一部即可完成项目的部署了,找到resin目录下的conf/resin.xml文件,在resin.xml文件中找到
&host id=""root-directory="."&,在&host id=""root-directory="."&标签对中加入
如:&web-app id="/ismp"root-directory="${resin.root}/deploy/ismp"/&
id是指项目标识,tomcat也有项目标识,不过是根据项目名自动生成的,root-directory是指项目所在路径,这个路径一般是写绝对路径,部署的时候才会用相对路径。
调试有两种方式进行调试
阅读(...) 评论()6927人阅读
Server development(2)
OverView& 概述
&&&&& Resin .war应用程序部署可以作为一个简单的.war 文件发布到& webapps/目录下在本机上,也能以作为云部署
存档,分段运输,反转,云部署,Resin云部署将分配一个新的web应用程序给所有在云的服务,使用了一个相互作用的
仓库以确保它的一致性,激活控制:部署和激活能够独立的管理,允许应用程序被部署和验证在所有的服务上
存档和反转:部署web应用可以被快速的存档和反转,当然如果部署需要被反转的话
分段运输:一个应用被部署到这个群作为一个视图显示。那么仅仅会作为一个预演的服务
graceful version upgrading:稳定的版本更新
&web应用程序版本部署,让那个当前用户继续带有老的版本并且可以转移到新的版本上
command-line:命名行
&&&&&&& web应用程序从命名行部署到云上
浏览:为了更加方便,应用也可以总一个浏览器使用resin-admin site进行部署
Basic Deployment Methods 基本的开发方式
&&&& 对于简单的部署,你可以复制一个包含你的应用程序的.war文件到webappls目录,Resin会去发现这个.war的存档文件
伸展它并开始服务请求
&&&& 这个webapps目录配置和使用根据resin.xml文件中的&web-app-deploy&标签
例如:在resin.xml的web-app-deploy
&&&& &resin xmlns=&&&
& &cluster id=&&&
&&&&&&&&&&&& &host id=&&&
&&&&&&&&&&&&&&&& &web-app-deploy path=&webapps& expand-preserve-fileset=&WEB-INF/work/**&&
&&&&&&&&&&&&& &/host&&
&&/cluster&&
&&&&& &resin/&
expand-preserve-fileset 属性让你把保存文件为了以后的从新发布,并且可以提高重新开始的时间,一般来说
对于更新来说resin会删除所有的文件,包括被编译的jsp文件,迫使Resin重新编译JSP文件,甚至如果在更新中它们没有
被改变,如果你添加这个expand-preserve-fileset,当改变的时候Resin将只会重新编译这个JSP文件
Command-Line-Deployment 命名行部署
& 命名行部署同样适用了resin.xml&web-app-deploy&配置作为一个webapps部署和扩展这个存档文件到同样的目录,替代了
在目录下寻找这个.war文件,Resin将会在内置的仓库中寻找适用这个web-app的标示符(identifier)
实例:命名行部署
& unix&bin/resin.sh deploy test.war
默认部署到默认的主机上,并且将war的name作为前缀(prefix)
命名行对比目录的优点 vs versus比,比较
&命名行部署优先于目录部署,因为一个部署到一个群,确保这个应用所有服务有同样版本,这意味着你不必从命名行部署一个
web-app,如果你决定去改变(从命名行到目录部署)
&&&& unix&bin/resin.sh undeploy test.war
&&&& unix&cp test.war webapps
Cloud Deployment云部署
&&& 当你使用命名行或者浏览器部署的时候,Resin部署一个web-application给所有服务在这个群中,这个过程(process)自动发生
并且不要求任何在ResinDe normal cluster以外的配置
&&& 当你使用系统文件在webapps目录下配售一个.war,这个云部署不存在,云部署只能存在(occur)命名行和浏览器上
&&& Resin复制这个部署应用给所有的three triad servers,或者给所有可用的(available)服务,如果你至少有三个服务,任何服务超过
the triad 将会从这个traid复制这个部署应用,一般来说,这个triad你不需要去了解,除非为了至少去确保三个服务中的第一个是一直可用的
&&& 当你添加一个新的动态(dynamic)服务或者重新开始一个服务,这个服务会检测这个traid,并且更新大部分最近复制的应用,这个系统是
可靠的(reliable可信赖的),如果服务crash(突然失败,倒闭),即使一个服务突然失败或者network(网络)outage(断供)发生在发布的时候,
自从部署相互作用,在服务器上新的版本只能当每一个文件被复制和验证的时候被激活
&&& Archiving(存档) and Rollback
&&& 存档和反转
&&& Resin的部署支持存档和反转作为系统基本的(underlying)一部分,像 Subversion(颠覆) version(版本)管理系统(control system),你可以从一个应用复制便签
给一个唯一的名字,因此你可以permanently(永久的)保存你的webapp作为 “archive/webapp/foo/20105-19”,之后反转到那个版本,如果有这个必要的话
&&& 部署系统每一个.war存档文件携带一个tag,一个部署应用可能看起来像 “production//my-app”,这个标签名是和WebApp的名字一样在这个Resin的日志中
存档一个应用,复制这个tag到一个存档名,就像&archive/webapp/my-app/&
&&& 反转一个版本,只需要复制这个存档tag到这个web-app tag中
& 案例:存档发布和更新& archive deply and update
&&&&& unix&bin/resin.sh deploy -stage archive -version 1.2.13 foo.war
Deployed archive/webapp/default/foo-1.2.13 from /tmp/caucho/qa/foo.war\
&&&&& unix&bin/resin.sh deploy -copy \
& -source-stage archive -source-version 1.2.13 -source foo \
& -target foo
& 存档war文件存放一个不同tag名,在先前的案例,这个仓库也许包含三个标签:存档 foo-1.2.12 存档 foo-1.2.13,和产品webapp,复制了foo-1.2.13
案例:对于存储的仓库标签
&& archive/webapp/default/foo-1.2.12&&&&&& ------存档foo.war内容
&& archive/webapp/default/foo-1.2.13&&&&&& ------存档foo.war内容
&& production/webapp/default/too&&&&&&&&&& ------生产 foo.war(是1.2.13的复制文件)
& 当前web-app production/webapp-default/foo& 被回滚复制从先前的版本
案例:rolling back to foo.1.2.12& 回滚到foo.1.2.12
&& unix&bin/resin.sh deploy-copy \
&&&& -source-stage archive -source-version 1.2.12 -source foo \
&&&& -target foo
&& 分段运输(staging)
&&&&& 在进行一个部署之前作为一个最后的质量检查(quality check),你可以部署这个应用为一个分段运输 &preview(预展)&服务,在这个部署群,这个预展版本将只会显示在预展的是服务上
直到你复制它到一个可以用的机器上
&&&&& 案例:发布一个预演舞台 deploying a preview stage
&&&& unix&bin/resin.sh deploy -stage preview foo.war
&&&& unix&bin/resin.sh -stage preview -server dynl -join -cluster app-tier start
& 通常,Resin存储这个preview stage 作为一个仓库tag preview/webapp/default/foo,当你部署这个.war为stage preview的时候,Resin保存这个部署在这个preview(预展)tag名,当你开始Resin跟stage preview,
你请求它在预展环境标签寻找这个web-app
&& 案例:对于分段运输的仓库
&&&&&& preview/webapp/default/foo&&& --preview foo.war content
&&&&&& production/webapp/default/foo&&& --production foo.war contents
&在你已经验证这个预展应用工作之后,你可以部署它生产使用这个deploy-copy
&& 案例:deploying a preview as production
&&&&&& unix&bin/resin.sh deploy-copy \
&&&&&&&&&& -source-stage preview -source foo \
&&&&&&&&&& -target foo
&&& Activating(活动的) deployed applications
&&& 它们部署应用可以独立的活动,让你向云上传一个新的部署,然后一旦所有服务活动或者引起一个不稳定的激活
&&& 默认,激活时自动的,当你的应用被部署,它自动的被激活,对于这个web-app-deploy你可以改变这个默认的行为去设置startup-mode 和
redeploy-mode
&&& startup-mode and redeploy modes&&& 启动和重新部署的方式
versioning and Granceful Upgrades
&&&& Resin会部署一个web-app同时多个版本,简化任意的版本升级,老版本的web-app将继续接收老版本,然而新版本将得到这个新的请求,所以任何用户将会看一个符合的版本作为这个web site更新
,这个版本需求&web-app-deploy&,i.e,它工作在webapps目录,版本是以数字为基础的,
&&&& Deployment& Methods
Filesystem deployment:Custom web-app with .war file
&&&& scenairo(描述,纲要),
&&& 在这个方案中,你要配置一个web-app具有一个特定的root-directory和这个位置指定的.war文件,像往常一样,当Resin看到在这个.war文件中发现任何改变的时候,它就会去扩展延伸新的数据到这个roo-directory并且重新开始这个web-app,&&&&&&&&
这种能力,给网站更多的灵活性
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:54964次
排名:千里之外
原创:27篇
评论:15条
(1)(1)(5)(22)(1)分别使用Jetty 、Resin、 Tomcat
部署war文件 - 且歌且行 - ITeye博客
博客分类:
Jetty
关于Jetty部署war请参照:
另外发现el表达式无法在jetty中正确运行, 请问有谁遇到过类似问题吗?
打开resin.conf可以看到如下配置
&!-- creates the webapps directory for .war expansion --&
&web-app-deploy path="webapps"/&
上述配置的作用是将war自动解压到目录webapps。
我们将需要部署的war文件(如:h2DatabaseWeb.war)放到webapps下, 启动resin(httpd.exe),
我们将可以看到如下页面
注意:如果web.xml是在Europa环境下自动生成的,war文件被部署前,需要修改web.xml
如:
&web-app xmlns="/ns/resin"
xmlns:resin="/ns/resin/core"&
Tomcat下部署war文件最为简单,可直接将Europa导出的war部署到tomcat中。
按如下步骤导入war文件,即可运行.
论坛回复 /
(2 / 6375)
congpeixue
浏览: 201046 次
好东西 例子可以跑 谢谢~
嗯,其他语言能做的,java也可以做,让我重拾了对java的信 ...
这个只是类的初始化时机吧 。
不算是类的生命周期啊.
被骗进来 ...
http://click.sourceforge.net/do ...
略简化&aop:config&}

我要回帖

更多关于 resin配置文件详解 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信