其实要实现个负载均衡按照常理那是很简单不过的事情了,但是今天我在这里专门来写篇文章,实在是用这两个东西的感触比较多。
环境:windows xp
软件:glassfish_v2,sun java system web server7.0
一、
glassfish 安装和集群,此处不详细说明
二、
sun java system web server7.0 安装,下载exe版,一路默认安装
三、
插件的安装及配置
注:以下路径对应的意思
<WS_INSTALL_ROOT> sun web server 的安装目录
<WS_INSTANCE_ROOT> sun web server 下实例的目录,默认安装的话,文件夹的名字是https-机器名
<GLASSFISH_HOME> glassfish的安装目录
1.创建以下文件夹
<WS_INSTALL_ROOT>/plugins/lbplugin/bin
<WS_INSTALL_ROOT>/plugins/lbplugin/resource
<WS_INSTALL_ROOT>/plugins/lbplugin/errorpages
<GLASSFISH_HOME>/lib/lbplugin
2.下载负载均衡插件,地址:http://download.java.net/javaee5/external/SunOS/aslb/jars/aslb-9.1-MS4-b5.jar
解压jar包,得到两个压缩文件,将两个压缩文件解压到<GLASSFISH_HOME>/lib/lbplugin下,得到一个lib文件夹(这个文件夹最后可以全部丢到<GLASSFISH_HOME>/lib中),貌似这些对glassfish用处不到,但是sun官方文档说这样做,那就这样做吧
2.配置sun web server,最重要是这里,要好好看了,网上很多是错的。
2.1 在刚才解压得到的lib包中找文件,将<GLASSFISH_HOME>/lib/lbplugin/lib/webserver-plugin/windows/sjsws/passthrough.dll 拷贝到
<WS_INSTALL_ROOT>/plugins/lbplugin/bin/passthrough.dll
另外,在<GLASSFISH_HOME>/lib/lbplugin/lib 下将icudt2.dll,icuin2.dll,icuuc2.dll,xerces-c.dll四个文件拷贝到<WS_INSTALL_ROOT>/plugins/lbplugin/bin/也就是和passthrough.dll放一起
注:这是web server的一个bug,sun官方文档都没说这么做,我是怎么都配不出来后,在网上查,这是在sun的论坛上看到了解决方法
2.2将<GLASSFISH_HOME>/lib/lbplugin/lib/webserver-plugin/windows/sjsws/errorpages/default-error.html 和sun-http-lberror.html 拷贝到 <WS_INSTALL_ROOT>/plugins/lbplugin/errorpages/
2.3将<GLASSFISH_HOME>/lib/lbplugin/lib/webserver-plugin/windows/sjsws/*.res 拷贝到<WS_INSTALL_ROOT>/plugins/lbplugin/resource/
2.4将<GLASSFISH_HOME>/lib/lbplugin/lib/install/templates/loadbalancer.xml.example拷贝到<WS_INSTANCE_ROOT>/config/
2.5将<GLASSFISH_HOME>/lib/lbplugin/lib/dtds/sun-loadbalancer_1_2.dtd拷贝到<WS_INSTANCE_ROOT>/config/
注:网上的文章一般都是说将2.4,2.5这两步的文件拷贝到<WS_INSTALL_ROOT>/admin-server/config-store/<default-config>/config/ 其实这两种操作效果是一样的,后者是将配置修改应用到实例的模板,以后可以通过模板来设置每个实例,我们这样做更简单,直接修改实例,若成功同样可以将我们的配置更新给模板,下面的也一样,我们对实例进行操作
2.6找到<WS_INSTANCE_ROOT>/config/下的magnus.conf文件,加上这两句Init fn="load-modules" shlib="<WS_INSTALL_ROOT>/plugins/lbplugin/bin/passthrough.dll" funcs="init-passthrough,service-passthrough,name-trans-passthrough" Thread="no"
Init fn="init-passthrough"
注:fn="load-modules" shlib="<WS_INSTALL_ROOT>/plugins/lbplugin/bin/passthrough.dll" funcs="init-passthrough,service-passthrough,name-trans-passthrough" Thread="no" 这句一定不能有回车符号,若该文件没有这句Init fn="load-modules" shlib="j2eeplugin.dll" 把这个也加上去,自动安装的一般会有
2.7找到<WS_INSTANCE_ROOT>/config/下的obj.conf 在第一个NameTrans之前插入一行
NameTrans fn="name-trans-passthrough" name="lbplugin" config-file="loadbalancer.xml"
注:该句同样不能出现回车,loadbalancer.xml 不需要给出完整的路径
在该文件末尾,加上
<Object name="lbplugin">
ObjectType fn="force-type" type="magnus-internal/lbplugin"
PathCheck fn="deny-existence" path="*/WEB-INF/*"
Service type="magnus-internal/lbplugin" fn="service-passthrough"
Error reason="Bad Gateway" fn="send-error" uri="$docroot/badgateway.html"
</Object>
2.8 仿照<GLASSFISH_HOME>/lib/lbplugin/lib/install/templates/loadbalancer.xml.example 在该目录下建一个loadbalancer.xml
<!DOCTYPE loadbalancer PUBLIC "-//Sun Microsystems Inc.//DTD Sun ONE Application Server 7.1//EN" "sun-loadbalancer_1_2.dtd">
<loadbalancer>
<cluster name="cluster1" policy="round-robin">
<instance name="instance1" enabled="true" disable-timeout-in-minutes="60" listeners="http://localhost:38080" weight="100"/>
<instance name="instance2" enabled="true" disable-timeout-in-minutes="60" listeners="http://192.168.1.252:38080" weight="100"/>
<web-module context-root="clusterjsp" enabled="true" disable-timeout-in-minutes="60" error-url="sun-http-lberror.html" />
<health-checker url="/" interval-in-seconds="10" timeout-in-seconds="30" />
</cluster>
<property name="reload-poll-interval-in-seconds" value="60"/>
<property name="response-timeout-in-seconds" value="30"/>
<property name="https-routing" value="true"/>
<property name="require-monitor-data" value="false"/>
<property name="active-healthcheck-enabled" value="false"/>
<property name="number-healthcheck-retries" value="3"/>
<property name="rewrite-location" value="true"/>
</loadbalancer>
注:cluster name 为你glassfish群集的名字,instance name为你的cluster里面instance的名字,一定要一致,listeners是你在用集群的情况下访问应用的url,只要地址和端口,context-root是地访问的上下文的名字,其他的copy就行,但是一定要有。
3.启动你的application吧,首先要保证不是在负载均衡的情况下个实例要能正常运行啊,不然还均衡个鬼啊!然后启动web server 再看看web server的实例启动没,这个是一定要启动的,就靠这东东!最后,在浏览器输入地址http://localhost:81/cluserjsp 哈哈,出来了吧,没出来的话就在看看哪错了吧,再不行就问问我,可能文章哪写漏了~~
另外,不用在glassfish的负载均衡控制台点testconnection测试,我刚开始没配起来的时候,使劲的点,多少怎么就测不通,等我配起来之后,他还是测不通,浪费我多少感情啊!
最后,说点感触。刚开始就说了的,其实这东西不难,但是配的过程太坎坷了,刚开始太相信权威了,在公司极度缓慢的网速下,我点开更慢的sun公司网站,然后看他的权威文档,他的文档还没有windows下的安装说明,在安装出了问题之后,我还努力的反思自己的能力为何如此之差,反反复复照着做了几遍,怎么都不行,在我即将崩溃之时,我在google上搜了一下,猛然的柳暗花明啊,仅有的几篇英文论坛文章,像救命稻草一样,没别的说,就想骂sun!
分享到:
相关推荐
源代码包"Beginning_Java_trade_EE_6_Platform_with_GlassFish_trade_3_From_Novice_to_Professional-4391"包含的就是书中所有示例项目的实际代码,通过这些代码,读者可以动手实践,加深对理论知识的理解,并掌握...
Apache Tomcat 7.0是Java Servlet和JavaServer Pages(JSP)的开源Web应用服务器,它是Apache软件基金会Jakarta项目的一部分。这个版本是专为64位操作系统设计的,这意味着它可以在处理大量内存和多核心处理器的系统...
Java Web 开发基于Java Servlet和JavaServer Pages (JSP) 技术。Servlet是Java编写的服务器端程序,用于扩展服务器的功能,处理HTTP请求。JSP则是将动态内容和静态内容分离,提供了更便捷的视图层开发方式。两者结合...
2. **JSF 1.2**:JavaServer Faces 1.2的升级,提供了更强的组件库和事件处理机制,提高了用户界面开发的效率。 3. **EJB 3.0**:Enterprise JavaBeans 3.0简化了EJB的开发,引入了无状态会话bean、实体bean(使用...
JSF(JavaServer Faces)是Java平台上用于构建用户界面的Web框架,它简化了开发复杂的Web应用程序的过程。在这个名为"jsf_page.rar"的压缩包中,包含了一个关于JSF分页处理的示例,这对于理解和实现高效的数据展示...
对于大型项目,GlassFish的集群功能更是不可或缺,它可以实现负载均衡和故障转移,确保应用的高可用性。 总的来说,GlassFish Enterprise Server结合DWR技术,为Web应用程序开发提供了一个强大且灵活的平台。开发者...
Glassfish-v2是一款基于Java EE 5标准的开源应用服务器,其源码的公开为开发者提供了深入了解和学习Java企业级开发的宝贵资源。在本文中,我们将深入探讨Glassfish-v2的核心概念、架构设计以及关键组件,旨在帮助...
- **GlassFish**: Sun Microsystems发布的一款开源应用服务器,MYECLIPSE支持GlassFish v1和v2版本。 ### 二、STRUTS2 **Struts2**是Apache Struts的下一代框架,用于构建动态、可扩展的Web应用程序。Struts2支持...
它包括一系列的API和服务,如Servlet、JSP、JSF(JavaServer Faces)、EJB(Enterprise JavaBeans)、JPA(Java Persistence API)、CDI(Contexts and Dependency Injection)、JAX-RS(Java API for RESTful Web ...
本文档主要介绍如何在Windows平台上安装和配置GlassFish服务器以及Ant构建工具,并在Eclipse IDE中进行相应的设置,以便能够顺利地开发、构建和部署Java Web应用程序。 #### 二、环境准备 在开始安装和配置之前,...
GlassFish是Sun Microsystems(现已被Oracle收购)开发的一款开源应用服务器,它是Java EE规范的参考实现。GlassFish 3是Java EE 6的配套服务器,支持该版本的所有特性,包括Web Profile和Full Profile。Web Profile...
GlassFish Server的核心功能包括对Java Servlet、JavaServer Pages (JSP)、Java Persistence API (JPA)、EJB(Enterprise JavaBeans)、Java Message Service (JMS)、Java Transaction API (JTA)、Web服务等的支持。...
本教程将详细解释如何在Glassfish服务器上部署WAR(Web Application Archive)文件,以实现一个名为"getAndPostExample"的Web应用程序的演示。 首先,我们需要了解什么是WAR文件。WAR是Java Web应用的标准打包格式...
### Glassfish部署Web项目知识点详解 #### 一、概述 **Glassfish** 是一款开源的Java EE应用服务器,由Oracle公司维护。它基于Java EE标准,支持多种Java EE技术,如EJB、JPA、JSF等。由于其强大的功能和良好的...
GlassFish支持Java EE的各种组件,如Web服务、Java Servlets、JSP、EJB、JSF(JavaServer Faces)、JPA等。使用GlassFish,开发者可以部署和管理他们的Java EE应用。 在Java EE 8中,有以下几个关键的更新和改进: ...
【标题】:“Web服务使用Java技术来自Sun” 【描述】:“Web服务是互联网上应用程序之间交互的一种方式,它允许不同的系统之间共享数据和功能。Java技术,尤其是Java API for Web Services (JAX-WS) 和Java API for...
flex远程对象操作(简单对象到复杂对象) 服务器为glassfish 工作过程录制,语言为成都方言:),听不明白的只有光看了
8. **Web性能优化**:包括缓存策略、负载均衡、HTTP性能最佳实践等,帮助开发者构建高性能的Web应用。 9. **最新技术与趋势**:可能还会涉及到如Spring Boot、Spring Cloud、Microservices等现代开发框架和技术,...