Я использую Glassfish 4.1.1
как мой сервер Java. Я пытаюсь @Inject простой @Stateless bean-компонента в моем классе JAX-RS с аннотацией @Path. Вот исключение я получаю:GlassFish 4.1.1: Невозможно @Inject простой @Stateless в Java EE 7 Приложение JAX-RS
javax.servlet.ServletException: A MultiException has 1 exceptions. They are:
1. org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=MongoCollectionStore,parent=DemoJaxrsApp,qualifiers={},position=-1,optional=false,self=false,unqualified=null,310751270)
Вот мой JAX-RS конфигурации:
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/rest")
public class JaxrsAppConfig extends Application {
}
Это как мой JAX-RS ресурсов класса выглядит следующим образом:
@Path("/tn-collection")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class DemoJaxrsApp {
@Inject
MongoCollectionStore mongoCollectionStore;
@POST
public List<CollectionTO> getColl() {
return mongoCollectionStore.findAll();
}
}
I я использую только 2 зависимости:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3.1</version>
</dependency>
Это не должно быть проблемой с зависимостями. Я не использую никаких файлов xml
(кроме POM.xml и nb-configuration.xml, сгенерированных Netbeans 8.1), поскольку Java EE 7 не нуждается в каких-либо файлах конфигурации. Я не знаю, что могло бы пойти не так.
Может ли кто-нибудь помочь мне решить эту проблему UnsatisfiedDependencyException
?
UPDATE:
Вот мой MongoCollectionStore
Java класс:
@Stateless
public class MongoCollectionStore {
public List<CollectionTO> findAll(MongoConfig mongoConfig) {
List<CollectionTO> tuples = new ArrayList<>();
Gson gson = new Gson();
MongoClient mongoClient = new MongoClient("127.0.0.1", 27017);
MongoDatabase mongoDB = mongoClient.getDatabase("Demo");
MongoCollection<Document> coll = mongoDB.getCollection("DemoCollection");
try(MongoCursor<Document> cursor = coll.find().iterator()) {
while (cursor.hasNext()) {
String jsonDoc = cursor.next().toJson();
CollectionTO tuple = gson.fromJson(jsonDoc, CollectionTO.class);
tuples.add(tuple);
}
}
return tuples;
}
}
Что такое класс MongoCollectionStore? Он не существует [в документах API] (http://api.mongodb.com/java/3.3/). Вы следили за учебником для этого? Если это так, возможно, в учебнике реализован дополнительный класс, который вы пропустили? – Mike
Его фасоль '@ Stateless', которую я создал. Позвольте мне включить это тоже. Кстати, я могу видеть знак 'I' (который, как я полагаю, обозначает точку инъекции) перед моим полем' @ Injected'ed в Netbeans, что означает, что его реализация предоставляется. –
Вы добавили 'beans.xml' в свой проект? –