- 浏览: 238801 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
潇洒小鸟2013:
确实有这个问题
c3p0存在严重bug -
jun1022509040:
http://download.csdn.net/detail ...
c3p0存在严重bug -
liang5233145:
1.7版本,有个close()方法,但是1.7之前没有关闭方法 ...
关闭URLClassLoader打开的jar包 -
ilomkdyhrnvbd:
性能测试之Apache性能调优观看地址:http://www. ...
apache性能调优 -
zxjlwt:
学习了。http://surenpi.com
jetty和tomcat中,war包解压缩的差别
jetty中文文档:www.jettycn.com
介绍
虚拟主机是注册在DNS中的IP地址的替代名。虚拟主机有两种形式:
- 多个名称可以解析到一个IP地址。
- 多宿主主机,即具有多个网络接口的机器,每个IP地址可以有不同的名称。
Jetty使用者在配置web应用程序时,经常要考虑到不同虚拟主机的情况。通常情况下,单个IP地址的机器有不同的DNS解析名称与它相关联,在其上部署的webapp必须能够通过所有的解析名称访问到。另一种可能性是从不同的虚拟主机访问不同的web应用程序。让我们来看看这些可能性。
你可以通过几种不同的方式设置虚拟主机,包括:
- 使用context目录中的context XML文件:setVirtualHosts 。这是首选方法。
- 内嵌Jetty用法中的一个Java调用:内嵌Jetty 。
- jetty.xml 中列出的明确部署的web应用(不通过deployer),或类似的机制。
- 使用WEB-INF/jetty-web.xml文件(已过时,但是可以和webapp deployer一起使用,如果你不使用context deployer)。
有关配置Jetty的各种方法的说明,请参阅如何配置Jetty ,其中包括了详细配置文档的链接。
接下来的示例使用首选方式设置虚拟主机,通过调用方法ContextHandler.setVirtualHost setVirtualHosts 。
配置虚拟主机
当配置web应用程序时,你可以设置一个IP地址和名称列表,只有通过列表中的地址才能访问到应用程序。假设我们有一台机器具有如下IP地址和DNS域名:
- 333.444.555.666
- 127.0.0.1
- www.blah.com
- www.blah.net
- www.blah.org
假设我们有一个web应用程序xxx.war,我们希望通过所有上述的名称和地址都能访问到这个应用。然后,我们将这样配置web应用:
<Configure class="org.eclipse.jetty.webapp.WebAppContext"> <Set name="contextPath">/xxx</Set> <Set name="war"><SystemProperty name="jetty.home"/>/webapps/xxx.war</Set> <Set name="virtualHosts"> <Array type="java.lang.String"> <Item>333.444.555.666</Item> <Item>127.0.0.1</Item> <Item>www.blah.com</Item> <Item>www.blah.net</Item> <Item>www.blah.org</Item> </Array> </Set> </Configure>
假设我们已经配置了一个连接器,监听8080端口,那么web应用“xxx.war”将可以通过以下地址访问:
- http://333.444.555.666:8080/xxx
- http://127.0.0.1:8080/xxx
- http://www.blah.com:8080/xxx
- http://www.blah.net:8080/xxx
- http://www.blah.org:8080/xxx
为不同的虚拟主机配置不同的web应用
简单的为每个web应用提供不同的虚拟主机列表。例如:假设我们虚拟的主机有这些DNS域名和IP地址:
- 333.444.555.666
- 127.0.0.1
- www.blah.com
- www.blah.net
- www.blah.org
- 777.888.888.111
- www.other.com
- www.other.net
- www.other.org
假设我们有另外一个web应用“zzz.war”。我们希望xxx.war如上部署,zzz.war只部署在777.888.888.111、www.other.com、www.other.net和www.other.org中:
<!-- webapp xxx.war --> <Configure class="org.eclipse.jetty.webapp.WebAppContext"> <Set name="contextPath">/xxx</Set> <Set name="war"><SystemProperty name="jetty.home"/>/webapps/xxx.war</Set> <Set name="virtualHosts"> <Array type="java.lang.String"> <Item>333.444.555.666</Item> <Item>127.0.0.1</Item> <Item>www.blah.com</Item> <Item>www.blah.net</Item> <Item>www.blah.org</Item> </Array> </Set> </Configure>
<!-- webapp zzz.war --> <Configure class="org.eclipse.jetty.webapp.WebAppContext"> <Set name="contextPath">/zzz</Set> <Set name="war"><SystemProperty name="jetty.home"/>/webapps/zzz.war</Set> <Set name="virtualHosts"> <Array type="java.lang.String"> <Item>777.888.888.111</Item> <Item>www.other.com</Item> <Item>www.other.net</Item> <Item>www.other.org</Item> </Array> </Set> </Configure>
web应用xxx.war在下列地址仍然可用:
- http://333.444.555.666:8080/xxx
- http://127.0.0.1:8080/xxx
- http://www.blah.com:8080/xxx
- http://www.blah.net:8080/xxx
- http://www.blah.org:8080/xxx
但现在web应用zzz.war在下列地址可用:
- http://777.888.888.111:8080/zzz
- http://www.other.com:8080/zzz
- http://www.other.net:8080/zzz
- http://www.other.org:8080/zzz
为不同的虚拟主机配置不同的web应用,但是具有相同的上下文(context path)
在上面的例子中,我们使得web应用zzz.war在一个特定虚拟主机集合中可用,并且上下文是/zzz。我们其他的web应用在不同的虚拟主机集合中,不同的上下文路径中可用。如果我们希望web应用在同一上下文路径,但是不同的虚拟主机集合中可用,会发生什么呢?
很简单,我们只需为每个web应用提供相同的上下文路径,保留之前定义的不相交的虚拟主机集合:
<Configure class="org.eclipse.jetty.webapp.WebAppContext"> <Set name="war"><SystemProperty name="jetty.home"/>/webapps/xxx.war</Set> <Set name="contextPath">/</Set> <Set name="virtualHosts"> <Array type="java.lang.String"> <Item>333.444.555.666</Item> <Item>127.0.0.1</Item> <Item>www.blah.com</Item> <Item>www.blah.net</Item> <Item>www.blah.org</Item> </Array> </Set> </Configure>
<Configure class="org.eclipse.jetty.webapp.WebAppContext"> <Set name="war"><SystemProperty name="jetty.home"/>/webapps/zzz.war</Set> <Set name="contextPath">/</Set> <Set name="virtualHosts"> <Array type="java.lang.String"> <Item>777.888.888.111</Item> <Item>www.other.com</Item> <Item>www.other.net</Item> <Item>www.other.org</Item> </Array> </Set> </Configure>
现在,web应用xxx.war通过下面地址访问:
- http://333.444.555.666:8080/
- http://127.0.0.1:8080/
- http://www.blah.com:8080/
- http://www.blah.net:8080/
- http://www.blah.org:8080/
web应用zzz.war通过下面地址访问:
- http://777.888.888.111:8080/
- http://www.other.com:8080/
- http://www.other.net:8080/
- http://www.other.org:8080/
配置非ASCII字符的虚拟主机
国际域名 是含有非ASCII字符的名称。例如:http://www.bücher.com。DNS内部仍然是基于ASCII的,所以这些类型的名称需要编码处理后存储为ASCII格式,编码规则叫punycode 。现代浏览器将检测URL中的这些非ASCII字符,并自动使用Punycode码编码。例如,键入这个网址到浏览器:
http://www.åäö.com:8080/test/
被翻译成以下的URL:
http://www.xn--4cab6c.com:8080/test/
对于在jetty虚拟主机中使用国际域名的情况,你需要在你的context xml文件中配置punycoded形式的名称(当然,你需要在DNS中提供punycoded形式的域名)。
下面是一个例子。意思是,我在8080端口运行了一个上下文为/test的web应用,我要配置的虚拟主机为www.åäö.com。我在context xml文件中配置了域名的ASCII等效格式:
<Configure class="org.eclipse.jetty.webapp.WebAppContext"> <Set name="contextPath">/</Set> <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/test.war</Set> <Set name="virtualHosts"> <Array type="String"> <Item>www.xn--4cab6c.com</Item> </Array> </Set> </Configure>
在启动Jetty后,我将能够在我的浏览器中输入http://www.åäö.com:8080/test/形式的url来访问我的web应用。
请注意,如果我没有部署任何“/”上下文的web应用,访问http://www.åäö.com:8080的请求将由Jetty默认处理器处理,这会返回一个404页面并列出可用的上下文:
<H2>Error 404 - Not Found.</H2> No context on this server matched or handled this request.<BR> Contexts known to this server are: <ul><li><a href="http://www.xn--4cab6c.com:8080/test">/test @ www.xn--4cab6c.com:8080 ---> WebAppContext@82d210@82d210/test,file:/tmp/Jetty_0_0_0_0_8080_test.war__test_www.xn..4cab6c.com_1jadjg/webapp/,/home/janb/src/jetty-eclipse/jetty/trunk/jetty-distribution/target/distribution/webapps/test.war</a></li> </ul>
你会发现该链接已经有了punycode编码的域名了。
发表评论
-
jetty ajp实现分析
2014-10-12 21:09 927Ajp13Parser用于解析web服务器传过来的输入流, ... -
访问JSP页面时报java.err.nojdk错误
2012-08-21 10:08 7419案件JDK6及以上版本时,则在Jetty中访问JSP页面的时候 ... -
jetty和ajaxanywhere有冲突
2012-01-12 16:38 1691有同事反映jetty下部署的应用程序有问题,而这个应用部署在t ... -
jetty处理get请求支持中文url
2011-12-27 15:52 3574URL实例是: http://localhost:8080/ ... -
jetty wiki未翻译的文章列表
2011-09-04 20:06 1424文章地址 翻译者 http://wiki.ec ... -
jetty-配置JMX
2011-09-02 14:26 11375jetty中文文档:www.jettycn. ... -
jetty-如何让一个应用响应一个特定端口
2011-08-26 18:08 7739jetty中文文档:www.jettycn.com ... -
jetty-如何重定向或移动context
2011-08-26 11:09 4112jetty中文文档:www.jettycn.com ... -
jetty-如何序列化会话
2011-08-25 13:35 2003jetty中文文档:www.jettycn.com ... -
jetty-如何配置会话ID
2011-08-24 13:17 8128jetty中文文档:www.jettycn.com ... -
jetty-如何配置连接器
2011-08-02 14:36 1533jetty中文文档:www.jettycn.com ... -
jetty7中文文档
2011-06-22 23:06 9364jetty是一个开源的java servlet容器,功能类似于 ... -
jetty中的JNDI实现分析
2011-05-03 19:11 2319本文主要探讨jetty中的JN ... -
jetty存在session不一致问题
2011-04-19 13:09 4291jetty在集群环境中使用时,浏览器中的sessionId和后 ... -
jetty-plus.xml功能分析
2011-03-10 10:26 3411版本:jetty 7.3.0 一:org.eclips ... -
学习jetty-WebAppContext
2011-02-25 15:21 4829一个WebAppContext对象代表一个web应用程序,可以 ... -
学习jetty
2011-01-24 18:16 14281 jetty-web.xml 是和指定web应 ...
相关推荐
- **虚拟主机**:Jetty支持多个虚拟主机,可以在同一服务器上运行不同域名的应用。 4. **安全管理** - **角色与权限**:Jetty支持基于角色的访问控制(RBAC),可以设置用户角色和相应的访问权限。 - **会话管理...
- Jetty的ContextHandler允许你独立地部署多个Web应用,每个都有自己的虚拟主机、配置和上下文路径。 安全性方面,Jetty支持基本的认证机制,如HTTP Basic Auth和Form-based Auth,还可以通过集成Spring Security等...
如何配置虚拟主机(Virtual Hosts) 如何配置会话ID(Session IDs) 如何序列化会话(Session) 如何重定向或移动应用(Context) 如何让一个应用响应一个特定端口 使用JNDI 使用JNDI 在JNDI中配置数据源...
通过配置虚拟主机,可以在同一台服务器上运行多个具有不同域名的Web应用。 ##### 3.4 安全配置 Jetty提供了丰富的安全机制,包括认证、授权、SSL/TLS加密等。例如,可以通过配置文件启用SSL,确保数据传输的安全性...
- **资源管理**:理解Jetty如何加载Web应用的静态资源,如HTML、CSS、JavaScript等,以及如何配置虚拟主机。 总之,Jetty 6.1.7在Eclipse中的配置和使用涉及到服务器配置、Web应用部署、调试等多个环节,每个环节都...
9. **虚拟主机**:如何在Jetty上配置多个虚拟主机,实现多站点托管。 10. **管理服务器**:涵盖日志管理、请求日志、实时状态监控、关闭服务器以及JMX管理。 11. **配置JNDI**:介绍Java Naming and Directory ...
`org.mortbay.xml.XmlConfiguration`类提供了读取和解析Jetty配置文件的能力。用户可以通过这个类来加载配置文件,并将配置信息转换成Java对象模型,方便后续的配置管理和使用。 #### 五、在Jetty中部署Web应用程序...
Jetty支持虚拟主机,可以通过配置`VirtualHost`和相应的`ContextHandler`来实现。 #### 十、管理服务器 **10.1 服务器日志管理** Jetty提供了丰富的日志管理功能,可以通过配置文件来设置日志级别、格式等。 **...
通过创建Server对象并设置Connector(这里使用的是SelectChannelConnector,提供非阻塞I/O),可以指定服务器监听的端口(8080)和主机地址(127.0.0.1)。接着,创建WebAppContext对象,设置Web应用的上下文根(...
3. **WebAppContext**:WebAppContext是Jetty中用于部署Web应用程序的核心类,可以配置虚拟主机、类加载器等。 4. **Jetty与WebSocket**:介绍Jetty对WebSocket协议的支持,包括创建WebSocket服务器端点和客户端...
7. **类加载器**、**Jetty Connector的SSL配置**、**虚拟主机**、**管理服务器**、**JNDI配置**、**会话与集群**、**性能优化**、**异步Servlet、Ajax和Comet**以及**嵌入Jetty**等内容,都是指南中详细阐述的主题,...
- 分析和理解这个项目,可以帮助开发者掌握如何配置Jetty以满足特定需求,例如设置虚拟主机、部署多个Web应用等。 - 通过修改项目配置,可以学习到如何优化Jetty的性能,比如调整线程池大小、开启GZIP压缩等。 ...
- **易用性**: Jetty配置简单,Tomcat配置相对复杂。 - **功能**: Tomcat包含了更多的企业级功能。 #### 二、Jetty初探 ##### 2.1 下载 - **官方下载**: 通常可以在Jetty官方网站上找到最新版本的下载链接。 - *...
Jetty 指南书是一本专注于Jetty web容器的详细教程,主要涵盖了Jetty的基础知识、安装配置、架构解析、服务配置、Web应用程序部署、Handler详解、类加载器、Connector配置、虚拟主机、服务器管理和性能优化等多个...
12. **虚拟主机**:Jetty允许在单个服务器上配置多个虚拟主机,每个主机可以对应不同的域名或IP。 13. **服务器管理** - 日志管理:控制日志输出和格式。 - 请求日志:记录HTTP请求详情。 - 实时状态:查看...
Jetty插件通常会提供图形化的配置界面,使得设置端口、虚拟主机、上下文路径等操作变得简单直观。 接下来是SVN,这是一个分布式版本控制系统,它允许开发团队在不同的地点协同工作,同时跟踪和控制代码的变化。在...
对于Jetty的高级特性,如Handler的详细用法、类加载器、Connector的SSL配置、虚拟主机的设置、服务器管理和JNDI的配置,以及会话和集群管理,都进行了详细的阐述。性能优化章节则讨论了线程池调整、内存配置、GZIP...
通过WebAppContext对象,可以方便地配置和管理Web应用程序,包括虚拟主机、上下文路径和类加载器设置。 8. **安全性**:Jetty集成了多种安全机制,如JAAS(Java Authentication and Authorization Service)、SSL/...
配置虚拟主机名、IP地址和绑定,确保每个网站的唯一性。 7. **配置和管理HTTPS网站**: - 申请SSL证书:为了实现HTTPS,你需要从权威的证书颁发机构购买或申请SSL证书,用于加密网站数据并验证服务器身份。 - ...
在Linux上,Apache的虚拟主机配置文件通常位于`/etc/apache2/sites-available/`目录下,通过创建和编辑`.conf`文件来设置每个虚拟主机的详细信息,如绑定的域名、文档根目录、访问权限等。激活配置后,虚拟主机将在...