registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime

オープン
#614 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
25/100
issue の種類
バグ
明瞭さ
説明が足りない
活発さ
停滞
技術スタック
aws, java, spring-boot
領域
api, backend, cloud

調査の方向性

StreamLambdaHandler とその ResourceConfig 登録から始め、次に build.gradle を調べて Jersey、Spring Boot、AWS serverless container の依存関係を確認します。警告を再現し、ランタイムのプロバイダー設定を追跡します。PingResource が認識され、報告されたリクエストが SERVER-runtime 警告なしで処理されれば完了です。

索引モデルが issue の本文から書いたものです。

説明

Implementation: Jersey

Hello,

I'm encountering an issue where my JAX-RS resource is not being recognized despite having correct JAX-RS annotations.

As I am getting error:

WARNING: A provider bingadsapi.resource.PingResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider bingadsapi.resource.PingResource will be ignored. 

Here is the code for my JAX-RS resource:

package bingadsapi.resource;

import java.util.Map;
import java.util.HashMap;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

@Path("/ping")
public class PingResource {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.WILDCARD)
    public Response ping() {
        Map<String, String> pong = new HashMap<>();
        pong.put("pong", "Hello, World!");
        return Response.status(200).entity(pong).build();
    }
}

my build.gradle

apply plugin: 'java'

repositories {
  mavenLocal()
  mavenCentral()
}

group = 'bingadsapi'
version = '1.0-SNAPSHOT'

sourceCompatibility = '1.8'
targetCompatibility = '1.8'

repositories {
  mavenLocal()
  mavenCentral()
}

dependencies {

  implementation ('org.springframework.boot:spring-boot-starter-web:2.6.2') {
    exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
  }
  implementation 'com.amazonaws.serverless:aws-serverless-java-container-springboot2:[1.4,)'
  implementation 'com.amazonaws.serverless:aws-serverless-java-container-springboot2:1.9.3'
  implementation 'io.symphonia:lambda-logging:1.0.1'

  testImplementation 'org.glassfish.main.extras:glassfish-embedded-all:3.1.2.2'

  implementation platform('com.amazonaws:aws-java-sdk-bom:1.11.1000')
  implementation 'com.amazonaws:aws-java-sdk-s3'
  implementation 'com.amazonaws:aws-java-sdk-secretsmanager'

  compile 'com.googlecode.json-simple:json-simple:1.1.1'

  implementation 'com.microsoft.bingads:microsoft.bingads:13.0.1'
  implementation 'org.apache.commons:commons-text:1.4'
  implementation 'com.amazonaws:aws-lambda-java-core:1.2.1'
//  implementation 'com.amazonaws.serverless:aws-serverless-java-container-jersey:[1.0,)'
  implementation 'com.amazonaws.serverless:aws-serverless-java-container-jersey:1.9'
  implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.4'
  implementation 'io.symphonia:lambda-logging:1.0.3'

  implementation ('org.glassfish.jersey.media:jersey-media-json-jackson:2.36') {
    exclude group: 'com.fasterxml.jackson.core', module: 'jackson-annotations'
    exclude group: 'com.fasterxml.jackson.core', module: 'jackson-databind'
    exclude group: 'com.fasterxml.jackson.core', module: 'jackson-core'
  }

  implementation ('org.glassfish.jersey.inject:jersey-hk2:2.36') {
    exclude group: 'javax.inject', module: 'javax.inject'
  }

  testImplementation 'junit:junit:4.13.2'
}

task assembleZip(type: Zip) {
  from compileJava
  from processResources
  into('lib') {
    from configurations.runtimeClasspath
  }
}

assemble.dependsOn assembleZip

Handler:

package bingadsapi;

import com.amazonaws.serverless.proxy.jersey.JerseyLambdaContainerHandler;
import com.amazonaws.serverless.proxy.model.AwsProxyRequest;
import com.amazonaws.serverless.proxy.model.AwsProxyResponse;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;

import org.glassfish.jersey.jackson.JacksonFeature;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.ServerProperties;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import bingadsapi.resource.*;


public class StreamLambdaHandler implements RequestStreamHandler {
    private static final ResourceConfig jerseyApplication = new ResourceConfig()
            // properties to speed up Jersey start time
            .property(ServerProperties.FEATURE_AUTO_DISCOVERY_DISABLE,true)
            .property(ServerProperties.WADL_FEATURE_DISABLE,true)
            .property(ServerProperties.METAINF_SERVICES_LOOKUP_DISABLE,true)
            .property(ServerProperties.BV_FEATURE_DISABLE,true)
            .property(ServerProperties.JSON_PROCESSING_FEATURE_DISABLE,true)
            .property(ServerProperties.MOXY_JSON_FEATURE_DISABLE,true)
            .register(PingResource.class)
            .register(BingAdsResource.class)
            .register(JacksonFeature.class);



    private static final JerseyLambdaContainerHandler<AwsProxyRequest, AwsProxyResponse> handler
            = JerseyLambdaContainerHandler.getAwsProxyHandler(jerseyApplication);

    @Override
    public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context)
            throws IOException {
        handler.getContainerConfig().setInitializationTimeout(30_000);
        handler.proxyStream(inputStream, outputStream, context);
    }
}

Any hints, advice, or guidance would be greatly appreciated. Thanks in advance for your help!

主要言語
Java
スター
1.6k
フォーク
575
平均マージ
1日 15時間
マージ済み PR(30日)
12

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

aws/serverless-java-container のほかの issue

aws/serverless-java-container の issue をすべて見る

似ている issue

Java の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。