- 浏览: 234030 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
Navee:
抄来抄去,还是没有实质解决问题
Ext 树.叶子查找与非叶子查找 -
haizhiguang:
我按照你的代码自己写了一个试试,没看出我的代码跟你的有什么区别 ...
JAVA 鼠标画直线举行椭圆 -
WHW1984:
整个工程目录结构是咋样的 兄弟
Jetty -- 安全认证 -- 三种配置方法 -
shixianwei:
...
Jetty Oracle DataSource Config(Jetty Oracle 数据源配置) -
cpusoft:
http://cuiyingfeng.blog.ccidnet ...
JNI(java 调用 本地接口)Tomcat的JNI库加载问题解决办法
(0)
Jetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty以其高效、小巧、可嵌入式.
如果让一个人说出一种开源的servlet容器,可能他们会回答Apache Tomcat。但是,Tomcat并不是孤单的,我们还有Jetty。Jetty作为可选的servlet容器只是一个额外的功能,
可以提供给客户一个自己具有启动,停止以及管理功能的应用程序:Jetty对于普通的HTTP服务(没有servlet)只需要350k的内存,这使得可以将其用在智能设备中。你可以提供基于web的控制面板并且具有Java web应用的所有功能而不用担心那些独立的容器所带来的压力。
Jetty 的配置文件放在 etc 路径下,该路径下有如下几个配置文件:
其中 webdefault.xm1文件是 Web 应用的默认配置文件,与 Jetty 的配置没有太大的关系,该文件通常不需要修改。
另外的三个都是 Tomcat 的配置文件:jetty.xm1文件是默认的配置文件;jetty-jmx.xm1是启动 JMX 控制的配置文件; jetty-plus.xm1文件是在增加 Jetty 扩展功能的配置文件。
在启动 Jetty 时输入如下命令:
java -jar startup.jar
默认使用jetty.xm1文件时启动Jetty,即与如下命令效果相同:
java -jar startup.jar etc/jetty.xml
关闭时在命令行中用: ctrl+c
第一步下载:http://dist.codehaus.org/jetty/jetty-6.1.14/jetty-6.1.14.zip 是目前最新的稳定版。
解压到如E:\jetty-6.1.14,其中比较重要的目录是:etc、contexts、webapps。个人认为可以类比 tomcat的conf、conf\Catalina\localhost、webapps目录。contexts是热部署用的。
(1)
把应用程序或WAR包放于jetty的webapps下来发布:
试运行下,可以把一个简单的web项目放到webapps目录下,或是*.war,如:web-demo(或web-demo.war)放到webapps目录下。
运行: E:\jetty-6.1.14>java -jar start.jar
当看到:
2009-01-13 15:35:01.953::INFO: Started SelectChannelConnector@127.0.0.1:8080 ,表示jetty启动完成.
打开:http://localhost:8080/web-demo ,就有结果了。
(2)
如果不把web-demo放到webapps目录下也可,在contexts目录下建立一个文件告诉jetty就行了。
可以在contexts目录下复制test.xml为web-demo.xml,然后修改如下:
1. <?xml version="1.0" encoding="ISO-8859-1"?>
2. <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
3.
4. <Configure class="org.mortbay.jetty.webapp.WebAppContext">
5.
6. <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
7. <!-- Required minimal context configuration : -->
8. <!-- + contextPath -->
9. <!-- + war OR resourceBase -->
10. <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
11. <Set name="contextPath">/web-demo</Set>
12. <Set name="war">e:/workspace/web-demo/WebContent</Set>
13.
14. <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
15. <!-- Optional context configuration -->
16. <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
17. <Set name="extractWAR">false</Set>
18. <Set name="copyWebDir">false</Set>
19. <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
20. <!--
21. <Set name="overrideDescriptor"><SystemProperty name="jetty.home" default="."/>/contexts/test.d/override-web.xml</Set>
22. -->
23. </Configure>
war可以设置成绝对路径。然后再重启jetty,也可得到同样的效果.
(3)在现成的项目中嵌入使用 jetty
现我有一示例项目 e:/workspace/web-demo(称为project_home),里面的Web根目录是WebContent。
1.
在project_home 建一个jetty目录,子目录如:contexts、etc、lib。
2.
把${jetty_home}/etc目录下的jetty.xml、 webdefault.xml文件复制到${project_home}/jetty/etc目录中;
3.
把${jetty_home}/lib/jsp- 2.1目录复制到${project_home}/jetty/lib目录下,
把jetty-6.1.14.jar、jetty-util-6.1.14.jar、servlet-api-2.5- 6.1.14.jar复制到${project_home}/jetty/lib目录下.
(如果不复制jsp-2.1或jsp-2.0也可以正常启动,只是不能解析 jsp,打开主页时提示 JSP not support)
4.
${jetty_home}/start.jar复制到$ {project_home}/jetty目录下。
5.
接下来在${project_home}/jetty/contexts目录下加一个文件。可以是上面给出的web-demo.xml。不过war 可以改为:
<Set name="war"><SystemProperty name="jetty.home" default="."/>/../WebContent</Set>
6.
注释${project_home}/jetty/etc/jetty.xml文件中的:
<!--
<Item>
<New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler"/>
</Item>
-->
<!--
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.WebAppDeployer">
<Set name="contexts"><Ref id="Contexts"/></Set>
<Set name="webAppDir"><SystemProperty name="jetty.home" default="."/>/webapps</Set>
<Set name="parentLoaderPriority">false</Set>
<Set name="extract">true</Set>
<Set name="allowDuplicates">false</Set>
<Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
</New>
</Arg>
</Call>
-->
<!--
<Item>
<New class="org.mortbay.jetty.security.HashUserRealm">
<Set name="name">Test Realm</Set>
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
<Set name="refreshInterval">0</Set>
</New>
</Item>
-->
<!--
<Ref id="RequestLog">
<Set name="requestLog">
<New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog">
<Set name="filename"><SystemProperty name="jetty.logs" default="./logs"/>/yyyy_mm_dd.request.log</Set>
<Set name="filenameDateFormat">yyyy_MM_dd</Set>
<Set name="retainDays">90</Set>
<Set name="append">true</Set>
<Set name="extended">false</Set>
<Set name="logCookies">false</Set>
<Set name="LogTimeZone">GMT</Set>
</New>
</Set>
</Ref>
-->
RequestLog 是访问记录,不注释也可,前提就是有logs目录。
addLifeCycle 不注释也行,前提是有webapps目录。
Test Realm 不注释也是,前提是etc目录下有realm.properties。
配置好了,现在到E:\workspace\web-demo\jetty,运行java -jar start.jar 可以启动这个项目了。
(4)使用Jetty作为嵌入式服务器
有两种方式: 一种是单独设置.另一种是结合配置文件(比较简单).
需要导入的JAR包有:
jetty-6.1.14.jar
jetty-util-6.1.14.jar
servlet-api-2.5-6.1.14.jar
jsp-2.1目录下的JAR包.
(4.1)
结合配置文件(比较简单):
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.handler.DefaultHandler;
import org.mortbay.xml.XmlConfiguration;
import org.xml.sax.SAXException;
public class JettyServer {
public static void main(String[] args) {
Server server = new Server(8080);
server.setHandler(new DefaultHandler());
XmlConfiguration configuration = null;
try {
configuration = new XmlConfiguration(
new FileInputStream("C:/jetty.xml"));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (SAXException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
configuration.configure(server);
server.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
配置文件为c盘中的Jetty.xml.
复制原始的Jetty.xml,进行修改:
RequestLog 是访问记录,不注释也可,前提就是在JettyServer.java的目录中,有logs目录。
addLifeCycle ,修改webapps目录的位置。
Test Realm 不注释也是,前提是etc目录下有realm.properties。
如下:
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.WebAppDeployer">
<Set name="contexts"><Ref id="Contexts"/></Set>
<Set name="webAppDir">E:/HUANGWEIJUN/jetty-6.1.14/webapps</Set>
<Set name="parentLoaderPriority">false</Set>
<Set name="extract">true</Set>
<Set name="allowDuplicates">false</Set>
<Set name="defaultsDescriptor">
E:/HUANGWEIJUN/jetty-6.1.14/etc/webdefault.xml</Set>
</New>
</Arg>
</Call>
<Set name="UserRealms">
<Array type="org.mortbay.jetty.security.UserRealm">
<!--
<Item>
<New class="org.mortbay.jetty.security.HashUserRealm">
<Set name="name">Test Realm</Set>
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
<Set name="refreshInterval">0</Set>
</New>
</Item>
-->
</Array>
</Set>
<!--
<Ref id="RequestLog">
<Set name="requestLog">
<New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog">
<Set name="filename"><SystemProperty name="jetty.logs" default="./logs"/>/yyyy_mm_dd.request.log</Set>
<Set name="filenameDateFormat">yyyy_MM_dd</Set>
<Set name="retainDays">90</Set>
<Set name="append">true</Set>
<Set name="extended">false</Set>
<Set name="logCookies">false</Set>
<Set name="LogTimeZone">GMT</Set>
</New>
</Set>
</Ref>
-->
(4.2)
不用配置文件:
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppContext;
import org.mortbay.thread.BoundedThreadPool;
public class JettyServer2 {
public static void main(String[] args) throws Exception {
// Jetty HTTP Servlet Server.
Server server = new Server();
BoundedThreadPool threadPool = new BoundedThreadPool();
// 设置线程池
threadPool.setMaxThreads(100);
server.setThreadPool(threadPool);
// 设置连接参数
Connector connector = new SelectChannelConnector();
// 设置监听端口
connector.setPort(8000);
// 为服务设置连接器
server.setConnectors(new Connector[] { connector });
WebAppContext context = new WebAppContext();
// 设置contextPath如:[url]http://localhost:8000/test... [/url]
context.setContextPath("/jason");
// 启动的war包的位置
context.setWar("E:/HUANGWEIJUN/jetty-6.1.14/webapps/jason");
server.addHandler(context);
server.setStopAtShutdown(true);
server.setSendServerVersion(true);
server.start();
// 将服务添加到连接池中
server.join();
}
}
以上两种方式,当运行相关的JAVA类时,即可启动Jetty服务器,可以访问服务器中webapps中的内容.
(5)Jetty 的安全性
为了防止任何人都有权限去关闭一个已经开启的 Jetty 服务器, 我们可以通过在启动 Jetty 服务器的时候指定参数来进行控制,使得用户必须提供密码才能关闭 Jetty 服务器,启动 Jetty 服务器的命令如下所示:
java -DSTOP.PORT=8079 -DSTOP.KEY=mypassword -jar start.jar
这样,用户在停止 Jetty 服务器的时候,就必须提供密码“mypassword”。
-D<name>=<value>
set a system property
(6)Jetty 通过JNDI配置数据源(暂略)
Jetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty以其高效、小巧、可嵌入式.
如果让一个人说出一种开源的servlet容器,可能他们会回答Apache Tomcat。但是,Tomcat并不是孤单的,我们还有Jetty。Jetty作为可选的servlet容器只是一个额外的功能,
而它真正出名是因为它是作为一个可以嵌入到其他的Java代码中的servlet容器而设计的。这就是说,开发小组将Jetty作为一组Jar文件提供出来,因此你可以在你自己的代码中将servlet容器实例化成一个对象并且可以操纵这个容器对象。
可以提供给客户一个自己具有启动,停止以及管理功能的应用程序:Jetty对于普通的HTTP服务(没有servlet)只需要350k的内存,这使得可以将其用在智能设备中。你可以提供基于web的控制面板并且具有Java web应用的所有功能而不用担心那些独立的容器所带来的压力。
Jetty 的配置文件放在 etc 路径下,该路径下有如下几个配置文件:
jetty.xm1文件。 jetty-jmx.xm1文件。 jetty-plus.xm1文件。 webdefault.xm1文件。
其中 webdefault.xm1文件是 Web 应用的默认配置文件,与 Jetty 的配置没有太大的关系,该文件通常不需要修改。
另外的三个都是 Tomcat 的配置文件:jetty.xm1文件是默认的配置文件;jetty-jmx.xm1是启动 JMX 控制的配置文件; jetty-plus.xm1文件是在增加 Jetty 扩展功能的配置文件。
在启动 Jetty 时输入如下命令:
java -jar startup.jar
默认使用jetty.xm1文件时启动Jetty,即与如下命令效果相同:
java -jar startup.jar etc/jetty.xml
关闭时在命令行中用: ctrl+c
Jetty 配置文件语法说明: 打开 Jetty 配置文件,该配置文件的根元素是Configure. Jetty 是个嵌入式 Web 容器,因此它的服务对应一个 Server 实例,可以看到配置文件中有如下片段: <1-配置了一个Jetty服务器进程一〉 <Configure id="Server" class="org.mortbay.jetty.Server"> 另外还会看到有如下的配置元素: Set: 相当于调用 se仅xx 方法。 Get: 相当于调用 getXxx 方法。 New: 创建某个类的实例。 Arg: 为方法或构造器传入参数。 Array: 设置一个数组。 Map: 允许生成一个新的HashMap. Item: 设置一个Array或者Map条目元素的条目 Call: 调用某个方法。 <SystemProperty>: 这个元素允许JVM系统属性作为Set、Put或者Arg 元素的值。 Java对象通过一连串<New>, <Set>, <Put> 和 <Call>元素来配置。下面的例子让你有个初步的了解: <Set name="Test">value</Set> == obj.setTest("value"); <Put name="Test">value</Put> == obj.put("Test","value"); <Call name="test"><Arg>value</Arg></Call> == obj.test("value"); <New class="com.acme.MyStuff"><Arg/></New> == new com.acme.MyStuff(); 一个Call元素可以包含一系列的Arg元素,跟随一系列作用在新对象上的Set、Put或者Call元素。 <Call name="test"> <Arg>value1</Arg> <Set name="Test">Value2</Set> </Call> 等价于: Object o2 = o1.test("value1"); o2.setTest("value2"); <SystemProperty name="Test" default="value"/> 等价于: System.getProperty("Test","value"); <ref>,这个元素引用以前产生的一个对象,一个Ref元素包含一系列作用在参考对象上的Set, Put 和 Call元素:
第一步下载:http://dist.codehaus.org/jetty/jetty-6.1.14/jetty-6.1.14.zip 是目前最新的稳定版。
解压到如E:\jetty-6.1.14,其中比较重要的目录是:etc、contexts、webapps。个人认为可以类比 tomcat的conf、conf\Catalina\localhost、webapps目录。contexts是热部署用的。
(1)
把应用程序或WAR包放于jetty的webapps下来发布:
试运行下,可以把一个简单的web项目放到webapps目录下,或是*.war,如:web-demo(或web-demo.war)放到webapps目录下。
运行: E:\jetty-6.1.14>java -jar start.jar
当看到:
2009-01-13 15:35:01.953::INFO: Started SelectChannelConnector@127.0.0.1:8080 ,表示jetty启动完成.
打开:http://localhost:8080/web-demo ,就有结果了。
(2)
如果不把web-demo放到webapps目录下也可,在contexts目录下建立一个文件告诉jetty就行了。
可以在contexts目录下复制test.xml为web-demo.xml,然后修改如下:
1. <?xml version="1.0" encoding="ISO-8859-1"?>
2. <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
3.
4. <Configure class="org.mortbay.jetty.webapp.WebAppContext">
5.
6. <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
7. <!-- Required minimal context configuration : -->
8. <!-- + contextPath -->
9. <!-- + war OR resourceBase -->
10. <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
11. <Set name="contextPath">/web-demo</Set>
12. <Set name="war">e:/workspace/web-demo/WebContent</Set>
13.
14. <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
15. <!-- Optional context configuration -->
16. <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
17. <Set name="extractWAR">false</Set>
18. <Set name="copyWebDir">false</Set>
19. <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
20. <!--
21. <Set name="overrideDescriptor"><SystemProperty name="jetty.home" default="."/>/contexts/test.d/override-web.xml</Set>
22. -->
23. </Configure>
war可以设置成绝对路径。然后再重启jetty,也可得到同样的效果.
(3)在现成的项目中嵌入使用 jetty
现我有一示例项目 e:/workspace/web-demo(称为project_home),里面的Web根目录是WebContent。
1.
在project_home 建一个jetty目录,子目录如:contexts、etc、lib。
2.
把${jetty_home}/etc目录下的jetty.xml、 webdefault.xml文件复制到${project_home}/jetty/etc目录中;
3.
把${jetty_home}/lib/jsp- 2.1目录复制到${project_home}/jetty/lib目录下,
把jetty-6.1.14.jar、jetty-util-6.1.14.jar、servlet-api-2.5- 6.1.14.jar复制到${project_home}/jetty/lib目录下.
(如果不复制jsp-2.1或jsp-2.0也可以正常启动,只是不能解析 jsp,打开主页时提示 JSP not support)
4.
${jetty_home}/start.jar复制到$ {project_home}/jetty目录下。
5.
接下来在${project_home}/jetty/contexts目录下加一个文件。可以是上面给出的web-demo.xml。不过war 可以改为:
<Set name="war"><SystemProperty name="jetty.home" default="."/>/../WebContent</Set>
6.
注释${project_home}/jetty/etc/jetty.xml文件中的:
<!--
<Item>
<New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler"/>
</Item>
-->
<!--
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.WebAppDeployer">
<Set name="contexts"><Ref id="Contexts"/></Set>
<Set name="webAppDir"><SystemProperty name="jetty.home" default="."/>/webapps</Set>
<Set name="parentLoaderPriority">false</Set>
<Set name="extract">true</Set>
<Set name="allowDuplicates">false</Set>
<Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
</New>
</Arg>
</Call>
-->
<!--
<Item>
<New class="org.mortbay.jetty.security.HashUserRealm">
<Set name="name">Test Realm</Set>
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
<Set name="refreshInterval">0</Set>
</New>
</Item>
-->
<!--
<Ref id="RequestLog">
<Set name="requestLog">
<New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog">
<Set name="filename"><SystemProperty name="jetty.logs" default="./logs"/>/yyyy_mm_dd.request.log</Set>
<Set name="filenameDateFormat">yyyy_MM_dd</Set>
<Set name="retainDays">90</Set>
<Set name="append">true</Set>
<Set name="extended">false</Set>
<Set name="logCookies">false</Set>
<Set name="LogTimeZone">GMT</Set>
</New>
</Set>
</Ref>
-->
RequestLog 是访问记录,不注释也可,前提就是有logs目录。
addLifeCycle 不注释也行,前提是有webapps目录。
Test Realm 不注释也是,前提是etc目录下有realm.properties。
配置好了,现在到E:\workspace\web-demo\jetty,运行java -jar start.jar 可以启动这个项目了。
(4)使用Jetty作为嵌入式服务器
有两种方式: 一种是单独设置.另一种是结合配置文件(比较简单).
需要导入的JAR包有:
jetty-6.1.14.jar
jetty-util-6.1.14.jar
servlet-api-2.5-6.1.14.jar
jsp-2.1目录下的JAR包.
(4.1)
结合配置文件(比较简单):
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.handler.DefaultHandler;
import org.mortbay.xml.XmlConfiguration;
import org.xml.sax.SAXException;
public class JettyServer {
public static void main(String[] args) {
Server server = new Server(8080);
server.setHandler(new DefaultHandler());
XmlConfiguration configuration = null;
try {
configuration = new XmlConfiguration(
new FileInputStream("C:/jetty.xml"));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (SAXException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
configuration.configure(server);
server.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
配置文件为c盘中的Jetty.xml.
复制原始的Jetty.xml,进行修改:
RequestLog 是访问记录,不注释也可,前提就是在JettyServer.java的目录中,有logs目录。
addLifeCycle ,修改webapps目录的位置。
Test Realm 不注释也是,前提是etc目录下有realm.properties。
如下:
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.WebAppDeployer">
<Set name="contexts"><Ref id="Contexts"/></Set>
<Set name="webAppDir">E:/HUANGWEIJUN/jetty-6.1.14/webapps</Set>
<Set name="parentLoaderPriority">false</Set>
<Set name="extract">true</Set>
<Set name="allowDuplicates">false</Set>
<Set name="defaultsDescriptor">
E:/HUANGWEIJUN/jetty-6.1.14/etc/webdefault.xml</Set>
</New>
</Arg>
</Call>
<Set name="UserRealms">
<Array type="org.mortbay.jetty.security.UserRealm">
<!--
<Item>
<New class="org.mortbay.jetty.security.HashUserRealm">
<Set name="name">Test Realm</Set>
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
<Set name="refreshInterval">0</Set>
</New>
</Item>
-->
</Array>
</Set>
<!--
<Ref id="RequestLog">
<Set name="requestLog">
<New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog">
<Set name="filename"><SystemProperty name="jetty.logs" default="./logs"/>/yyyy_mm_dd.request.log</Set>
<Set name="filenameDateFormat">yyyy_MM_dd</Set>
<Set name="retainDays">90</Set>
<Set name="append">true</Set>
<Set name="extended">false</Set>
<Set name="logCookies">false</Set>
<Set name="LogTimeZone">GMT</Set>
</New>
</Set>
</Ref>
-->
(4.2)
不用配置文件:
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppContext;
import org.mortbay.thread.BoundedThreadPool;
public class JettyServer2 {
public static void main(String[] args) throws Exception {
// Jetty HTTP Servlet Server.
Server server = new Server();
BoundedThreadPool threadPool = new BoundedThreadPool();
// 设置线程池
threadPool.setMaxThreads(100);
server.setThreadPool(threadPool);
// 设置连接参数
Connector connector = new SelectChannelConnector();
// 设置监听端口
connector.setPort(8000);
// 为服务设置连接器
server.setConnectors(new Connector[] { connector });
WebAppContext context = new WebAppContext();
// 设置contextPath如:[url]http://localhost:8000/test... [/url]
context.setContextPath("/jason");
// 启动的war包的位置
context.setWar("E:/HUANGWEIJUN/jetty-6.1.14/webapps/jason");
server.addHandler(context);
server.setStopAtShutdown(true);
server.setSendServerVersion(true);
server.start();
// 将服务添加到连接池中
server.join();
}
}
以上两种方式,当运行相关的JAVA类时,即可启动Jetty服务器,可以访问服务器中webapps中的内容.
(5)Jetty 的安全性
为了防止任何人都有权限去关闭一个已经开启的 Jetty 服务器, 我们可以通过在启动 Jetty 服务器的时候指定参数来进行控制,使得用户必须提供密码才能关闭 Jetty 服务器,启动 Jetty 服务器的命令如下所示:
java -DSTOP.PORT=8079 -DSTOP.KEY=mypassword -jar start.jar
这样,用户在停止 Jetty 服务器的时候,就必须提供密码“mypassword”。
-D<name>=<value>
set a system property
(6)Jetty 通过JNDI配置数据源(暂略)
发表评论
-
Java对Json的工具类 JsonUtil 绿色版
2011-04-19 10:48 2435绿色版,无污染,无需下载第三方包.转自某某博客. packa ... -
模型是是搜索
2011-03-17 00:37 1128#!/usr/bin/env python # -*- co ... -
Java 调用浏览器访问指定URL. 多平台
2011-02-16 13:46 2904/////////////////////////////// ... -
Java Web 项目读取配置文件
2010-10-28 18:18 2848在开发过程中,我们经常会遇到读取配置文件的情况,对于配置文件的 ... -
j=j++与j=++j的区别
2010-09-21 16:28 1758jvm里面有两个存储区,一个是暂存区(是一个堆栈),另一个是变 ... -
JSON与JAVA数据的转换
2010-09-15 14:29 1001JSON与JAVA数据的转换 关键字: json java ... -
对web.xml 的几点配置心得。包括mime-mapping
2010-08-31 23:09 19361.指定了自己的javaEncoding (参考 http:/ ... -
JasperReports学习笔记
2010-08-30 13:03 1341reference: http://www.javaworl ... -
JFreeChart 教程二
2010-08-25 16:22 1138JFreeChart是一组功能强大、灵活易用的Java绘图AP ... -
JFreeChart 教程一
2010-08-25 16:20 998以下是需要画一个折线图查到的资料(放到这里备用): 原文地址 ... -
我和iText的第一次亲密接触
2010-08-19 22:58 1382要生成pdf文件,在网上查了下资料,首选iText,跟着大家走 ... -
引入多个Jar~
2010-08-19 13:49 551Zhe画 13:55:50 java命令引入jar时可以- ... -
Jetty7 Continuation 学习(一)
2010-08-19 08:44 1892Jetty7发布了,Jetty7支持servlet 2.5,且 ... -
JNI(java 调用 本地接口)Tomcat的JNI库加载问题解决办法
2010-08-15 10:17 6714Tomcat的Release Notes 里有这么一段话: = ... -
Java入门--认识理解Java中native方法
2010-08-15 09:38 946Java不是完美的,Jav ... -
用digester简化xml文档处理
2010-08-15 00:21 992用digester简化xml文档处理java 2010-05- ... -
关于URL特殊符号的问题~
2010-08-14 15:20 1052HTML 格式编码的实用工具类。该类包含了将 String 转 ... -
InheritableThreadLocal 线程变量
2010-07-29 11:40 2287ThreadLocal有个缺陷,在子线程里无法访问父线程的变量 ... -
java基础补疑
2010-07-28 11:53 804java语言的关键字,变量修饰符,如果用transient声明 ... -
转自Javaeye论坛~作者
2010-07-28 09:53 921只身在他乡,常常想起我的父亲,在我们当地他是出名的木匠师傅,一 ...
相关推荐
jetty快速入门与嵌入使用,简单、易懂,轻松学习!
本文将深入探讨Jetty的入门实例,帮助你快速掌握如何使用Jetty来运行简单的Web应用。 首先,让我们理解什么是Servlet。Servlet是Java编程语言中的一个接口,由Java Servlet API提供,它允许开发人员扩展Web服务器的...
与其他重量级的Web服务器(如Apache Tomcat)相比,Jetty没有繁重的依赖,这使得它启动快速,占用资源少。Jetty还支持嵌入式模式,可以直接将服务器与应用程序打包在一起,提供更简洁的部署方案。 其次,Jetty对...
【Jetty入门学习资料】 Jetty是一个轻量级、高性能的开源Servlet容器,它由Java编写,以JAR包形式提供API,便于开发者将其轻松集成到Java应用中。Jetty自1995年创立以来,已被众多知名项目如Apache Geromino、JBoss...
Jetty作为Servlet容器,允许开发者无需依赖重量级的Java应用服务器就能快速地部署和运行Web应用。 【正文】 1. Jetty简介: - Jetty是一个开源项目,由Eclipse基金会维护,其设计目标是轻量、高效、灵活,特别...
本教程将引导你入门Jetty的使用,帮助你快速理解如何配置和运行Jetty服务器。 一、Jetty简介 Jetty是由Eclipse基金会维护的一个开源项目,它符合Java Servlet和JSP规范。与其他Web服务器相比,Jetty以其小型化、...
java原始源码Dojo Web Builder Dojo Web Builder 为 dojo 构建系统提供了一个 Web 界面,允许用户仅使用他们...快速入门,使用较旧的 Dojo 版本 $ mvn -Ddojo.source=/some/path/to/dojo-1.5-source -Ddojo.version=1.
【Jetty Demo】是一个入门级别的教程,旨在帮助初学者快速理解和使用Jetty服务器。Jetty是一款轻量级、高性能的开源HTTP服务器和Servlet容器,它以其简洁的API和高效的性能在Java开发社区中广受欢迎。这个示例项目将...
#### 一、Jetty简介与入门 ##### 1.1 Jetty是什么? Jetty是一款开源的、轻量级的Java Web服务器和Java Servlet容器,由Eclipse基金会维护。它以其小巧、灵活、高性能的特点而著称,适用于开发测试环境和生产环境...
掌握Jetty的使用,开发者不仅可以快速部署和管理Web应用,还可以利用其强大的扩展性,如添加自定义过滤器、监听器等,以满足特定的需求。对于初学者,理解Jetty的基本结构和配置方式,以及如何通过它来部署和运行...
**Spring Boot快速入门** Spring Boot是由Pivotal团队开发的一个框架,它旨在简化Spring应用程序的初始搭建以及开发过程。Spring Boot基于"约定优于配置"的原则,提供了大量的默认配置,使得开发者能够快速地创建一...
在“JSP快速入门”这个主题中,我们可以学到以下关键知识点: 1. **JSP基本结构**:一个JSP页面由两部分组成——静态内容(HTML、CSS、JavaScript)和动态内容(Java代码)。JSP页面的后缀通常为`.jsp`。 2. **JSP...
**SpringBoot快速入门** SpringBoot是由Pivotal团队提供的全新框架,其设计目标是为了简化Spring应用的初始搭建以及开发过程。它集成了大量的常用组件,如数据源、JPA、定时任务、WebSocket等,使得开发者可以快速...
在《Groovy快速入门》中,你将接触到: 1. **基础语法**:Groovy的基础数据类型、变量声明、控制流语句(如if、for、while)、函数和类的定义。 2. **动态特性**:Groovy的动态类型系统,以及运行时类型检查和类型...
本快速入门Demo将带你逐步了解这三个框架的基本概念、核心组件以及如何在实际项目中应用。 **Struts2** Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优点并解决了其不足,提供了一种更灵活、强大...
在"springboot快速入门"这个主题中,我们将深入探讨以下几个关键知识点: 1. **Spring Boot 核心特性**:Spring Boot 的核心特性包括自动配置、嵌入式服务器、起步依赖和 Actuator 等。自动配置是 Spring Boot 的一...
这个"maven+spring+jetty+logback简单项目源码"提供了一个基础框架,方便新手快速入门并实践这些技术。 首先,`Maven`是Apache开发的一个项目管理和综合工具,它通过一个项目对象模型(Project Object Model, POM)...
- **快速入门体验**:为所有Spring的开发提供一个快速上手的体验。 - **开箱即用**:提供了许多默认配置,方便快速开始开发。 - **自定义配置**:虽然提供了很多默认配置,但仍然允许开发者通过自定义配置进行调整。...
本文将深入讲解Servlet的快速入门,包括如何执行查询全部的操作,并涉及JSTL(JavaServer Pages Standard Tag Library)的相关内容。同时,我们还将探讨Web项目的打包和部署过程。 首先,让我们了解Servlet的基本...