2019-12-31     17:28:38

一般只需要把Java站点文件夹或*.war文件拷贝到Web Server的webapps文件夹下,即可启动运行该站点,但更多时候,我们并不想拷贝站点,而是希望Web在Server文件夹之外运行,这时就需要配置虚拟目录了。不同的WebServer配置虚拟目录的方式不太一样,这里的配置方法仅针对Tomcat和Jetty.


1、Tomcat:找到并打开Tomcat目录下的conf/server.xml文件,在Host小节中添加以下配置即可:

<Context path="/myvpath" debug="0" docBase="d:/myWebtest" reloadable="true">
</Context>

当然如果不想修改server.xml文件,也可以把虚拟目录的配置作为单独的文件添加到相应的目录中,server.xml中缺省都会有localhost的配置,那么相应的也存在conf/Catalina/localhost文件夹,在此文件夹下添加一个xml文件,内容为以下即可:

 <?xml version='1.0' encoding='utf-8'?>
<Context path="/myapp" docBase="D:/myWebtest" debug="1" reloadable="true" >
</Context>

path属性配置的是虚拟目录的名称,docBase配置的是站点的真实路径。


2、Jetty:Jetty的全局配置文件在etc/jetty.xml中,可以直接在此配置文件中设置虚拟目录,但一般不建议这么做,推荐的做法是创建独立的配置文件。在contexts目录下创建新的xml文件,内容如下:

 <?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="configurationClasses">
<Array type="java.lang.String">
<Item>org.mortbay.jetty.webapp.WebInfConfiguration</Item>
<Item>org.mortbay.jetty.plus.webapp.EnvConfiguration</Item>
<Item>org.mortbay.jetty.plus.webapp.Configuration</Item>
<Item>org.mortbay.jetty.webapp.JettyWebXmlConfiguration</Item>
<Item>org.mortbay.jetty.webapp.TagLibConfiguration</Item>
</Array>
</Set>
<Set name="contextPath">/forward</Set>
<Set name="baseResource">
<New class="org.mortbay.resource.ResourceCollection">
<Arg>
<Array type="java.lang.String">
<Item>D:/jetty-6.1.26/mxci.forward</Item>
</Array>
</Arg>
</New>
</Set>
</Configure>

项目配置根据自己实际环境进行配置然后启动jetty, 完成。


;3、Jetty默认编码修改

Jetty6.1.21 eclipse插件,默认的编码采用的utf8,非iso-8859-1(tomcat默认是iso-8859-1),从而会引出get请求参数乱码问题。
jetty与tomcat不同,不是在xml配置文件中修改,可以在Jvm参数中加入:Dorg.mortbay.util.URI.charset=iso8859-1即可~

完成

4、Jetty加入Linux service实现开机自启动

cp -rp jetty.sh /etc/rc.d/init.d/jetty
chkconfig --add jetty
chkconfig jetty on

现在jetty已经被添加了进来。其中0~6分别表示6种Linux运行级别:

等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动

接下来,需要在刚刚在etc/init.d下创建的jetty文件中增加JETTY_HOME的配置

注意添加到前面

完成配置后,还需要变更一下文件所属用户为普通用户:

chown -R wyan:wyan jetty

现在我们在普通用户下尝试用刚刚创建的service模式启动一下jetty服务:

service jetty start

但是当服务器重启之后,加入service的jetty服务会被root用户重启,因此会在root文件夹下重新创建一个rssbus安装路径,为了避免这种情况,我们需要对jetty的user做限制。方法如下:
进入到etc/init.d/文件夹下编辑jetty文件,在文件中声明如下两行变量:

JETTY_USER=wyan
JETTY_START_LOG=$JETTY_HOME/logs/jetty-start.log

其中JETTY_USER为允许运行jetty服务的用户名;
由于JETTY_START_LOG的默认路径只有root用户可以访问,所以将记录log的路径重新定义为一个JETTY USER可以访问到的路径,此处选择的是jetty的安装路径下的子文件夹。
完成如上修改后,重启服务器,会发现被JETTY USER中指定的用户启动了

问题发现:经过以上配置后启动出现了进程,但实际上jetty报错了,报错如下:

从日志看出request的日志路径没有指定,解决方式:

在/etc/rc.d/init.d/jetty文件JETTY_HOME行下边加上一行:

JETTY_LOGS=$JETTY_HOME/logs

搞定,这样配置后通过服务启动的jetty才能正常访问


Jetty配置虚拟目录,实现把web项目发布到自定义目录,指定指定上下文访问;jetty编码修改的更多相关文章

  1. maven项目转成web项目没有生成WebContent目录

    有时候建立maven项目转成web项目没有生成WebContent目录,此时把Dynamic web module 去掉勾选,然后ok,再点开项目的properties,再选中Dynamic web  ...

  2. 创建maven web项目无法创建sec目录

    创建maven web项目无法创建sec目录 解决方法:-DarchetypeCatalog=internal

  3. Java Web项目发布及使用自定义域名

    详细讲解的网址: http://wenku.baidu.com/link?url=-ACZxKUcfrbhrMRUP3Ov-Q_c-Q9JPrA9D1fzHjHuJsWwZfRsVDVQ2qBtoY7 ...

  4. Web项目发布BUG总结

    1.字符集乱码问题: 这是一个常遇见的问题,但总是解决不了,让人很头疼笔者最近就遇到了这个问题.首先确保你传入的数据是UTF-8格式的,如果你是用jsp+servlert写的话,你的servlert中 ...

  5. 在Myeclipse中拷贝一个web项目,但是tomcat文件夹中没有更新,需要进行修改才能更新。

    1.在Myeclipse中拷贝一个web项目,但是tocat文件夹中没有更新,需要进行修改才能更新. 2.方法:右键这个工程,然后Properties->MyEclipse->Projec ...

  6. maven的下载,安装配置以及build一个java web项目

    一.下载 下载地址:http://maven.apache.org/download.cgi 二.安装 下载完成后,解压,进入到bin目录: 三.环境变量配置 复制bin目录下的文件的路径(如:xxx ...

  7. 阿里云服务器Web Deploy配置和使用Visual Studio进行Web项目发布部署遇到的坑

    阿里云的服务器一直闲着,烧着银子,当初花几千大洋开通,本想弄信息化的项目为所帮扶的贫困户脱贫助手,不想势单力薄,一直没有找到好的项目.最近大家都在众志成城抗击新肺疫情,于是又想能不能尽点自己的力量,于 ...

  8. 1-5Tomcat 目录结构 和 web项目目录结构

    对应我的安装路径: web项目目录结构

  9. MyEclipse 开发 Web项目发布到 Tomcat 下的Root 目录

    通常情况下,Web项目是发布到Tomcat下的webapps文件目录下的 . 例如:Web应用项目名称为:stock,则部署到tomcat后,是部署在tomcat/webapps/stock中,网址为 ...

随机推荐

  1. object-c中的int NSInteger NSUInteger NSNumber辨析

    object-c中的int NSInteger NSUInteger NSNumber辨析 #import <Foundation/Foundation.h> int main(int a ...

  2. OpenResty学习指南(一)

    我的博客: https://www.luozhiyun.com/archives/217 想要学好 OpenResty,你必须理解下面 8 个重点: 同步非阻塞的编程模式: 不同阶段的作用: LuaJ ...

  3. POI导出excel的三种方式

    原文链接:https://www.cnblogs.com/zhaoblog/p/7661245.html poi导出excel最常用的是第一种方式HSSFWorkbook,不过这种方式数据量大的话会产 ...

  4. 使用RKE快速部署k8s集群

    一.环境准备 1.1环境信息 IP地址 角色 部署软件 10.10.100.5 K8s Master Etcd.Control 10.10.100.17 K8s Worker1 Worker 10.1 ...

  5. Maven异常:Dynamic Web Module 3.0 requires Java 1.6 or newer.

    问题 我目前用的JDK 是java 1.8 ,搭建Maven项目的时候,设置Project facets后,出现来以下problem : Dynamic Web Module 3.0 requires ...

  6. 一次DB故障引起的反思和MySQL Operator选型

    前言 在一次数据库故障后,我们发现业务库会根据业务的等级会划分多个 MySQL 实例,许多业务库会同时属于一个 MySQL 实例,当一个库引发问题后整个实例的状态是不可控的.从而导致这个实例上的所有业 ...

  7. fgets汉字问题

    #include<stdio.h> #include <stdlib.h> #define N 10 int main(int argc, char *argv[]) { FI ...

  8. pycham设置头文件内容

    pycharm软件 设置头文件方法 File->settings->Editor->File and Code Templates->Python Script  #!/usr ...

  9. 一个工程中cpp文件的编译顺序

    做了一个实验. 最后build失败,失败的原因是变量i被重定义了.原本按照我的思路,是不应该失败的.因为我用了条件编译,若先编译Source.cpp,则会#define __HEADER_H__并且定 ...

  10. JMeter接口测试-接口签名校验

    前言 很多HTTP接口在传参时,需要先对接口的参数进行数据签名加密 如pinter项目的中的签名接口 http://localhost:8080/pinter/com/userInfo 参数为: {& ...