基于docker的apisix网关的java插件开发

这篇具有很好参考价值的文章主要介绍了基于docker的apisix网关的java插件开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 创建java插件项目

1.1 从github上获取demo

java插件示例demo

1.2 改造demo

        将java插件示例demo拉取下来后,我们找到DemoFilter.java文件,在这个文件中可以修改过滤器的名称,为了方便测试,其他的文件暂时不需要修改。后期等过滤器调通后,可在过滤器中编写代码来实现自己的业务需求。过滤器名称为AuthFilter,后面在apisix路由中配置过滤插件时需要用到。

@Override
public String name() {
    return "AuthFilter";
}

修改项目java运行及maven打包环境的jdk均为jdk11。

<properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

2 快速部署

2.1 重新制作apisix镜像

在服务器上创建/home/capability_open_platform_filter目录,上传java插件jar包,dockerfile文件,jdk11文件至目录。
java开发apisix插件,编程技术,apisix

Dockerfile

FROM apache/apisix:3.0.0-centos
# 指定镜像创建者信息
MAINTAINER cisco
# 将宿主机的文件拷贝到容器的具体目录中。这里使用ADD,拷贝后自动解压,如果不需要解压,可以使用COPY
ADD jdk-11.0.17_linux-x64_bin.tar.gz /jdk
ADD gateway-1.0-SNAPSHOT.jar /opt/apisix-runner-bin/gateway-1.0-SNAPSHOT.jar
## 配置jdk环境
ENV JAVA_HOME /jdk/jdk-11.0.17
ENV PATH ${JAVA_HOME}/bin:$PATH
# 设置字符集
ENV LANG C.utf8

构建镜像

docker build -t apisix-jdk11 .

2.2 修改/apisix-docker/example/apisix_conf/config.yaml

开启apisix网关ext-plugin-pre-req请求前置插件,ext-plugin-post-resp响应后置插件,并配置java插件运行指令。

plugins:
  - ext-plugin-pre-req     # 请求前置插件
  - ext-plugin-post-resp   # 响应后置插件

ext-plugin:
  cmd: ['java', '-Dfile.encoding=UTF-8', '-jar', '/opt/apisix-runner-bin/gateway-1.0-SNAPSHOT.jar']

java开发apisix插件,编程技术,apisix

2.3 修改/apisix-docker/example/docker-compose.yml

修改默认的apisix镜像为我们新制作的镜像名称

apisix:
  image: apisix-jdk11:latest

java开发apisix插件,编程技术,apisix

2.4 重新启动apisix网关

切换目录至/usr/local/apisix-docker/example,执行指令docker-compose -p docker-apisix up -d重启启动apisix网关。切换目录至/usr/local/apisix-docker/example/apisix_log,执行指令tail -200f error.log查看java插件是否运行成功,看到如下图控制台打印的信息,就说明java插件启动成功。
java开发apisix插件,编程技术,apisix

3 apisix网关路由配置插件

java开发apisix插件,编程技术,apisix

3.1 ext-plugin-pre-req

ext-plugin-pre-req插件用于在执行内置 Lua 插件之前和在 Plugin Runner 内运行特定的 External Plugin。

"ext-plugin-pre-req": {
  "allow_degradation": false,
  "conf": [
    {
      "name": "AuthFilter",
      "value": "authFilter"
    }
  ],
  "disable": false
}

3.2 ext-plugin-post-resp

ext-plugin-post-resp 插件用于在执行内置 Lua 插件之前和在 Plugin Runner 内运行特定的 External Plugin。
ext-plugin-post-resp 插件将在请求获取到上游的响应之后执行。

"ext-plugin-post-resp": {
  "allow_degradation": false,
  "conf": [
    {
      "name": "AuthFilter",
      "value": "authFilter"
    }
  ],
  "disable": false
}

5 验证java插件是否生效

        发起apisix网关的请求,请求匹配到具体的路由,路由中配置了拦截器,切换目录至/usr/local/apisix-docker/example/apisix_log,执行指令tail -200f error.log,查看是否打印插件中的日志信息,打印了代表插件执行成功。

6 参考博客

1.基于docker的apisix网关的java插件开发
2.Apache APISIX v3.0 中文文档
3.java插件demo
4.apisix官网文章来源地址https://www.toymoban.com/news/detail-805832.html

到了这里,关于基于docker的apisix网关的java插件开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Apache Apisix网关系统历史漏洞复现分析

    Apache APISIX 是一个动态、实时、高性能的 API 网关, 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。 开源项目地址:https://github.com/apache/apisix; 官方文档地址:https://apisix.apache.org/zh/docs/apisix/getting-started/README/; 你可以把 Apache

    2024年02月19日
    浏览(32)
  • Nginx、Kong、Apisix、Gateway网关比较

    Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。能够支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定,由C语言编写。支持负载均衡、限流熔断、热部署、安全认证等。 应用场景 http 服务器:独立提供 http 服务,用于

    2024年02月14日
    浏览(29)
  • APISIX网关系列之Dashboard配置路由(二)

    APISIX作为系列介绍,将它所有的功能按照职责划分输出到每篇文章中。 上篇文章作为系列的开篇文章对APISIX进行了分析和安装介绍,查看详情地址:https://blog.csdn.net/m0_38039437/article/details/129175197 这篇文章主要介绍使用APISIX提供的Dashboard配置路由、服务、上游等内容。 2.1.Das

    2024年01月17日
    浏览(24)
  • 使用开源 MaxKey 与 APISIX 网关保护你的 API

    Apache APISIX 是 Apache 软件基金会下的云原生 API 网关,它兼具动态、实时、高性能等特点,提供了负载均衡、动态上游、灰度发布(金丝雀发布)、服务熔断、身份认证、可观测性等丰富的流量管理功能。我们可以使用 Apache APISIX 来处理传统的南北向流量,也可以处理服务间的

    2024年02月06日
    浏览(33)
  • 开源浪潮下,Apache APISIX 如何成为全球最活跃 API 网关

    白泽平,Apache APISIX PMC 成员,目前主要在 APISIX 和周边项目 APISIX Dashboard 上进行相关贡献。本文整理自阿里云「中间件开发者 Meetup」中的议题分享。 Apache APISIX 是一个高性能的、动态的、实时的 API 网关,它是基于 NGINX 和 OpenResty 进行实现的。 作为一个脱胎于 NGINX 和 OpenRes

    2024年02月05日
    浏览(35)
  • 详解 APISIX Lua 动态调试插件 inspect

    作者罗锦华,API7.ai 技术专家/技术工程师,开源项目 pgcat,lua-resty-ffi,lua-resty-inspect 的作者。 原文链接 Apache APISIX 有很多 Lua 代码,如何在运行时不触碰源代码的情况下,检查代码里面的变量值? 修改 Lua 源码来调试有如下缺点: 生产环境不允许也不应该修改源码 修改源码

    2023年04月14日
    浏览(30)
  • 从零开发基于ASM字节码的Java代码混淆插件XHood

    因在公司负责基础框架的开发设计,所以针对框架源代码的保护工作比较重视,之前也加入了一系列保护措施 例如自定义classloader加密保护,授权license保护等,但都是防君子不防小人,安全等级还比较低 经过调研各类加密混淆措施后,决定自研混淆插件,自主可控,能够贴

    2024年02月06日
    浏览(25)
  • 【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(基础编程篇)

    Preconditions(前置条件):让方法调用的前置条件判断更简单 。 Guava在Preconditions 类中提供了若干前置条件判断的实用方法,我们强烈建议在 Eclipse 中静态导入这些方法。每个方法都有三个变种: 当方法没有额外参数时,抛出的异常中不包含错误消息,这会使得调用方很难确

    2024年02月07日
    浏览(44)
  • 【JAVA开发面试】如何处理并发访问如何进行代码的单元测试Java多线程编程消息中间件设计模式技术难题是如何解决的

    【 点我-这里送书 】 本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题 中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明

    2024年02月03日
    浏览(39)
  • 在Centos Stream 9中使用docker的方式安装APISIX、APISIX-DASHBOARD

    1.1.1、清除旧版本的docker 1.1.2、安装docker的依赖 1.1.3、安装gcc 1.1.4、添加软件源国内镜像 1.1.5、更新yum索引 1.1.6、安装docker-ce 1.1.7、启动docker,并设置开机启动 1.1.8、验证docker的安装是否成功 1.2.1、docker和docker-compose的兼容性 1.2.2、下载docker-compose的二进制文件         方式一

    2024年02月01日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包