清理Jetty - 删除'不必要的'东西

时间:2011-05-13 17:14:20

标签: java jetty

我习惯使用Jetty作为我的网络容器。

我在安装步骤上所做的是从中获取原始tar球并清理一些目录和文件

我想在这里提出的是:

  

你有什么习惯从Jetty中移除以用于制作/舞台环境?

我在默认的jetty包上改变了什么:

  • 删除
    • 的README.txt
    • 的pom.xml
    • 的Javadoc /
    • 实例/
    • / web应用/测试*
    • /上下文/试验*
    • /项目的网站
    • /resources/log4j.properties
  • 创建
    • 工作/

问题:

  • 我没有违反任何许可证吗?
  • 我可以为我的系统(性能/稳定性)带来任何缺点吗?
  • 有没有人在码头上定制比这更多的东西?
  • 评论?
  • 有问题吗?
  • 提示?

相关帖子:

3 个答案:

答案 0 :(得分:2)

  

我没有违反任何许可证吗?

正确。

  

我可以为我的系统(性能/稳定性)带来任何缺点吗?

唯一的缺点是Log4J属性文件对于控制执行多少(或多少)日志记录非常有用。完全禁用日志记录会导致日志文件更小,从而节省磁盘空间。 (不应该是TB驱动器的问题。)如果找不到日志记录属性文件,则应用程序可能默认为DEBUGINFO级别,而不是ERROR级别。因此,Log4J对于告诉所有应用程序仅记录关键信息非常有用。

消除无关的示例(测试套件)通过暴露较少的系统信息来加强安全性。它还可以节省一些内存,因为测试webapps无法加载到内存中。

  

有没有人在码头上定制比这更多的东西?

您可以按如下方式清除webapps目录:

cd /opt/jetty
rm -rf webapps
mkdir -p webapps/root
echo "<html><body></body></html>" > webapps/root/index.html

重新启动Jetty。

答案 1 :(得分:2)

这是清理Jetty的一种方法(9.1.5)。

tar -xzvf jetty-distribution-9.1.5.v20140505.tar.gz
# can rename 'jetty-distribution-9.1.5.v20140505' to 'jetty-9.1.5' or similar
cd jetty-distribution-9.1.5.v20140505
rm -rf VERSION.txt license-eplv10-aslv20.html notice.html start.d/jsp.ini resources/log4j.properties demo-base/
find -name README.TXT | xargs rm -fv

mv etc etc.bak              # keep a backup of etc/ and modules/, take whats necessary
mv modules modules.bak
mkdir etc modules work
mv modules.bak/.donotdelete modules.bak/deploy.mod modules.bak/ext.mod modules.bak/http.mod \
    modules.bak/logging.mod modules.bak/resources.mod modules.bak/security.mod modules.bak/server.mod modules.bak/servlet* \
    modules.bak/webapp.mod modules/
mv $(grep -h --color=none "etc.*.xml" modules/* | sed 's/etc/etc\.bak/g') etc/
mv etc.bak/jetty-started.xml etc.bak/jetty.conf etc/        # required for bin/jetty.sh
mv etc.bak/webdefault.xml etc/                              # required for web applications
                                                            # provides default deployment descriptor config for all apps
# rm -rf modules.bak/ etc.bak/                              # remove if not needed

sed -i '/^#/d; /^\s*$/d' start.ini start.d/http.ini         # clean if needed

vi start.ini start.d/http.ini                               # check and modify if needed
    start.ini: 'jetty.send.server.version=false', remove '--module=websocket'
    http.ini: 'jetty.port=9999'
vi modules/<whatever.mod>                                   # check and modify if needed
vi etc/jetty.xml # to prevent Jetty from showing context related information
    remove
        <Item>
            <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
        </Item>
vi etc/jetty-logging.xml # suffix date with '-', instead of prefixing with '_'
    change
        <Arg><Property name="jetty.logs" default="./logs"/>/yyyy_mm_dd.stderrout.log</Arg>
        ...
        <Get id="ServerLogName" name="datedFilename"/>
    to
        <Arg><Property name="jetty.logs" default="./logs"/>/stderrout.log.yyyy_mm_dd</Arg>
        ...
        <Arg type="java.lang.String">yyyy-MM-dd</Arg>
        <Arg type="java.lang.String">HHmmssSSS</Arg>
        <Get id="ServerLogName" name="datedFilename"/>
vi etc/webdefault.xml # disable jsp support and modify other default settings
    remove or comment out <servlet> and <servlet-mapping> of JSP Servlet
    remove or comment out index.jsp from <welcome-file-list>
    set dirAllowed to false in default servlet
vi bin/jetty.sh # use $JETTY_BASE/logs instead of $JETTY_BASE as working directory
    change
        JETTY_RUN=$(findDirectory -w /var/run /usr/var/run $JETTY_BASE /tmp)
        JETTY_STATE=$JETTY_BASE/${NAME}.state
    to
        JETTY_RUN=$(findDirectory -w /var/run /usr/var/run $JETTY_BASE/logs $JETTY_BASE /tmp)
        JETTY_STATE=$JETTY_RUN/${NAME}.state
vi bin/jetty.sh # use $JETTY_HOME/work as default TMPDIR
    move following 
        TMPDIR=${TMPDIR:-/tmp}
    below 'JETTY_HOME=$PWD' and change
        TMPDIR=${TMPDIR:-"$JETTY_HOME"/work}

由此产生的结构。

jetty-distribution-9.1.5.v20140505
├── bin
│   └── jetty.sh
├── etc
│   ├── jetty-deploy.xml
│   ├── jetty-http.xml
│   ├── jetty-logging.xml
│   ├── jetty-started.xml
│   ├── jetty.conf
│   ├── jetty.xml
│   └── webdefault.xml
├── lib
│   └── <no change or keep only relevant>
├── logs
├── modules
│   ├── deploy.mod
│   ├── ext.mod
│   ├── http.mod
│   ├── logging.mod
│   ├── resources.mod
│   ├── security.mod
│   ├── server.mod
│   ├── servlet.mod
│   ├── servlets.mod
│   └── webapp.mod
├── resources
├── start.d
│   └── http.ini
├── start.ini
├── start.jar
├── webapps
└── work

答案 2 :(得分:0)

在过去,我过去常常通过删除我不使用的所有框架来修剪Jetty 很多。这也让我减少了所有的依赖罐。一旦我把它修剪成我用过的基本要素,它就非常小了。然后我用 onejar 重新打包它,这样就可以执行单个文件传输了。自从我管理任何大规模应用程序集群以来,已经很长时间了,因此可能有更好的方法来实现相同的目标。我想到了云计算,但我在那里做得不多,但如果我今天面临同样的挑战,那就是我首先要看的地方。

如今,带宽和磁盘的价格便宜很多,所以我认为问题随着时间的推移会变得越来越小。