首页 > 系统相关 >nginx-clojure java 集成试用

nginx-clojure java 集成试用

时间:2023-01-03 12:00:49浏览次数:55  
标签:java nginx html jvm clojure ###

主要是基于java 开发一个简单的扩展,学习下流程

java 项目

  • 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>
 
    <groupId>com.dalong</groupId>
    <artifactId>nginx-clojure-java-learning</artifactId>
    <version>1.0-SNAPSHOT</version>
 
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>nginx-clojure</groupId>
            <artifactId>nginx-clojure</artifactId>
            <version>0.5.3</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <repositories>
        <repository>
            <id>clojars.org</id>
            <url>https://clojars.org/repo</url>
        </repository>
    </repositories>
    <build>
        <finalName>javaapp</finalName>
    </build>
</project>

MyApp.java

package com.dalong;
 
import nginx.clojure.java.ArrayMap;
import nginx.clojure.java.NginxJavaRingHandler;
 
import java.io.IOException;
import java.util.Map;
 
import static nginx.clojure.MiniConstants.*;
 
public class MyApp implements NginxJavaRingHandler {
    @Override
    public Object[] invoke(Map<String, Object> map) throws IOException {
        return new Object[] {
                NGX_HTTP_OK, //http status 200
                ArrayMap.create(CONTENT_TYPE, "text/plain"), //headers map
                "Hello, Java & Nginx!"  //response body can be string, File or Array/Collection of string or File
        };
    }
}

运行

基于docker-compose

  • docker-compose 文件
version: '3'
services:
  app: 
     image: dalongrong/nginx-clojure-0.5.3:latest
     volumes: 
     - ./nginx.conf:/usr/local/nginx/conf/nginx.conf
     - ./appjars:/opt/appjars
     ports:
     - 80:80
  • nginx.conf
###you can uncomment next two lines for easy debug
###Warning: if master_process is off, there will be only one nginx worker running. Only use it for debug propose.
 
#daemon  off;
 
#master_process  off;
 
user  root;
worker_processes  1;
 
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
#pid        logs/nginx.pid;
   
events {
    worker_connections  1024;
}
   
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    #gzip  on;
    jvm_path auto;
    ### Set my app jars and resources, it must include nginx-clojure runtime jar,e.g. nginx-clojure-0.5.3.jar and 
    ### for clojure user clojure runtime jar is also needed.
    ### See http://nginx-clojure.github.io/directives.html#jvm_classpath
    # 添加自定义classpath
    jvm_classpath "libs/*:jars/*:/opt/appjars/*";
 
    ###jvm heap memory
    #jvm_options "-Xms1024m";
    #jvm_options "-Xmx1024m";
 
    #for enable java remote debug uncomment next two lines
    #jvm_options "-Xdebug";
    #jvm_options "-Xrunjdwp:server=y,transport=dt_socket,address=840#{pno},suspend=n";
 
    ###threads number for request handler thread pool on jvm, default is 0. 
    ###check more details from 
    #jvm_workers 8;
 
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
       # 自己开发的java 方法
       location /dalongdemo {
          content_handler_type 'java';
          content_handler_name 'com.dalong.MyApp';
       }
       location /clojure {
          handler_type 'clojure';
          handler_code ' 
                        (fn[req]
                          {
                            :status 200,
                            :headers {"content-type" "text/plain"},
                            :body  "Hello Clojure & Nginx!" 
                            })
          ';
       }  
    }
}
  • 运行效果

 

 

说明

nginx-clojure 很不错,而且很强大,对于nginx 的扩展开发我们又多了一种可选的方法

参考资料

https://nginx-clojure.github.io/installation.html
https://nginx-clojure.github.io/quickstart.html
https://github.com/rongfengliang/nginx-clojure-learning
https://github.com/rongfengliang/nginx-clojure-dockerfile

标签:java,nginx,html,jvm,clojure,###
From: https://www.cnblogs.com/rongfengliang/p/17021663.html

相关文章

  • JavaScript 深拷贝
    在进行赋值之前,为指针类型的数据成员另辟了一个独立的内存空间,实现真正内容上的拷贝。这种拷贝称为深拷贝。————百度百科源码⚠还有部分类型不支持typescript:/......
  • Java面试问答总结
    问:什么是并发和并行?答:并发是在单核操作系统中,CPU通过切分时间片交替执行不同的线程;并行是在多核操作系统中,多个CPU同时执行不同的线程。并发和并行的目的都是为了最大化的......
  • ubuntu22.04 安装nginx
    1、使用apt-get安装nginx(得机器能联网才行)#切换到root用户#切换到root用户sudo-i#更新apt源apt-getupdate#安装nginxapt-getinstallnginx-y......
  • java中私有构造函数的作用
    使用私有构造函数强化singleton属性。方法一:公有的静态成员是一个final域,成员的声明很清楚的表达了这个类是一个singleton。publicclassElvis{publicstatic......
  • java内存管理
    1.java是如何管理内存的 Java的内存管理就是对象的分配和释放问题。(两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型......
  • NGINX-文件目录浏览服务
    局域网:文件服务、目录浏览、允许跨域conf/nginx.confhttp{server{}+includeservers/*.conf;}conf/servers/source.confserver{listen84;i......
  • Java程序员必看的 13 本 Java 书籍!
    关乎于程序员,除了做项目来提高自身的技术,还有一种提升自己的专业技能就是:多!看!书! 毕竟,书是学习的海洋呢!So,Java程序员你们准备好了吗?双手奉上Java程序员必读之热门书单。......
  • Centos安装Nginx
    Centos安装Nginx版本区别常用版本分为四大阵营Nginx开源版Nginxplus商业版openrestyTengine编译安装先下载Nginx开源版比如:nginx-1.22.1.tar.gz借助......
  • 初识Java
    初识JavaJava的特性和优势简单性就是c++语法的纯净版。没有头文件,指针运算,结构,联合,操作符重载,虚基类等等。面向对象面向对象是一种程序设计技术,他将重点放在数据(即对......
  • nginx的负载均衡如何配置
    负载均衡 nginx的负载均衡有4种模式:1)、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 2)、weight 指定轮询几率,weight......