`
mqchange
  • 浏览: 32897 次
  • 来自: 北京
社区版块
存档分类
最新评论

使用winstone嵌入web Application

阅读更多

      winstone是一个嵌入式的web服务器,体积只有320KB,它可以嵌入到我们的web应用程序里面。平时我们要发布一个war包的时候需要把war包放到tomcat或者jetty的webapps文件夹里面进行发布,然而使用winstone进行嵌入时,则可以把winstone加入到war包里面,简单的执行一行命令之后就可以打开浏览器输入地址进行访问了。

 

     例如我的web应用程序的名字为:myweb,则执行 java -jar myweb.war就可以看到页面。大名鼎鼎的CI工具 jenkins就采用的是这种方式。当然,除了这用方式之外还有另外一种打包成jar的方式。本文将介绍这两种不同的打包。

 

winstone的网址: http://winstone.sourceforge.net/

 

jar方式:

    该方式打成的jar包具有一定的局限性,不能在tomcat或者其他的web容器中部署。

     1、 使用 maven构建一个web项目

 

 

     2、修改pom.xml文件, 在<bulid>元素里加入:

       <plugins>
            <plugin>
                <groupId>net.sf.alchim</groupId>
                <artifactId>winstone-maven-plugin</artifactId>

                <executions>
                    <execution>
                        <goals>
                            <goal>embed</goal>
                        </goals>
                        <phase>package</phase>
                    </execution>
                </executions>
                
            </plugin>
        </plugins>

 

     3、执行  mvn install 命令构建jar包。(默认生成的是  *-standalone.jar 一个文件)

 

     4、执行 java -jar myweb-standalone.jar (在浏览器中输入 http://localhost:8080 就可以看到效果了,当然端口可以自己定义,这里不再赘述)

 

 

 

 

war方式

 

为了省事和简单,在这里只做一个演示,直接使用jenkins的配置文件。在新的web工程当中,复制以下内容到 dependencies元素内:

<dependency>
   <groupId>org.jenkins-ci</groupId>
   <artifactId>executable-war</artifactId>
   <version>1.20</version>
   <scope>provided</scope>
  </dependency>

  <dependency>
   <groupId>org.jenkins-ci</groupId>
   <artifactId>winstone</artifactId>
   <version>0.9.10-jenkins-26</version>
   <scope>test</scope>
  </dependency>

 

 

然后再复制下面的内容到plugins元素中:

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
     <archive>
      <manifest>
       <mainClass>Main</mainClass>
      </manifest>
     </archive>
    </configuration>
   </plugin>


   <plugin>
    <artifactId>maven-dependency-plugin</artifactId>
    <!-- version specified in grandparent pom -->
    <executions>
     <execution>
      <id>executable-war-header</id>
      <phase>generate-resources</phase>
      <goals>
       <goal>unpack-dependencies</goal>
      </goals>
      <configuration>
       <includeGroupIds>org.jenkins-ci</includeGroupIds>
       <includeArtifactIds>executable-war</includeArtifactIds>
       <includeScope>provided</includeScope>
       <includes>**/*.class</includes>
       <outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory>
      </configuration>
     </execution>
     <execution>
      <id>resgen</id>
      <phase>generate-resources</phase>
      <goals>
       <goal>copy</goal>
      </goals>
      <configuration>
       <artifactItems>
        <!-- dependencies that goes to unusual locations -->
        <artifactItem>
         <groupId>org.jenkins-ci</groupId>
         <artifactId>winstone</artifactId>
         <outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory>
         <destFileName>winstone.jar</destFileName>
        </artifactItem>
       </artifactItems>
       <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/plugins</outputDirectory>
       <stripVersion>true</stripVersion>
       <overWriteIfNewer>true</overWriteIfNewer>
       <overWriteReleases>false</overWriteReleases>
       <overWriteSnapshots>true</overWriteSnapshots>
      </configuration>
     </execution>
    </executions>
   </plugin>

 

 

执行mvn install完成打包。

 

NOTE:如果要是在真实的项目中使用,代码是必须要改的,可以到 jenkins  的官网把源代码下载下来然后进行编辑,不过提醒一下,需要使用GIT,不支持SVN。

仓库地址:https://github.com/jenkinsci/jenkins.git

也可以直接下载 :  https://nodeload.github.com/jenkinsci/jenkins/zipball/jenkins-1.425/jenkinsci-jenkins-jenkins-1.425-0-g3150431.zip

或者:http://mirrors.jenkins-ci.org/

 

分享到:
评论

相关推荐

    [PACKT]express web application development

    ### Express Web Application Development #### 知识点概览 1. **Express 框架简介** 2. **Express 的核心特性** 3. **环境搭建与配置** 4. **路由与中间件** 5. **模板引擎集成** 6. **错误处理与调试** 7. **...

    前端开源库-winston-syslog

    使用winston-syslog时,首先需要在项目中安装该库,通过npm命令行工具执行: ```bash npm install winston winston-syslog ``` 然后,在代码中引入并配置winston-syslog: ```javascript const winston = require('...

    前端开源库-winston-papertrail

    要在前端项目中使用 `winston-papertrail`,首先需要安装 `winston` 和 `winston-papertrail`: ```bash npm install winston winston-papertrail ``` 然后,配置 `winston`,添加 `winston-papertrail` 作为运输...

    前端开源库-winston-daily-rotate-file

    **前端开源库-winston-daily-rotate-file** 在IT领域,日志管理是任何应用程序不可或缺的一部分,它有助于追踪错误、监控系统性能以及调试代码。在前端开发中,虽然大多数日志处理通常发生在服务器端,但某些场景下...

    前端开源库-winston-workflows

    在使用`Winston-Workflows`时,开发者首先需要定义工作流和步骤,然后配置工作流的执行策略。以下是一个简单的示例: ```javascript const { Workflow, Step } = require('winston-workflows'); // 定义一个工作流...

    前端开源库-winston-format

    `winston-format`的核心功能在于提供了一组易于使用的格式化函数,这些函数可以组合使用,创建出满足特定需求的日志格式。以下是一些常见的`winston-format`的格式化选项: 1. **`printf`格式化器**: 这是最基础的...

    论文研究 - True Beam STx直线加速器的Winston-Lutz-Gao测试

    Brainlab公司生产的“无框SRS QA目标指示器”被用作幻像,该指示器的中心嵌入了3.5毫米金属球。 图像是通过内置线性门户网站的加速器获取的,并由ARIA中的图像浏览器直接进行了分析。 我们发现,转移距直线加速器等...

    winston-cloudwatch:使用Winston将日志发送到Amazon Cloudwatch

    使用将日志发送到Amazon Cloudwatch 如果您在2.0.0版之前使用此库,请查看的和更新的。 产品特点 记录到AWS CloudWatchLogs 多层记录 如果不存在则创建组/流 等待上载成功,然后尝试下一个 截断太大的消息 分批...

    nest-winston-module:用于Winston的Nest模块包装器,可提供多种类型的记录器

    引入WinstonModule至nest应用的根module (通常是AppModule ),并使用forRoot()方法来配置nest-winston-module 。创建参数与winston.createLogger方法所需的参数一致,可参考winston官方文档: import { Module }...

    winston-0.9.10.jar

    winston-0.9.10.jar 基于ARMLINUX的javaweb应用开发包。

    nodejs 日志模块winston的使用方法

    在使用 nodejs winston 模块中,加上相关的两个模块,事倍功半。 express-winston winston-daily-rotate-file express-winston 是 express-winston 的 winston 的增加版, 是作为 express 的中间件来打印日志,...

    nuxt-winston-log:Nuxt模块,用于使用Winston记录SSR错误

    nuxt-winston-log 向您的Nuxt应用程序添加winston / logging的模块。 该模块仅支持以通用模式运行的Nuxt应用程序。 默认情况下,捕获以下事件: error级别:通过Nuxt中间件挂钩的SSR错误 info级别:Nuxt应用程序...

    winston-mongodb:适用于Winston的MongoDB

    如果要在wingo-mongodb 1.4.x版中使用winston-mongodb,请使用winston-mongodb &lt;1.x。 对于mongodb 2.x,请使用winston-mongodb &lt;3.x。动机tldr;? :将代码库分成可一起使用的小模块。 代码库随着贡献和其他...

    nest-winston:Nest模块包装器形式的Winston记录器

    将WinstonModule导入到根AppModule并使用forRoot()方法对其进行配置。 此方法接受与winston包中的函数相同的选项对象: import { Module } from '@nestjs/common' ; import { WinstonModule } from 'nest-winston' ...

    winston-logstash-transport:用winston @ 3替代winston-logstah和winston-logstash-udp

    此winston传输已从winston-logastah和winston-logstash-udp重写,以使用winston @ 3的新传输行为。 在可能的情况下,已对其进行更新以模仿原始模块的行为。 已经进行了一些更改,以允许传输处理到LogStash的TCP或...

    Node.js-winston-一个node.js多传输异步日志库

    new winston.transports.File({ filename: 'application.log' }) ] }); ``` **3. 日志级别与过滤** 你可以根据需要设置不同级别的日志,例如: ```javascript logger.info('This is an info message'); logger....

    Morgan_Winston_demo:Node JS项目,用于演示使用morga和winston进行日志记录

    例如,创建一个文件transport:`const fileTransport = new winston.transports.File({ filename: 'application.log', level: 'info' })`。 4. **日志记录**:在业务逻辑中,你可以通过调用Winston的方法来记录日志...

    winston-churchill:Web组件创作库

    温斯顿·丘吉尔##用法安装温斯顿·丘吉尔bower install ... 其中一项附加功能是使用winston-churchill扩展来扩展Web组件的原型。 TODO:允许注册时间延长。 ### WC.extensions extensions属性是winston-church

Global site tag (gtag.js) - Google Analytics