java - Amazon Java SDK 与 Jersey 的 REST - 无法验证

标签 java rest amazon-web-services jersey authentication

我有这个工作代码:

package javaapplication7;

import com.amazonaws.auth.PropertiesCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class JavaApplication7 {

    public static void main(String[] args){
        try {
            AmazonS3 s3 = new AmazonS3Client(new PropertiesCredentials(
                    JavaApplication7.class.getResourceAsStream("/AwsCredentials.properties")));
            System.out.println("OWNER: " + s3.getS3AccountOwner().toString());
        } catch (IOException ex) {
            Logger.getLogger(JavaApplication7.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

没有问题,我可以看到控制台中写入的所有者。

在网络服务项目中我有:

Principal.java

package WSAV.resources;

import WSAV.entities.AWS;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Stateless
@Path("/amazonws")
public class Principal {

    @EJB
    private AWS aws;

    @GET
    @Path("/AWS")
    @Produces({"text/html", "text/plain"})
    public String getTest() {
        return aws.test();
    }
}

AWS.java

package WSAV.entities;

import com.amazonaws.auth.PropertiesCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.Singleton;

@Singleton
public class AWS {

    public AWS() {
    }

    public String test() {

        try {
            AmazonS3 s3 = new AmazonS3Client(new PropertiesCredentials(
                    AWS.class.getResourceAsStream("/AwsCredentials.properties")));
        } catch (IOException ex) {
            Logger.getLogger(AWS.class.getName()).log(Level.SEVERE, null, ex);
        }

    return "testing";  
    }
}

当我部署并测试 Web 服务时,网络显示:

<小时/>

类型: 异常报告

描述: 服务器遇到内部错误 (),导致其无法完成此请求。

异常: javax.servlet.ServletException:java.lang.NullPointerException

根本原因: java.lang.NullPointerException

<小时/>

在控制台上:

ADVERTENCIA:EJB5184:在 EJB AWS 上调用时发生系统异常,方法:public java.lang.String WSAV.entities.AWS.test() 广告:javax.ejb.TransactionRolledbackLocalException:bean 抛出异常

{...}

ADVERTENCIA:EJB5184:调用 EJB 主体期间发生系统异常,方法:public java.lang.String WSAV.resources.Principal.getTest() 广告:javax.ejb.EJBTransactionRolledbackException

{...}

广告:StandardWrapperValve[ServletAdaptor]:PWC1406:servlet ServletAdaptor 的 Servlet.service() 引发异常

<小时/>

我迷失了,不知道它可能是什么,也不知道我能做什么...也许创建另一个 Java 文件并与该项目分开执行,但我需要 AWS 仅在一个项目中工作...

谢谢!

最佳答案

@EJB注释的只能是托管类。 该异常意味着您的 AWS 类不满足所有 EJB 相关要求。

关于java - Amazon Java SDK 与 Jersey 的 REST - 无法验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9794567/

相关文章:

java - Generic querydsl orderBy 带左连接的动态路径生成

java - 嵌套的异常是java.lang.VerifyError : Bad return type + getProfiler()Lcom/orientechnologies/common/profiler/OProfiler; @4: areturn

node.js - REST API 聊天 - 实时获取消息的端点

java - 如何从单个列表中挑选独特的对

java - Android:在 3 个 Activity 之间传递相同的变量?

node.js - Node Restful 与 mongoose 4

java - 在 Vert.x Web 路由器上的不存在路由上提供静态 webroot/index.html 数据

node.js - 将 NodeJS 部署到 Elastic Beanstalk 时出现 NPM 错误

ios - 使用 AWSiOS SDK 如何对 S3 对象执行 HEAD 请求?

amazon-web-services - 在AWS Glue pyspark中设置 Spark 配置