Resin配置步骤及中文配置文件说明

合集下载

windows和linux下Nginx安装配置、Resin安装配置说明文档

windows和linux下Nginx安装配置、Resin安装配置说明文档

Nginx安装配置、Resin安装配置说明文档1. windows ................................................................................................................................... - 1 -(1) Nginx安装配置............................................................................................................. - 1 -1) Nginx安装 .............................................................................................................. - 1 -2) Nginx配置 .............................................................................................................. - 1 -a)对c:\nginx\conf\nginx.conf文件进行配置: ................................................. - 1 -b)常用的Nginx 参数 ........................................................................................ - 3 -c)静态文件处理................................................................................................... - 4 -d)动态页面请求处理 .......................................................................................... - 4 -e)下面为nginx.conf配置实例:........................................................................ - 5 -f)Nginx 启动,停止等命令 ............................................................................... - 8 -(2) Resin安装配置.............................................................................................................. - 9 -1) Resin安装 ............................................................................................................... - 9 -2) Resin配置 ............................................................................................................... - 9 -a)设置环境变量................................................................................................... - 9 -b)运行Resin ...................................................................................................... - 10 -c)对E:\sssssssss \resin\conf\resin.conf 文件进行配置 ................................... - 11 -d)80端口修改: ............................................................................................... - 16 -e)默认发布目录修改:..................................................................................... - 16 -f)多虚拟主机: ................................................................................................. - 16 -g)多端口设置: ................................................................................................ - 17 -(3) Resin与Eclipse整合 .................................................................................................. - 17 - 2. Linux ...................................................................................................................................... - 18 -(1) 环境变量设置............................................................................................................. - 18 -(2) Nginx安装与配置....................................................................................................... - 18 -1) Nginx安装 ............................................................................................................ - 18 -2) Nginx配置 ............................................................................................................ - 19 -(3) Resin安装与配置........................................................................................................ - 21 -1) Resin安装 ............................................................................................................. - 21 -2) Resin配置 ............................................................................................................. - 21 -(4) Linux下Nginx+Resin负载均衡,session问题解决实例........................................ - 21 -1) 测试环境: .......................................................................................................... - 21 -2) 安装步骤: .......................................................................................................... - 22 -a)在server1 上安装配置nginx + nginx_upstream_jvm_route ....................... - 22 -b)分别在两台机器上安装resin ..................................................................... - 22 -c)配置两台机器的resin ................................................................................. - 23 -d)整合ngxin resin.......................................................................................... - 24 -e)测试,打开浏览器,输入http://192.168.6.121/index.jsp ........................... - 26 -3) conf实例文件 ....................................................................................................... - 26 -a)nginx.conf ....................................................................................................... - 26 -b)resin.conf ........................................................................................................ - 28 -1. windows(1) Nginx安装配置1) Nginx安装文件nginx-0.8.27.zip解压缩,并修改文件夹名称为:nginx 。

resin配置

resin配置

10、保证配置。在项目的根目录下放置resin.conf,在eclipse的Run菜单中将Resin_2.1.16加入到收藏中,选择项目或是项目中的某个文件,然后运行Resin_2.1.16即可。
以上配置在Ecliห้องสมุดไป่ตู้se3.1.1/3.1.2、Resin2.1.16/Resin3.0.15上测试通过。
5、配置Arguments,在Program arguments中填写-conf "${project_loc}\resin.conf",(如果配置Resin3.x则填写-conf "${project_loc}\resin30.conf")。
6、在VM arguments中为空(如果是Resin3.x则填写-Djava.util.logging.manager=com.caucho.log.LogManagerImpl)
此配置适用于Resin2.x和Resin3.x版本。运行时需要在每个project目录下放置一个resin.conf文件,由于Resin2.x和Resin3.x版本的配置文件不同,所以需要两个文件,resin.conf文件用于启动resin2.x,resin30.conf用于启动resin3.x。
以下说明以配置Resin2.1.16版本为例,具体步骤如下:
1、打开“window->Preferences->Java->Build Path->Classpath Variables”,添加classpath variables,将基配置到Resin的安装目录。比如在我的机器上配置为:Resin_2.1.16 -D:/Program/JavaSoft/resin-2.1.16。最好同时配置一个JDK_TOOLS,指定到java_home下的lib/tools.jar文件上,否则可能会在控制台输出时中文显示成乱码。

resin启动步骤

resin启动步骤

1.点击菜单栏Run菜单,选择run Configurations2.右击Generic Server选择new添加Resin服务器3.选择Resin4.0,点击应用并运行4.再点击菜单栏Run菜单,选择Debug Configurations5.右击Java Application选择new6.Project处填写客户端,如:tb_client,Main class处填写程序的入口,如:mon.client.DeskTopSingletonApplication,再单击Arguments,在Program arguments里面填写参数,如:<argument>TENANT_NAME=frank_sbkj</argument><argument>CLIENT_APP_CLASS_NAME=com.sbt.taobao.bo.T aobaoFshJXCSim Client</argument><argument>session_id=6201027b4fd29100b7345cb4086657d13acegc594c80c 60397659183</argument><argument>IS_TP_USER=YES</argument><argument>TENANT_CODE=12281284_397659183</argument><argument>db_name=alidrp1</argument><argument>URL_PARAM=app_key=12281284&session=6201027b4fd29100b7 345cb4086657d13acegc594c80c60397659183&nick=frank_sbkj</argument> <argument>UI_DEBUG_KEY=true</argument><argument>LOGIN_USER=admin</argument><argument>JNLP_URL=/jnlp/FshT aobaoSimMainServlet/ 12281284_397659183_FshT aobaoSimMainServlet.jnlp</argument> <argument>VERIFICATION_HOST=</argument><argument>userId=397659183</argument><argument>AUTO_LOGIN=true</argument><argument>VERIFICATION_ID=sbt2639507820</argument><argument>tenant_host=</argument>添加<argument>deploy=n</argument>7.点击应用并运行,配置完毕。

Linux下Resin+JSP+MySQL安装和配置

Linux下Resin+JSP+MySQL安装和配置

Linux下Resin+JSP+MySQL安装和配置准备软件:1. J2SDK(1.5.0): jdk-1_5_0-linux-i586-rpm.bin2. Apache(2.0.53): httpd-2.0.53.tar.gz3. Resin(3.0.13): resin-3.0.13.tar.gz4. MySQL(4.1.12): Server: MySQL-server-4.1.12-1.i386.rpmClient: MySQL-client-4.1.12-1.i386.rpm5. MySQL-J BDC Connector: mysql-connector-java-3.1.10.tar.gz将上述软件全部放到一个目录下,假设在/down中。

安装过程:一.安装J2SDK1.解压文件,解压后一个R PM安装包,安装中根据提示回答yes即可将文件安装到/usr/java/jdk1.5.0目录中# chmod u+x ./jdk-1_5_0-linux-i586-rpm.bin# ./jdk-1_5_0-linux-i586-rpm.bin# rpm -ivh jdk-1_5_0-linux-i586.rpm安装程序会将J2SDK安装到以下目录中:# ls /usr/javajdk1.5.02.配置环境变量(1)配置用户环境变量假设用户名为jun,编辑该用户的.bashrc文件:# vi /home/jun/.bashrc在其中加入:export J AV A_HOME=/usr/java/jdk1.5.0export CL ASSP ATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HOMR/bin (2)配置所有用户的环境变量# vi /etc/profile加入:export JAVA_HOME=/usr/java/jdk1.5.0export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HOMR/bin 注意,这些应该加在export PATH USER...之前3.检查是否正确:先退出登录# logout然后再登录,输入以下命令,如果提示参数,一般认为没问题了.# javac二.安装Apache21.安装# tar zxvf httpd-2.0.53.tar.gz# cd httpd-2.0.53# ./configure --prefix=/usr/local/apache2# make# make install2.测试启动服务# /usr/local/apache2/bin/httpd -k start在浏览器的地址栏输入http://localhost即可看到运行结果.表示安装和运行成功.3.配置目录假设你的WWW服务的文件目录在/var/www下,则修改配置文件# vi /usr/local/apache2/conf/httpd.conf将默认的文件路径DocumentRoot "/usr/local/apache2/htdocs"改成你的服务目录DocumentRoot "/var/www"然后重启服务:# /usr/local/apache2/bin/httpd -k restart再刷新http://localhost就应该看到的是你自己的首页.4.配置系统,使用httpd可以自启动.拷贝/usr/local/apache2/apachectl到/etc/rc.d/init.d/httpd # cp /usr/local/apache2/apachectl /etc/rc.d/init.d/httpd # cd /etc/rc.d/rc3.d# ln -s /etc/rc.d/init.d/httpd S80httpd这样,系统在启动时可自动加载apache.三.安装MySQL1.分别安装服务器端# rpm -ivh MySQL-server-4.1.12-1.i386.rpm服务器端安装完后会自动启动MySQL服务# rpm -ivh MySQL-client-4.1.12-1.i386.rpm2.测试# mysqlshow如果出mysql和test两个数据库,即说明已正确安装四.安装Resin1.解压和安装# cd /usr/local# tar zxvf /down/resin-3.0.13.tar.gz# cd resin-3.0.13# ./configure --with-java-home=/usr/java/jdk1.5.0--with-apxs=/usr/local/apache2/bin/apxs# make# make install2.测试启动resin,并测试结果# /usr/local/resin-3.0.13/bin/httpd.sh -verbose如果看到:http listening to *:8080ServletServer[] startingHost[] startingApplication[http://XX.XX.XX.XX:8080/resin-doc] starting Application[http://XX.XX.XX.XX:8080] starting....即表明运行成功,在浏览器地址栏输入:http://localhost:8080应该可以看到Resin的默认首页.3.整合Apache和Resin目的是让Resin的主目录和apache的主目录指向同一个目录,并且配置Resin可以在解析80端口处的JSP网页.(1)检查文件# ls /usr/local/apache2/modules/mod_caucho.so如果有,继续(2)编辑httpd.conf# vi /usr/local/apache2/conf/httpd.conf找到ResinConfigServer localhost 6802确信其内容为:LoadModule caucho_module /usr/local/apache2/modules/mod_caucho.soResinConfigServer 192.168.1.109 6802 //即改localhost为你的计算机的实际IPCauchoStatus yes(3)编辑resin.conf# vi /usr/local/resin-3.0.13/conf/resin.conf将和的host改成实际IP:...改的路径为你的网页主路径/var/www:(4)重启apache和resin# /usr/local/apache2/bin/httpd -k restart# /usr/local/resin-3.0.13/bin/httpd.sh start记者百度()如果出现端口被占,无法绑定的情况,则重启系统,# reboot (5)测试将test.jsp文件:2+2=放到目录/var/www中访问:http://localhost/test.jsp如能正常显示2+2=4,则说明成功.4.安装mysql-jdbc驱动程序# cd /usr/local# tar zxvf /down/mysql-connector-java-3.1.10.tar.gz5.配置Resin自启动编辑/etc/rc.d/rc.local# vi /etc/rc.d/rc.local加入:export JAVA_HOME=/usr/java/jdk1.5.0export JDBC=/usr/local/mysql-connector-java-3.1.10 ##配置JDBC驱动程序路径export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/binexportCLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/dt.jar:$JDBC/mysql-connector-java-3.1 .10-bin.jar:$CLASSPATHecho "Starting Resin 3.0.13..."/usr/local/resin-3.0.13/bin/httpd.sh start ##启动resinsleep 15 ##因为启动时做的工作很多,所以,延时15秒五.测试mysql1.将以下文件testmysql.jsp放到/var/www中;2.测试:http://localhost/testmysql.jsp如果看到:驱动程序加载成功!已经建立到MySQL数据库连接.即说明成功。

resin配置

resin配置

Resin Session AnalysisWritten by Wooce 1. Resin的Reliability和Load balance机制Resin在Web Server中的内嵌模块处理请求的顺序:1)Web Server接收到请求2)内嵌模块(mod_caucho, mod_isapi等)检查是否由Resin处理的请求3)内嵌模块选中一个后台JVM,也就是一个<srun>:a.如果是已有的session, 则选中拥有该session的那一个JVMb.如果是新的请求,则采用轮循策略交由下一个<srun>处理4)内嵌模块通过TCP Socket把请求发给选中的后台JVM5)内嵌模块再通过同一TCP Socket连接接收后台JVM的响应结果.所有的有关内嵌模块和后台JVM均在resin.conf这一配置文件中配置, 使维护变得容易.因为内嵌模块需要决定选用哪一个JVM,所以负载平衡由内嵌模块控制.从JVM的角度看,来自内嵌模块的请求和HTTP请求是同样的,除了编码稍有不同.例如, Resin1.2或以上,同一个JVM可以在同一个端口8080同时作为srun和httpd服务器服务.轮循策略虽然简单, 但它实际上和其他复杂的负载平衡测率一样有效, 并且正由于简单, 它更加健壮和快速.1.1单机最廉价的备份策略. 它在单台机器上运行一个Web Server和两个JVM. 其中一个是主服务JVM, 另一个是后备JVM, 如果主JVM失效, 将启用后备JVM维持Servlet Engine仍然可用. 在resin.conf中的相应配置例子:启动时应该分别单独地启动这两个sun进程. 例如unix下:在NT下:1.2单Web Server, 多JVM当有多台计算机的时候, 可以把负载分担到一台Web Server和多个JVM上, 这比用路由器实现负载平衡较为廉价. 并且采用Resin自己的负载平衡机制,可以保证使同一个session 停留在同一台计算机上.配置举例:各台计算机可以共享使用同一个resin.conf, 但也可以为Web Server和每个JVM分别使用不同的resin.conf.为了确保session停留在固定的机器上, Resin对cookie的编码中加上了主机号标识. 1.3多Web Server和JVM对于大型的服务网站, 一般使用多台计算机, 并且每台计算机都分别运行一个Web Server和一个JVM, 由Router负责把负载分担到不同的机器上.对于这种方法, 由于Router随机地把负载分配到某台机器上, 所以发给某台host的请求的Session不一定是这台Host拥有的.因此需要把任何持久的session维护在一台中央服务器如JDBC数据库上或者采用其他方法使能够由session的id找到拥有该session的机器.即使对于这种Router负载平衡方法, 仍然可以用Resin自己的load balance策略提高可靠性. 对于每一台host上的web server, 都应该首先使用同一台host上运行的JVM进行处理, 但同时可以另一台Host上运行的JVM作为后备.上面例子中host1, host2,host3上的JVM只有当localhost上的JVM失败时才会被启用.另一个例子:1.4多Web Server, 单JVM多个Web Server可以同时使用同一个JVM处理请求. 例如, 我们有一个高速的一般的Web Server和一个采用SSL加密的Web Server的时候, 这两个Web Server可以由同一个JVM 处理请求(虽然如果有一个后备JVM的话会更好), 这简化了引入SSL的开发.2. Resin内部实现distributed sessions的机制2.1 session的backing store的概念和内存中的session的同步更新在Resin设置成load balance over multiple machine的情况, 各台运行web server和JVM 的机器组成一个load balancing pool.为实现load balance over multiple machine下的distributedsession, 必须考虑一个session在被生成后, 在load balancing pool中其他不拥有该session的机器如何访问它, 以及如何同步它们. 在Resin中是通过把session存储到backing store中来解决的, 一个JVM创建了一个新的session后,就把它存储到backing store去, 然后只要保证以下条件:(1)每个内存中有此session的JVM如果更新了此session, 就把更新后的session写到backing store中去, 并且backing store里做到在写某一session的时候不会同时接受读取同一session的请求.(2)每个JVM在读取session的时候,如果它的内存cache中还没有该session, 一定到backing store去读取.(3)某个JVM: Server A在读取session的时候,如果它的内存cache中已有该session, 这时只要满足以下的其中一种情况即可:a. 在(1)中写session到backing store里时保证同时更新了Server A的内存cache中的sessionb. 到backing store中再load出session并以此更新内存cache中的session显然, 满足了以上3个条件, 不同的机器存取同一session的时候就有很好的同步性, 并且亦有较好的性能.在Resin中, backing store可采用3种实现方式: (参看src/com/caucho/server/http/下的SessionStore.java,SessionFileStore.java,SessionJdbcStore.java和SessionRingStore.java)(1)SessionFileStore(这一方式在我所看的Resin2.0.2的代码里实际上还未实现)session的backing store在生成它的Host的文件系统(Resin似乎考虑在将来实现一个在不同的运行JVM的机器之间共享文件的网络文件系统VFS)上.(2)SessionJdbcStore在一台中央服务器上的database作为backing store, 每台Host上生成的session都通过JDBC存储到中央服务器的database中去.(3)SessionRingStore在这种方式中, load balancing pool中所有的运行JVM的机器按host id从小到大(host id 的首字母从’a’到’z’的顺序)组成一个JVM的index号的环, 当环中的某一台Host生成了一个session(session里记录了生成它的JVM的index号)的时候, 就以生成该session的JVM的index号开始, 在环上顺序查找, 只要某一个index的JVM是可用的, 就把session存储到运行该JVM的机器的本地文件系统中, 这样在两台机器上都分别存储了这个session的副本的时候就停止. 明显可看出, 一般情况下(所有JVM都没有crash down)每个session都有两个副本分别存储在生成它的那台机器和环中的下一台机器的文件系统中.Resin采用上述3种方式中的哪种方式来实现distributed session决定于:IF resin.conf中session-config/file-store和其下的directory的tag不为空THEN 采用SessionFileStore;ELSE IF resin.conf中session-config/tcp-store为true THEN 采用SessionRingStore;ELSE IF resin.conf中session-config/jdbc-store不为空THEN 采用SessionJdbcStore;在Resin的实现中,(1)SessionRingStore方式一定能满足上面所说的3个条件, 同步性最好.而对于(2)SessionFileStore和SessionJdbcStore两种方式a. 当resin.conf中session-config/always-load-session为false的时候, 如果一个JVM读入了session在内存cache中, 以后除非timeout再从backing store中reload的情况, 以后有请求都一定从内存cache中读该session, 不能看到其他JVM在此期间对该session 的更新, 这时同步性最差, 但由于不需从backing store中读取, 响应速度最快;b. 当resin.conf中session-config/always-load-session为true的时候, 这时任何请求都会到backing store中读取, 同步性好, 但由于session的内存cache实际上不起作用, 对请求的响应速度最慢.2.2 相关类分析2.2.1 QSession类实现HttpSession接口, 在Resin系统中某个JVM内存中的session就是一个QSession对象, JVM内存cache中的QSession对象需要和backing store中的session保持同步更新.2.2.2 VirtualHost类在一个JVM上处理的所有Servlet application的集合.2.2.3 SrunConnection类维护本JVM到另一个JVM的一个用以交换session的socket连接.2.2.4ServletServer类实现Server接口其他:hostList: ArrayList类型(VirtualHost对象)addHost(String id, RegistryNode node, String appDir)函数:根据(id, node, appDir)新建一个VirtualHost对象并存入HashTable类型成员hosts中.init()函数:初始化invocationCache(LRUCache类型)等内存中的Cache;调用initHosts()函数初始化hosts 等;2.2.5 SessionStore类负责session的访问(读取/存储)操作的基类, SessionFileStore,SessionJdbcStore, SessionRingStore等都是它的子类.2.2.5SessionBacking类封装session存储在file system上的backing path上时的访问操作的接口.2.2.6 SessionManager类管理一个servlet application的所有session重要数据成员和函数:2.2.6SessionRingStore类当以Ring方式的backing store存储distributed sessions时SessionStore类的实现.SessionRingStore.java的void store(QSession session)函数:int sessionIndex = session.getSrunIndex(); //生成该QSession对象的JVM的index号int srunIndex = manager.getSrunIndex(); //执行本函数的JVM的index号int srunCount = manager.getSrunCount(); //Load balancing pool中所有JVM的数目if (sessionIndex < 0)sessionIndex = srunIndex;int index = sessionIndex; //在环中从生成该QSession对象的JVM的index号开始ReadWritePair rws = null;boolean hasSelf = false;int saveCount = 2; //分别存储2个副本到2个JVM的file system中for (int i = srunCount - 1; i >= 0 && saveCount > 0; i--) {//在环上查找一周,并且成功存//储2个副本时就停止if (index == srunIndex) { //环上的当前index号是本机的index号, 令hasSelf为truehasSelf = true; //使在后面的代码段中将会调用StoreSelf()函数存储Session副saveCount--; //本到本机的file system中}else {rws = server.getRecycleConnection(index); //环上当前检查的index号是其他机器,if (rws != null) { //取出可用的socket连接把QSession对象传给index号host让它try { //存储或更新到它的本地file sytem(由RunnerRequest.java处理) saveSession(tempStream, backing.getId(), index, rws);saveCount--;} catch (IOException e) {rws.getReadStream().close();rws.getWriteStream().close();rws = null;}}if (rws == null) {rws = server.getSessionConnection(index);if (rws != null) {try {saveSession(tempStream, backing.getId(), index, rws);saveCount--;} catch (IOException e) {rws.getReadStream().close();rws.getWriteStream().close();rws = null;}}}}index = (index + 1) % srunCount; //取环中的下一个JVM}if (hasSelf) {ReadStream is = tempStream.openRead(true);storeSelf(session, is); //存储session到本地file systemis.close();storeSelf()函数如下:private void storeSelf(QSession session, ReadStream is){SessionBacking backing = session.getBacking();synchronized (backing) { //通过异步synchronized避免多个请求时的写冲突try {Path sessionPath = backing.getPath(); //获得session在本地file system上的存储路径WriteStream os = sessionPath.openWrite();os.writeStream(is);os.close();} catch (IOException e) {if (dbg.canWrite())dbg.log(e);}}boolean load(QSession session)throws Exception{SessionBacking backing = session.getBacking();if (backing == null)return false;int sessionIndex = session.getSrunIndex();int srunIndex = manager.getSrunIndex();int srunCount = manager.getSrunCount();if (sessionIndex < 0)sessionIndex = srunIndex;int updateCount = session.getUpdateCount();/* servers A and B don't need auto-reloading, but server C does.这里server A和server B即指存有session副本的那两个server,当本JVM是server A或server B之一的时候, 显然本JVM的内存cache里的session 肯定是整个load balancing pool中最新的, 所以从这里退出来后回到SessionManager类//的QSession getSession(String key, long now)函数往下执行到else if (sessionStore != null && now > 0 &&(reloadEachRequest || session.needsLoad()))load(session, now);这里session.needsLoad()函数必须返回false, 反之不是server A和server B的情况session.needsLoad()函数就必须返回true以便调用load(session,now)从server A和server B 上获取最新更新的session, 所以在这里的符合条件判断时的代码段内有session.setNeedsLoad(true);语句*/if (srunIndex != sessionIndex &&(sessionIndex + 1) % srunCount != srunIndex) {updateCount = -1;session.setUpdateCount(-1);session.setNeedsLoad(true);}ReadWritePair rws = null;int index = sessionIndex;int loadCount = 2;// Find a live serverfor (int i = srunCount - 1; i >= 0 && loadCount > 0; i--) {try {if (srunIndex != index) {rws = server.getRecycleConnection(index);if (rws != null) {try {if (loadSession(session, index, backing.getId(),rws, updateCount)) {loadCount--;updateCount = session.getUpdateCount();}} catch (IOException e) {rws.getReadStream().close();rws.getWriteStream().close();rws = null;}}if (rws == null) {rws = server.getSessionConnection(index);if (rws != null &&loadSession(session, index, backing.getId(),rws, updateCount)) {updateCount = session.getUpdateCount();loadCount--;}}}else if (loadSelf(session, updateCount)) {if (dbg.canWrite()) {dbg.log("[" + server.getServerId() + "] self-load(" + index + ") " +backing.getId() + " " + backing.getPath());}updateCount = session.getUpdateCount();loadCount--;}} catch (Exception e) {if (dbg.canWrite())dbg.log(e);}if (srunCount > 1)index = (index + 1) % srunCount;return loadCount < 2 && updateCount > 0;}2.3 对Session的处理流程2.3.1 新的请求(需要新生成一个原来在backing store中没有的session)的情况当有新的请求时,1) 执行Request.getSession(boolean create=true) (指调用Request类的getSession(Boolean create)函数, 并传参数create为true,下同) .2) Request.getSession(boolean create)调用AbstractRequest.createSession(boolean create, boolean hasOldSession)函数.3) AbstractRequest.createSession(boolean create, boolean hasOldSession)最后调用SessionManager.createSession(String oldId, long date, int sessionGroup,HttpServletRequest request)创建QSession对象(但只在内存中, 并未存储到backing store)4) 对Request的处理完成, 调用Request.finish().5)Request.finish()调用QSession.finish().6)QSession.Finish()调用SessionStore.Store(QSession Session)完成将session存储到backing store的过程.2.3.2对旧有Session的请求(backing store中存在此id的session)的情况1)执行Request.getSession(Boolean create=false)2)Request.getSession(boolean create)调用AbstractRequest.createSession(boolean create,boolean hasOldSession).3)AbstractRequest.createSession(boolean create, boolean hasOldSession)调用SessionManager.getSession(String key, long now)4)SessionManager.getSession(String key, long now)在内存Cache中查找此QSession对象, 如果需要reload, 还要从backing store中读取QSession对象的更新的值, 然后返回QSession对象.2.3.3非法请求(整个系统中不存在此id的session)的情况在Request类中的boolean isRequestedSessionIdValid()函数即能判断, 它将调用Request.getSession(false)在本JVM的内存cache和backing store中查找此id的session, 如果都找不到则返回false.附AbstractRequest.java的createSession(boolean create, boolean hasOldSession)函数的注解: protected QSession createSession(boolean create, boolean hasOldSession){Application application = getApplication();SessionManager manager = application.getSessionManager();String id = getRequestedSessionId(); //读取请求中发过来的session idlong now = Alarm.getCurrentTime();QSession session;if (id != null && id.length() > 6) {session = manager.getSession(id, now); //从内存cache中读取此id的QSession对象, 没if (session == null) { //有则创建一个}else if (session.isValid()) //成功则返回该QSession对象return session;elseid = null;}if (hasOldSession)id = null;if (! create)return null;// Must accept old ids because different applications in the same// server must share the same cookie//// But, if the session group doesn't match, then create a new// session.session = manager.createSession(id, now, getSessionGroup(), this); //新建QSession对象if (session != null) //注意创建QSession对象和创建一个存储在backing store中//session不是一回事.setHasCookie();if (id != null)return session;if (manager.enableSessionCookies())getResponse().setSessionId(session.getId());return session; //返回新创建的QSession对象}。

Linux下resin-2.1.17安装

Linux下resin-2.1.17安装

Linux下resin的安装以及配置1、安装要求安装了 jdk1.5或以上版本,并且配置好环境变量2、安装版本resin-2.1.17.tar.gz3、安装PS:如果安装时在可视化界面中,可以直接复制安装程序到本机的/home文件夹下。

复制方法:进入U盘复制安装程序,然后点击桌面上的计算机—文件系统—找到home 文件夹,打开后粘贴即可。

如果没有可视化操作界面或者想要尝试命令复制,可以进行以下步骤:安装程序放在/home//目录下先进入U盘文件夹#cd /media/disk(后面跟U盘的名字)#ls(查看U盘中的内容)复制文件到home中cp /media/U盘的名字/文件所在文件夹的名字/文件名(全名,带拓展名) /home(/home 可以改为需要复制到的文件夹的名字,和前面的语句中间有个空格,请注意)进入安装目录#cd /home/解压文件包#tar -zxvf resin-2.1.17.tar.gz(文件包的名字)安装完成后,将resin-2.1.17改名为resin#mv resin-2.1.17 resin(文件夹的名字)进入resin目录#cd resin安装#./configure#make#make install可能会出现错误,这是与环境不兼容造成的,可以忽略。

4、检查安装成功先启动resin服务#/home/resin/bin/./httpd.sh在浏览器中用 http://localhost:8080 即可访问到resin的默认页面,如果局域网访问需要打开防火墙。

出现英文界面,表示resin安装成功5、配置Resin5.1、修改端口号修改conf/resin.conf将8080端口改为80端口#vi /home/resin/conf/resin.conf按下键拉至<http port=”8080”>改为< http port=”80”>删除例子(从下往上删除最下面的<web-app>中的内容,从<!-- -The following…一直到<web-app id=’/examples/login’ />,可以拉到下面从后往前删输入:wq进行保存并退出)到5.2、优化(根据具体情况定,一般情况下可以忽略,直接进入下一步)<!-- JVM参数设置 --><jvm-arg>-Xmx2048m</jvm-arg><jvm-arg>-Xss1024m</jvm-arg><jvm-arg>-Xdebug</jvm-arg><jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg><!-- Uncomment to enable admin heap dumps 去掉下面行以管理内存堆的倾倒 --> <!-- <jvm-arg>-agentlib:resin</jvm-arg> --><watchdog-arg>-Dcom.sun.management.jmxremote</watchdog-arg><!-- 强制resin强制重起时的最小空闲内存 --><memory-free-min>1M</memory-free-min><!-- 最大线程数量. --><thread-max>4000</thread-max><!-- 套接字等待时间 --><socket-timeout>65s</socket-timeout><!-- 配置 keepalive --><keepalive-max>2500</keepalive-max><keepalive-timeout>15s</keepalive-timeout><!-- 设置缓存页、静态也的延时值 --><cache-mapping url-pattern="/" expires="5s"/><cache-mapping url-pattern="*.gif" expires="60s"/><cache-mapping url-pattern="*.jpg" expires="60s"/><cache-mapping url-pattern="*.png" expires="60s"/>6、修改防火墙# vi /etc/sysconfig/iptables加入一行指令-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT输入:wq保存并退出重启防火墙# /etc/rc.d/init.d/iptables restart启动服务#/home/resin/bin/./httpd.sh让linux启动的时候resin能够自动运行#cp /home/resin/contrib/init.resin /etc/rc.d/init.d/resin#chmod +x /etc/rc.d/init.d/resin (请在此文件中配置好JAVA_HOME及RESIN_HOME)#chkconfig --level 345 resin onservice resin start(出现Staring resin..系统当前日期后,在浏览器中输入localhost:80,出现英文界面后,resin安装成功。

Resin服务器安装配置手册(Windows&Linux)

Resin服务器安装配置手册(Windows&Linux)
......
创建不同的配置文件
注意每一个配置文件必须保持三处不同:
(1)srun(负载平衡配置)部分端口号必须不同,用不同的ip地址也可以。
在原文件的如下部分:
(2)默认主文件目录要设为不同,不然就失去了多个实例的意义,不然的话还不如用负载平衡来提高性能
(3)服务器的端口号必须不同。
这样系统启动的时候,resin就会在后台运行多个实例了,效果和第一步一样。
设置好JAVA_HOME环境变量后将RESIN解包到/home/resin下,执行编译脚本
#tar zxf resin-version.tar.gz
#mv resin-version /home/resin
#cd /home/resin/
#./configure
#make
#make install
将make install生成的$RESIN_HOME/contrib/init.resin复制到/etc/rc.d/init.d/目录下改名为resinx
Resin服务器可以被安装成为Windows的服务
要安装为Windows的服务,可以用下面的命令
C:\> resin-3.0.x\bin\httpd -install -conf conf/myconf.conf
这样Resin就会作为服务随着机器的启动而自动开启。
要想移除此服务
C:\> resin-3.0.x\bin\httpd -remove
# make install
#cd bin
#./httpd.sh start
自动启动:
在/etc/rc.d/rc.local中加入如下语句:
/usr/local/resin/bin/httpd.sh start

Resin服务器配置指南 详解

Resin服务器配置指南 详解

Resin服务器配置指南resin虚拟内存设置文章分类:Java编程show grants for root@localhost;说明RESIN_HOME - 表示resin的安装目录-Xms512m - 表示初始占用内存512MB-Xmx1024m - 表示最在可占用内存1024MBResin 3.0.x Linux下修改位置:RESIN_HOME\bin\httpd.sh 文件中找到args= 这行,修改成args="-J-server -Xms512m -Xmx1024m"设置JAVA虚拟机的内存使用量。

Windows下httpd.exe -Xms512m -Xmx1024mResin 3.1.x 同时适用于Linux和Windows修改位置:RESIN_HOME\conf\resin.conf找到如下内容<jvm-arg>-Xmx256m</jvm-arg><jvm-arg>-Xss1m</jvm-arg>修改成如下:<jvm-arg>-Xms512m</jvm-arg><jvm-arg>-Xmx1024m</jvm-arg><jvm-arg>-Xss1m</jvm-arg>3Jdk和Resin安装步骤1. 下载jdk linux版本, j2sdk-1_4_2_10-linux-i586.bin。

2. 下载resin-2.1.17.tar.gz。

或更好版本3. 直接输入:j2sdk-1_4_2_10-linux-i586.bin就可以安装成功。

本身它有安装脚本。

4. 修改用户根目录下配置文件。

(1)ls -a 查看文件(2)vi .bash_profile 添加:exportJAVA_HOME=/home/usboss/j2sdk1.4.2_10/Note:配置这个文件类似于windows的配置windows的环境变量。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

为java web应用部署resin服务器简略步骤:1 点击Run图标下面的Run configuration 或者debug图标下面的debug configuration2 新建new launch configuration 填写Name Project MainClass注意左侧选择未java application参考配置:Name:test1(自己根据情况填写)Project:你的项目名字MainClass:com.cauche.server.resin.ResinProgram Argument:-conf "E:\resin-4.04\conf\resin-test1.xml" //配置文件的目录VM argument:-Dresin.home = E:\resin-4.04-Djava.util.logging.manager = com.cauche.log.LogManagerImplResin配置文件<!-- - Resin 4.04配置文件. --><resin xmlns="/ns/resin" xmlns:resin="/ns/resin/core"><!-- 加载resin/lib下的所有.jar文件--><class-loader><tree-loader path="${resin.home}/lib"/><tree-loader path="${resin.root}/lib"/></class-loader><!-- - 管理配置--><management path="${resin.root}/admin"></management><!-- -JDK日志接口的配置. --><log name="" path="stdout:" timestamp="[%H:%M:%S.%s] "/><!-- 日志信息的级别:'info' 生产环境'fine' 开发环境'finer' 调试环境--><logger name="com.caucho" level="info"/><logger name="com.caucho.java" level="config"/><logger name="com.caucho.loader" level="config"/><!-- - 环境上下文的检测时间,对于生产站点, 这个要设置长一点,例如600秒,10分钟--><dependency-check-interval>2s</dependency-check-interval><!-- - 发送邮件通知的SMTP服务器--><system-property mail.smtp.host="127.0.0.1"/><system-property mail.smtp.port="25"/><!-- - 你可以把编译器改成"javac", "eclipse" 或者"internal". --><javac compiler="internal" args="-source 1.5"/><!-- Security providers.- <security-provider>- .ssl.internal.ssl.Provider- </security-provider>--><!-- 去掉注释,如果你使用resin提供的xml应用-- <system-property javax.xml.parsers.DocumentBuilderFactory- ="com.caucho.xml.parsers.XmlDocumentBuilderFactory"/>- <system-property javax.xml.parsers.SAXParserFactory- ="com.caucho.xml.parsers.XmlSAXParserFactory"/>--><cluster id="app-tier"><!-- 设置集群上下文的根, 相对于server.root --><root-directory>.</root-directory><server-default><!-- HTTP服务的端口--><http address="*" port="8080"/><!--- SSL端口配置:-- <http address="*" port="8443">- <openssl>- <certificate-file>keys/gryffindor.crt</certificate-file>- <certificate-key-file>keys/gryffindor.key</certificate-key-file>- <password>test123</password>- </openssl>- </http>- <!-- 默认配置: -->- <http address="*" port="8443">- <jsse-ssl self-signed-certificate-name="resin@localhost"/>- </http>--><!-- - JVM参数设置--><jvm-arg>-Xmx256m</jvm-arg><jvm-arg>-Xss1m</jvm-arg><jvm-arg>-Xdebug</jvm-arg><jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg><!-- Uncomment to enable admin heap dumps 去掉这个如果你想管理内存堆的倾倒- <jvm-arg>-agentlib:resin</jvm-arg>--><watchdog-arg>-Dcom.sun.management.jmxremote</watchdog-arg><!-- 强制resin强制重起时的最小空闲内存--><memory-free-min>1M</memory-free-min><!-- 最大线程数量. --><thread-max>256</thread-max><!-- 套接字等待时间--><socket-timeout>65s</socket-timeout><!-- 配置keepalive --><keepalive-max>128</keepalive-max><keepalive-timeout>15s</keepalive-timeout><!-- - 如果使用的是UNIX,这里是启动的帐号和用户组.- <user-name>resin</user-name>- <group-name>resin</group-name>--></server-default><!-- 定义群集服务器--><server id="" address="127.0.0.1" port="6800"/><!-- Configures the persistent store for single-server or clustered 配置独立服务器或者群集的持久化存储,专业版的功能--><resin:if test="${resin.isProfessional()}"><persistent-store type="cluster"><init path="session"/></persistent-store></resin:if><!-- 为了安全, 你可以为SSL会话(SSL sessions)定义一个不同的cookie.- <ssl-session-cookie>SSL_JSESSIONID</ssl-session-cookie>--><!-- 缓存启用(专业版的功能) --><resin:if test="${isResinProfessional}"><cache path="cache" memory-size="64M"><!-- Vary header rewriting for IE --><rewrite-vary-as-private/></cache></resin:if><!-- 启用周期性的服务器状态检查和死锁检查,所有的服务器可以添加<url> 来检查。

相关文档
最新文档