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

Ouverte
#614 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
25/100
Type d'issue
Bug
Clarté
À clarifier
Activité
À l'abandon
Stack technique
aws, java, spring-boot
Domaine
api, backend, cloud

Piste de recherche

Commencez par StreamLambdaHandler et son enregistrement de ResourceConfig, puis examinez build.gradle pour trouver les dépendances de Jersey, Spring Boot et AWS serverless container. Reproduisez l’avertissement et suivez la configuration du fournisseur à l’exécution ; le travail est terminé lorsque PingResource est reconnu et que la requête signalée est traitée sans l’avertissement SERVER-runtime.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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!

Langage dominant
Java
Étoiles
1.6k
Forks
575
Merge moyen
1 j 15 h
PR mergées (30 j)
12

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de aws/serverless-java-container

Toutes les issues de aws/serverless-java-container

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.