Код: Выделить всё
2025-01-12 23:50:26,954 INFO [org.mon.dri.cluster] (executor-thread-1)
No server chosen by ReadPreferenceServerSelector{readPreference=primary} from cluster description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, serverDescriptions=[ServerDescription{address=localhost:27017, type=UNKNOWN, state=CONNECTING,
exception={com.mongodb.MongoSocketOpenException:
Exception opening socket},
caused by {java.net.ConnectException: Connection refused}}]}. Waiting for 30000 ms before timing out
p>
Это классы сущностей, которые представляют объекты, которые я пытаюсь читать/записывать.
Код: Выделить всё
package com.mongodb;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.bson.types.ObjectId;
import java.util.Objects;
public class PersonEntity {
@JsonSerialize(using = ToStringSerializer.class)
public ObjectId id;
public String name;
public Integer age;
public PersonEntity() {
}
public PersonEntity(ObjectId id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
@Override
public int hashCode() {
int result = id != null ? id.hashCode() : 0;
result = 31 * result + (name != null ? name.hashCode() : 0);
result = 31 * result + (age != null ? age.hashCode() : 0);
return result;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PersonEntity that = (PersonEntity) o;
if (!Objects.equals(id, that.id)) return false;
if (!Objects.equals(name, that.name)) return false;
return Objects.equals(age, that.age);
}
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
Код: Выделить всё
package com.mongodb;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import jakarta.enterprise.context.ApplicationScoped;
import org.bson.conversions.Bson;
import org.bson.types.ObjectId;
import java.util.ArrayList;
import java.util.List;
import static com.mongodb.client.model.Filters.eq;
import static com.mongodb.client.model.Updates.inc;
@ApplicationScoped
public class PersonRepository {
private final MongoClient mongoClient;
private final MongoCollection
coll;
public PersonRepository(MongoClient mongoClient) {
this.mongoClient = mongoClient;
this.coll = mongoClient.getDatabase("test").getCollection("persons", PersonEntity.class);
}
public String add(PersonEntity person) {
return coll.insertOne(person).getInsertedId().asObjectId().getValue().toHexString();
}
public List getPersons() {
return coll.find().into(new ArrayList());
}
public long anniversaryPerson(String id) {
Bson filter = eq("_id", new ObjectId(id));
Bson update = inc("age", 1);
return coll.updateOne(filter, update).getModifiedCount();
}
public long deletePerson(String id) {
Bson filter = eq("_id", new ObjectId(id));
return coll.deleteOne(filter).getDeletedCount();
}
}
Код: Выделить всё
package com.mongodb;
import jakarta.inject.Inject;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;
import java.util.List;
@Path("/api")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class PersonResource {
@Inject
PersonRepository personRepository;
@GET
@Path("/hello")
public String hello() {
return "Hello from Quarkus REST";
}
@POST
@Path("/person")
public String createPerson(PersonEntity person) {
return personRepository.add(person);
}
@GET
@Path("/persons")
public List getPersons() {
return personRepository.getPersons();
}
@PUT
@Path("/person/{id}")
public long anniversaryPerson(@PathParam("id") String id) {
return personRepository.anniversaryPerson(id);
}
@DELETE
@Path("/person/{id}")
public long deletePerson(@PathParam("id") String id) {
return personRepository.deletePerson(id);
}
}
Код: Выделить всё
quarkus.mongodb.connection-string=mongodb://localhost:27017
Проект создан с помощью Maven (v3.9.9)
Что я' Я уже пробовал:
- Переустановка и перезапуск mongoDB
- Запуск MongoDB в качестве контейнера и локального экземпляра
Поиграйтесь со строкой подключения в application.properties. - Установите для параметраbindIp значение 0.0.0.0 в файле конфигурации MongoDB (предлагаемое решение в аналогичной теме: ни один сервер не выбран WritableServerSelector из кластер)
- Запуск сценариев с помощью Python для проверки возможности вставки и чтения объектов из БД
С уважением
Подробнее здесь: https://stackoverflow.com/questions/793 ... e-database
Мобильная версия