活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业服务商合作专区 国家云助力中小企业腾飞,高额上云补贴重磅上线
  • 出海产品促销专区 NEW 爆款云主机低至2折,高性价比,不限新老速来抢购!
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      文档中心

      函数计算

      函数计算

        • 产品公告
        • 【产品变更】函数计算服务正式商业化公告
        • 产品动态
        • DeepSeek专题
        • DeepSeek专题导航
        • 图解:DeepSeek与公有云深度融合
        • 从基础设施到智能中枢:DeepSeek如何重塑公有云服务价值链
        • 高性能GPU云主机助力DeepSeek深度应用
        • 天翼云SD-WAN与DeepSeek超强联动,开启云上高效互联新时代
        • 实践指南:DeepSeek驱动高效能云生态
        • GPU云主机/弹性云主机:零基础搭建DeepSeek云端环境指南
        • GPU物理机:物理机搭建DeepSeek指南
        • SD-WAN跨境:SD-WAN助力DeepSeek模型定向加速
        • 智算容器:云容器引擎与DeepSeek融合实践
        • 函数计算:天翼云函数计算与DeepSeek大模型
        • 天翼云函数计算一键部署DeepSeek大模型
        • Q&A:典型问题解析与策略应对
        • 产品介绍
        • 什么是函数计算
        • 应用场景
        • 基本概念
        • 产品功能
        • 产品优势
        • 计费说明
        • 计费概述
        • 按量付费
        • 资源包
        • 试用资源包
        • 欠费说明
        • 计费FAQ
        • 快速入门
        • 新手入门
        • 用户指南
        • 应用管理
        • 应用中心简介
        • 管理应用
        • 管理环境
        • 管理流水线
        • 函数创建
        • 函数配置
        • 版本管理
        • 别名管理
        • 配置环境变量
        • 配置层
        • 配置网络
        • 配置固定公网IP地址
        • 配置存储
        • 配置ZOS对象存储
        • 配置NAS文件存储
        • 配置预留实例
        • 配置单实例并发度
        • 代码开发
        • 代码开发概述
        • Node.js
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • Python
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • Java
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • Go
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • C#
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • PHP
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • 自定义运行时
        • 环境说明
        • 基本原理
        • Web函数
        • 上下文和日志格式
        • 容器镜像函数
        • 容器镜像函数介绍
        • 创建容器镜像函数
        • 上下文及日志格式
        • 事件触发
        • 触发器简介
        • 触发器管理
        • 触发器事件消息格式
        • 定时触发器
        • HTTP触发器
        • 云原生网关触发器
        • Kafka触发器
        • RocketMQ触发器
        • 事件总线类触发器
        • 概述
        • 日志触发器
        • 对象存储触发器
        • RabbitMQ触发器
        • MQTT触发器
        • 函数调用
        • 访问函数
        • 同步调用
        • 异步调用
        • 功能概览
        • 重试策略
        • 结果回调
        • 异步任务
        • 函数实例
        • 实例类型及使用模式
        • 可观测性
        • 监控指标
        • 实例指标
        • 函数指标
        • 日志
        • 配置日志
        • 打印函数日志
        • 高级功能
        • 域名管理
        • 配置自定义域名
        • 为自定义域名配置JWT认证鉴权
        • 层管理
        • 官方层使用示例
        • 自定义层使用示例
        • 弹性管理
        • 并发实例上限配置
        • 实例伸缩规则及限制
        • 安全与合规
        • IAM访问控制
        • 身份管理
        • 基于身份的权限策略
        • 服务内联委托
        • 权限访问管理
        • 授权函数计算访问其他云函数
        • 授权事件源访问函数计算
        • 常见问题
        • 开通类
        • 通用类
        • 应该什么时候使用函数计算,什么时候使用弹性云主机?
        • 是否可以访问运行函数的机器?
        • 代码开发
        • 可以使用什么语言编写函数?
        • 如何保证代码的安全?
        • 运行环境中所依赖的包如何自动安装?
        • 函数管理
        • 什么是VPC?
        • 如何监控函数执行?
        • 如何用函数访问VPC内的资源?
        • 函数可以访问多少个VPC?
        • 在VPC中的函数如何访问公网?
        • 函数运行时间超过函数最大Timeout时间怎么办?
        • 函数执行超时,报错Function time out after怎么办?
        • 事件触发
        • 触发器不能正常触发函数执行怎么办?
        • 函数实例
        • 如何弹性扩展函数的执行?
        • 如何让实例一直存活不销毁,消除冷启动延时的影响?
        • 如何通过ipv6网络访问函数?
        • 访问其他服务
        • 在函数中如何访问其他服务?
        • 最佳实践
        • 通过函数计算访问VPC内的MySQL实例
        • 函数计算Java冷启动优化最佳实践
        • 通过函数计算部署通义千问
        • API参考
        • API使用说明
        • 相关协议
        • 函数计算产品服务协议
        • 函数计算服务等级协议
          无相关产品

          本页目录

          帮助中心函数计算用户指南代码开发Java请求处理程序(Handler)
          请求处理程序(Handler)
          更新时间 2024-12-10 11:34:53
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          最近更新时间: 2024-12-10 11:34:53
          分享文章
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          本文介绍如何使用Java请求处理程序响应接收到的事件并执行相应的业务逻辑。

          请求处理程序

          请求处理程序是您提供的一个方法。当您的函数被调用时,函数计算会运行该方法处理请求。

          您可以通过函数计算控制台页面配置请求处理程序,对于Java语言的函数,请求处理程序需配置为 [包名].[类名]::[方法名]。例如,您的包名为example,类型为App,方法名为handleRequest,则请求处理程序可配置为 example.App::handleRequest。

          处理程序接口

          您在使用Java编程时,必须要实现函数计算提供的接口类,c-runtime-core库为请求处理程序定义了以下接口。

          • StreamRequestHandler
            以流的方式接收输入的事件请求对象并返回执行结果。您需要从输入流中读取调用函数时的输入,处理完成后把函数执行结果写到输出流中来返回。
          • PojoRequestHandler
            以泛型的方式接收输入的事件请求对象并返回执行结果。您可以自定义输入和输出的类型,但是输入和输出的类型必须是POJO类型。
          • HttpRequestHandler
            以标准的Servlet协议方式接收HTTP触发器的请求并响应执行结果。请求会封装成 HttpServletRequest对象,并通过 HttpServletResponse对象来返回响应头和响应体。

          示例:StreamRequestHandler

          一个最简单的StreamRequestHandler示例如下所示:

          package example;
          
          
          import com.ctg.faas.runtime.*;
          import example.util.ServletUtil;
          
          import java.io.IOException;
          import java.io.InputStream;
          import java.io.OutputStream;
          
          public class StreamHandler implements StreamRequestHandler {
          
              @Override
              public void handleRequest(InputStream input, OutputStream output, Context context) throws IOException {
                  FunctionComputeLogger logger = context.getLogger();
                  logger.info("StreamRequestHandler hello");
          
                  String inStr = ServletUtil.getInputString(input);
                  logger.info("input :"+inStr);
                  String req = String.format("input: %s\n", inStr);
          
                  output.write(req.getBytes());
                  output.flush();
                  output.close();
              }
          }
          
          • 包名和类名
            包名和类名可以自定义。

          • 实现的接口
            您的代码中必须要实现函数计算预定义的接口。上述的代码示例中实现了 StreamRequestHandler,其中的input参数为调用函数时传入的数据,output参数用于返回函数的执行结果。

          • Context参数
            Context参数中包含一些函数的运行时信息(例如RequestId、临时AccessKey等),其类型是 com.ctg.faas.runtime.Context。

          • 返回值
            实现 StreamRequestHandler接口的函数通过output参数返回执行结果。

          • 引入的依赖
            其中用到的 com.ctg.faas.runtime包的maven依赖坐标如下:

            <dependency>
              <groupId>com.ctg.faas.runtime</groupId>
              <artifactId>fc-runtime-core</artifactId>
              <version>1.0.0-SNAPSHOT</version>
            </dependency>
            

          示例:PojoRequestHandler

          一个最简单的PojoRequestHandler示例如下所示:

          // -------- PojoHandler.java -------- 
          
          package example;
          
          import com.ctg.faas.runtime.Context;
          import com.ctg.faas.runtime.PojoRequestHandler;
          import example.model.SimpleRequest;
          import example.model.SimpleResponse;
          
          public class PojoHandler implements PojoRequestHandler<SimpleRequest, SimpleResponse> {
          
              @Override
              public SimpleResponse handleRequest(SimpleRequest request, Context context) {
                  String message = "Hello, I am " + request.getFirstName() + " " + request.getLastName();
                  return new SimpleResponse(message);
              }
          }
          
          
          // -------- SimpleRequest.java -------- 
          
          package example.model;
          
          public class SimpleRequest {
              String firstName;
              String lastName;
          
              public String getFirstName() {
                  return firstName;
              }
          
              public void setFirstName(String firstName) {
                  this.firstName = firstName;
              }
          
              public String getLastName() {
                  return lastName;
              }
          
              public void setLastName(String lastName) {
                  this.lastName = lastName;
              }
          
              public SimpleRequest() {}
              public SimpleRequest(String firstName, String lastName) {
                  this.firstName = firstName;
                  this.lastName = lastName;
              }
          }
          
          
          // -------- SimpleResponse.java --------
          
          package example.model;
          
          public class SimpleResponse {
              String message;
          
              public String getMessage() {
                  return message;
              }
          
              public void setMessage(String message) {
                  this.message = message;
              }
          
              public SimpleResponse() {}
              public SimpleResponse(String message) {
                  this.message = message;
              }
          }
          

          示例:使用HTTP触发器调用HTTP函数

          package example;
          
          import com.alibaba.fastjson2.JSON;
          import com.alibaba.fastjson2.JSONObject;
          import com.ctg.faas.runtime.Context;
          import com.ctg.faas.runtime.HttpRequestHandler;
          import example.util.ServletUtil;
          
          import java.io.IOException;
          import java.io.OutputStream;
          import java.util.logging.Logger;
          import javax.servlet.ServletException;
          
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          
          public class HttpApp implements HttpRequestHandler {
          
              private static final Logger logger = Logger.getLogger(HttpApp.class.getName());
          
              @Override
              public void handleRequest(HttpServletRequest request, HttpServletResponse response, Context context)
                      throws IOException, ServletException {
                  String requestPath = (String) request.getAttribute("FC_REQUEST_PATH");
                  String requestURI = (String) request.getAttribute("FC_REQUEST_URI");
                  String requestClientIP = (String) request.getAttribute("FC_REQUEST_CLIENT_IP"); 
                  
                  response.setStatus(200);
                  response.setHeader("header1", "value1");
                  response.setHeader("header2", "value2");
                  response.setHeader("Content-Type", "text/plain");
                  context.getLogger().info("hello");
                  logger.info("loger hello");
                  String body = ServletUtil.getBodyData(request);
                  JSONObject json =  JSON.parseObject(body);
                  context.getLogger().info("body:"+json.toString());
                  String req = String.format("Path: %s\n Uri: %s\n IP: %s\n", requestPath, requestURI, requestClientIP);
                  OutputStream out = response.getOutputStream();
                  out.write((req).getBytes());
                  out.flush();
                  out.close();
              }
          }
          
          文档反馈

          建议您登录后反馈,可在建议与反馈里查看问题处理进度

          鼠标选中文档,精准反馈问题

          选中存在疑惑的内容,即可快速反馈问题,我们会跟进处理

          知道了

          上一篇 :  环境说明
          下一篇 :  上下文
          搜索 关闭
          ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
          公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
          备案 京公网安备11010802043424号 京ICP备 2021034386号
          ©2025天翼云科技有限公司版权所有
          京ICP备 2021034386号
          备案 京公网安备11010802043424号
          增值电信业务经营许可证A2.B1.B2-20090001
          用户协议 隐私政策 法律声明