我有这个工作代码:
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/