2017-12-07 16 views
0

私のプロジェクトではwildflygraphql-javaを使用しています。私はそこにtheyのようなGraphQLエンドポイントを設定しました。それはダミーデータと完全に機能しました。しかし私は私のデータベースに接続するBeanの中にある私のリポジトリを挿入することができません。注入された変数は常にnullです。GraphQL Java:注入されたBeanを使ったBuildschema

誰かが私を助け、私が間違っていることを教えてもらえますか?

GraphQLEndpoint

@WebServlet(urlPatterns = "/graphql") 
public class GraphQLEndpoint extends SimpleGraphQLServlet { 

    @EJB() 
    private static CountRepositoryInterface countRepository; 

    public GraphQLEndpoint() { 
     super(buildSchema()); 
    } 

    private static GraphQLSchema buildSchema() { 
     LinkRepository linkRepository = new LinkRepository(); // Dummy Data from ArrayList 
     TraceRepository traceRepository = new TraceRepository(); // Dummy Data from ArrayList 

     return SchemaParser.newParser() 
       .file("schema.graphqls") 
       .resolvers(new Query(linkRepository, traceRepository, countRepository)) 
       .build() 
       .makeExecutableSchema(); 
    } 
} 

CountRepositoryInterface

@Remote 
public interface CountRepositoryInterface { 

    void createCounter(Counter counter); 

    Counter getCounterByUser(String userName); 

    void updateCounter(String userName); 

    void deleteAllCounter(); 

    List<Counter> GetAllFromCounter(); 
} 

CountRepository

@Stateless 
public class CountRepository implements CountRepositoryInterface { 

    @PersistenceContext(unitName = "count") 
    private EntityManager entityManager; 

    public void createCounter(Counter counter) { 
     entityManager.persist(counter); 
    } 

    public List<Counter> GetAllFromCounter() { 
     Query query = entityManager.createQuery("SELECT c FROM Counter c"); 

     return query.getResultList(); 
    } 

答えて

0
  • "countRepository" と「BUIから静的な修飾子を削除しますldSchema ";
  • 注入はまだできなかったので、コンストラクタでbuildSchemaを呼び出さず、サーブレットのinit()メソッドをオーバーライドします。
  • リポジトリがシングルトンである必要がある場合は、@ Singletonを使用してリポジトリを宣言します。
関連する問題