2012-03-20 9 views
1

Iこの作業コードがあります。アマゾンのJava SDKは - authはできません

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); 
     } 
    } 
} 

そして、何の問題は、私はコンソールで書かれた所有者を見ることができます。私は、Webサービスプロジェクトで

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"; 
    } 
} 

私は展開とテストW EBサービス、ウェブを示しています


がタイプ: 例外レポート

説明: サーバが内部エラーが発生しました()この要求を満たすことを妨げます。

例外: javax.servlet.ServletException:java.lang.NullPointerExceptionが

根本原因:

ADVERTENCIA:EJB5184:Aコンソールで java.lang.NullPointerExceptionが


EJB AWSでの呼び出し中にシステム例外が発生しました。メソッド:public java.lang.String WSAV.entities.AWS.test() ADVERTENCIA:javax.ejb.TransactionRolledbackLocalExcepti上:EJB5184:豆

{...}

ADVERTENCIAからの例外パブリックjava.lang.StringでWSAV.resources.Principal.getTest(:システム例外EJBプリンシパル、方法上の呼び出し中に発生しました) ADVERTENCIA:javax.ejb.EJBTransactionRolledbackException

{...}

ADVERTENCIA:StandardWrapperValve [ServletAdaptor]:PWC1406:のServlet.service()サーブレットServletAdaptorの例外

を投げ

私はそれが何であるか、何ができるのかわからない...多分この別のJavaファイルを作成し、このプロジェクトとは別に実行するが、私はただ一つのプロジェクトでAWSが必要である...

ありがとうございます!

答えて

0

@EJBと注釈付き。管理対象クラスのみ。 例外は、AWSクラスがすべてのEJB関連のリクエストを満たしていないことを意味します。

0

問題は、EJB標準に準拠していないAWS EJB Beanにあります。 ここにRESTとEJB 3.1に関する記事があります。 http://netbeans.dzone.com/articles/how-to-combine-rest-and-ejb-31

私は同じ手順でコードを微調整しました。それがあなたのために働くことを願っています。

AWS.java

@Singleton 
public class AWS { 

private AmazonS3 s3Client; 

@PostConstruct 
public void init() { 

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

public AmazonS3 getS3Client() { 
return s3Client; 
} 

} 

Principal.java

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

@EJB      
private AWS aws;      

@GET      
@Path("/AWS")      
@Produces({"text/html", "text/plain"})      
public String getTest() {      
    AmazonS3 s3=aws.getS3Client(); 
    return s3.getS3AccountOwner().toString());           
}      
}  
関連する問題