2016-11-28 13 views
1

私は静的コンテキストからUserServiceのにアクセスしていますがので、私は(mainメソッドから。)私はここUserServiceの目の前にstaticキーワードを使用しています私のテストclass.Inテストクラスから私のEJB Beanを呼び出していますEjbインターフェイスがNullPointerExceptionをスローするのはなぜですか?

注:また、私donotは、userServiceの前に静的キーワードを使用しても私は同じエラーがある。

public class Test { 

    @Inject 
    private static UserService userService; 

    public Test() { 
     // TODO Auto-generated constructor stub 
    } 

    public static void main(String args[]){ 
     userService.doSomething("hello"); 
    } 

} 

IセットアップEJB 3インターフェイス/実装は次のように見ている...

UserServiceの(インターフェース)

package business; 

public interface UserService { 

    public String doSomething(); 

} 

UserServiceBean(実装)

@Stateless 
@Local 
public class UserServiceBean implements UserService{ 

    public UserServiceBean() { 
    } 

    @Override 
    public String doSomething() { 
     return "Work done!"; 
    } 

} 

W私は電話をかけています私のテストクラスからのインターフェイスを使用してUserServiceBeanクラスのdoSomethingメソッドを使用しています。それは私にこのようなエラーを与えます。

Exception in thread "main" java.lang.NullPointerException 
    at test.Test.main(Test.java:17) 

このエラーの原因を教えてください。

+0

'userService'がnullの場合、何もそれに値を代入されません。 '@ Inject'アノテーションから期待していたことを想定していますが、実際にそのような振る舞いを設定していることは私には分かりません。私は、例えば静的なフィールドを注入可能とすることは期待していません。 – dimo414

+0

私は静的コンテキストからuserServiceにアクセスしているのでここではstaticを使用しました。 UserServiceをインジェクトする目的は、EJB Bean(UserServiceBean)からの出力を呼び出すことによってその出力を取得することです。私の質問は非常に明確です。 –

+0

あなたはどのコンテナを使用していますか? – HRgiger

答えて

0

TestクラスのuserServiceが静的であるため、NULLポインタ例外が発生しています。静的フィールドでは注入が機能しません。フィールドuserServiceからstaticキーワードを削除します。サービスのメソッドを呼び出す方法については、このリンクを参照してくださいhttps://blogs.oracle.com/chengfang/entry/do_s_and_don_ts

@Inject 
private UserService userService; 

リファレンスのようにそれを定義 http://www.coderpanda.com/ejb-stateless-session-bean-example/

+0

静的キーワードを削除した後、nullPointerエラーを返します。 –

+0

あなたは私に詳しい説明の例を教えてくれますか? –

+0

コード全体を共有してください。質問を更新してコード全体を追加することができます。設定ファイルがある場合は、それも共有してください。 –

関連する問題