首页 > 其他分享 >airlift 简单试用

airlift 简单试用

时间:2023-01-27 20:12:17浏览次数:72  
标签:xml java app airlift add 试用 简单 new

airlift 使用简单,而且周边集成也不少,只是官方文档比较少,使用最多的也是trino 以及presto 中,trino 代码基于airlift 框架的开发代码看起来是
很简洁的

项目结构

 
├── README.md
├── app # 实际应用,使用airlift 开发的,包含了静态页面以及简单的rest api 
│   ├── pom.xml
│   └── src
│       ├── main
│       │   ├── java
│       │   │   └── com
│       │   │       └── dalong
│       │   │           ├── App.java
│       │   │           └── MyDemoResource.java
│       │   └── resources
│       │       └── webapp
│       │           ├── app.css
│       │           └── index.html
│       └── test
│           └── java
├── package # 专门用来进行项目打包使用的,基于了一个类似maven assembly 的插件provisio,此插件在trino 中也有使用到
│   ├── pom.xml
│   ├── src
│   │   ├── etc
│   │   │   └── config.properties
│   │   ├── main
│   │   │   ├── java
│   │   │   ├── provisio
│   │   │   │   └── myapp.xml
│   │   │   └── resources
│   │   └── test
│   │       └── java
├── pom.xml

代码简单说明

  • app 部分
    主要是要一个rest api ,包装了静态页面以及应用的启动入口(airlift 自带的bootstrap 能力)
    App.java
 
public class App {
    public static void main(String[] args) {
        Bootstrap app = new Bootstrap(ImmutableList.<Module>builder()
                .add(new NodeModule())
                .add(new Module() {
                    @Override
                    public void configure(Binder binder) {
                       // node 环境配置,还是比较重要的
                        configBinder(binder).bindConfigDefaults(NodeConfig.class, nodeConfig -> {
                           nodeConfig.setEnvironment("test");
                        });
                        // rest api 注册
                        jaxrsBinder(binder).bind(MyDemoResource.class);
                        // 静态页面配置
                        httpServerBinder(binder).bindResource("/","webapp").withWelcomeFile("index.html");
                        httpServerBinder(binder).bindResource("/dalongdemoapp","webapp").withWelcomeFile("index.html");
                    }
                })
                .add(new HttpServerModule())
                .add(new JsonModule())
                .add(new JaxrsModule())
                .add(new EventModule())
                .build());
        app.initialize();
    }
}

MyDemoResource.java

@Path("/")
public class MyDemoResource
{
    private static final Logger log = Logger.get(MyDemoResource.class);
 
    @GET
    @Path("/v1/info")
    @Produces(APPLICATION_JSON)
    public String getInfo(
            @Context HttpServletRequest servletRequest) {
       return  "dalongdemo";
    }
  • package 部分
    实际上参考了trino 的打包
    package/src/main/provisio/myapp.xml
 
<runtime>
    <!-- Target -->
    <archive name="${project.artifactId}-${project.version}.tar.gz" hardLinkIncludes="**/*.jar" />
 
    <!-- Server -->
    <artifactSet to="lib">
        <artifact id="${project.groupId}:app:${project.version}" />
    </artifactSet>
 
</runtime>

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.dalong</groupId>
        <artifactId>mywebapp-airlift</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
 
    <artifactId>package</artifactId>
 
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.dalong</groupId>
            <artifactId>app</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>ca.vanzyl.provisio.maven.plugins</groupId>
                <artifactId>provisio-maven-plugin</artifactId>
                <version>1.0.19</version>
                <executions>
                    <execution>
                        <id>unpack</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>provision</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
 
</project>

说明

airlift 实际上就是对于不少现有框架的包装,使用起来还是很方便的,值得试试,上边app pom 文件就没贴,需要的可以github 查看

参考资料

https://github.com/airlift/airlift/tree/master/docs
https://github.com/rongfengliang/airlift-learning
https://github.com/jvanzyl/provisio

标签:xml,java,app,airlift,add,试用,简单,new
From: https://www.cnblogs.com/rongfengliang/p/17069256.html

相关文章

  • Spring长轮询DeferredResult简单用法以及SpringMVC对于后置结果处理
    简单研究下spring长轮训 DeferredResult的用法以及简单的原理。如果让自己设计,可能就是会用一些异步+spring的扩展机制来实现。1.DeferredResult简单用法1.新建测......
  • Spring长轮询DeferredResult简单用法以及SpringMVC对于后置结果处理
    简单研究下spring长轮训 DeferredResult的用法以及简单的原理。如果让自己设计,可能就是会用一些异步+spring的扩展机制来实现。1.DeferredResult简单用法1.新建测......
  • BPF的简单学习
    BPF的简单学习前言本来规划过年期间学习一下bpf相关的内容但是因为自己没有坚持学习,所以到最后一天才开始整理.本来想深入学习一下相关内容,但是已经感觉已经无法完......
  • C语言实现一个简单的单向链表list
    C语言实现一个简单的单向链表listcheungmine用C语言实现一个简单实用的单向链表list,具有一定的实际意义。尤其我们不想使用STL里面的list<...>类的时候。我实现的这个list,结......
  • Windows下安装Miniconda及配置和简单使用
    一、下载Miniconda根据自己的需求下载Anaconda或者Miniconda。我这里选择轻量化的Miniconda。二、安装Miniconda根据安装程序提示,一直点击下一步即可。三、在......
  • C语言--简单的爱心代码
    新手都能敲出来的爱心代码#include<stdio.h>#include<stdlib.h>//#include<string.h>intmain(){floatx,y,a;for(y=1.5;y>-1.5;y-=0.1){for(x=-1......
  • 「LOJ3673」简单数据结构
    题目点这里看题目。给定一个长度为\(n\)​的非负整数序列\(a\),有\(q\)次操作,每次操作类型为如下三种之一:给定\(v\),表示\(\forall1\lei\len\),令\(a_i\gets......
  • airlift java rest 服务框架
    airlift是一个轻量,快速的javarest服务开发框架,属于trino的基础框架,airlift集成了不少轻量的工具包同时包含了不少不错的实践(比如配置管理,组件生命周期管理,http客户端......
  • 【六袆 - Java】在本地搭建easyexcel源码环境;easyexcel提供的demo单元测试用例完美运
    在本地搭建easyexcel源码环境​​EasyExcel​​​​本地环境搭建​​​​最新版本3.1.5,依赖问题,解决方案​​​​junit-读Excel​​EasyExcel本篇从github或官方文档来源参......
  • LINUX-chart图表简单操作
    添加模块   添加头文件  需要在窗体上放置 QChartView控件,工具箱没找到,需要在别的项目复制过来一个这个控件。代码MainWindow::MainWindow(QWidget*pare......