У меня есть проект, который был начат и организован кем-то ооооооооооооооооооооооочень талантливо, чем я, и я наткнулся на момент, когда не могу понять, как с ним совладать.
Это проект Java/JavaFX/Spring Boot, а НЕ проект Swing. Я вижу много ответов относительно: Swing. Оба приложения также настроены в Gradle, поэтому оба приложения имеют свои собственные отдельные ./gradlew bootRun
команды и работают в CentOS 7. Оба приложения имеют свои собственные, отдельные main() methods
. Я считаю, что первоначальный дизайн был намеренно предназначен для полного удаления любого доступа к данным из графического интерфейса, что и является причиной разделения. Мне просто трудно найти способ передавать данные нужно туда и обратно.
Есть отдельные приложения, предназначенные для совместной работы.
**Kiosk**
в котором находятся элементы графического интерфейса и контроллеры, связанные с графическим интерфейсом.
**Governor**
в котором находятся API и приложение APP. На данный момент API помогает с интерфейсами Source и File. Приложение содержит базу данных H2 (все они хранятся в файлах JSON, но содержимое не имеет отношения к этому конкретному вопросу), пользовательский пакет (в котором хранятся пользовательские данные, которые загружаются в базу данных H2) и исходный пакет (в котором хранятся все файлы). методы)
Что я хочу сделать, так это:
username
и password
, предоставленные пользователем на уровне **Kiosk**
, и каким-то образом передайте их в **Governor**
.validUser
), я хочу передать эту информацию обратно из **Governor**
в **Kiosk**
, и я могу двигаться дальше.У меня нет кода для копирования и вставки, поэтому я надеюсь, что приведенного выше описания достаточно, чтобы указать мне правильное направление. Я пробовал искать в Google «передавать данные между отдельными Java-приложениями», «отдельное графическое и логическое Java-приложение» и все, что вы можете придумать, но я наткнулся на стену.
Я рад предоставить любую другую информацию, которая может вам понадобиться, и я не ищу никого, кто бы писал для меня код, но если у вас есть какие-либо примеры, которые вы видели, или концепция, с которой я, возможно, не знаком, это помогите мне передать эти данные туда и обратно, я был бы бесконечно благодарен!
*** Редактировать *** Пытаюсь добавить MVP, насколько это возможно. Надеюсь, все, что нужно для ответа на вопрос выше, можно почерпнуть снизу.
Киоск/логинконтроллер
@Component
public class LoginController extends Controller {
@FXML
TextField username;
@FXML
TextField password;
@FXML
Button loginButton;
@FXML
public void tryLogin() {
UserServices userServices = new UserServices();
String usernameEntered = username.textProperty().getValue();
String passwordEntered = password.textProperty().getValue();
userServices.validateUser(usernameEntered, passwordEntered);
// ... other non-related methods re: tryLogin()
}
}
Киоск/UserServices
public class UserServices {
public boolean validateUser(String username, String password) {
// **** How do I pass the args (username and password) to Governor?
if (!userFound) {
return false; // user not found, deny entry
}
return true; // allow entry
}
}
}
Губернатор/API/FileEntry
Примечание: Этот файл является лишь образцом API-модуля, взаимодействующего с KIOSK — я не понимаю этого полностью — опять же, я делаю все возможное с моими ограниченными ресурсами; I полагать Мне нужно создать собственный пользовательский модуль API, но я не знаю, как это сделать)
@JsonDeserialize(as = DefaultFileEntry.class)
public interface FileEntry {
Path getPath();
boolean isDirectory();
@JsonIgnore
default Optional<String> getName() {
if (getPath().getFileName() == null) {
return Optional.empty();
} else {
return Optional.of(getPath().getFileName().toString());
}
}
}
Губернатор/приложение/UserRepository
public interface UserRepository extends JpaRespository<User, String> {
User findByUsername(String username);
}
Губернатор/приложение/UserService
@Service
public class UserService {
private UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
// SQL methods to create database, if necessary, search, create, update, and delete users
}
Тем не менее, я бы рекомендовал отказаться от кода, который вы не можете понять, резко (и я имею в виду значительно) сократить объем, а затем написать ограниченную функциональность с нуля так, как вы понимаете, зарезервировав много времени и усилий, чтобы сделать это ( в пару раз больше времени, чем вы думаете, что вам может понадобиться) Альтернатива, попытка использовать, поддерживать и улучшать текущую кодовую базу, скорее всего, неосуществима, потому что в данный момент нет набора навыков для этого.
@James_D Похоже, вы начинаете понимать. Я не могу вдаваться в подробности, но я не работаю на «компанию», так сказать, и мои начальники, хотя и гениальны по-своему, не могут предложить помощь из-за отсутствия у них собственного опыта. Но без другого старшего разработчика, который мог бы ответить на вопросы и получить его руководство / видение для этого переписывания (которое я завершал небольшими кусками и очень помог, чтобы кто-то критиковал), я должен прибегнуть к другим средствам, чтобы помочь мне. понимать. Я изучил Spring, Java, JavaFX и т. д. Но это сценарий широты и глубины, и я тону в широте.
Существует несколько способов обмена данными между приложениями:
Это больше похоже на комментарий, чем на реальный ответ. (В нынешнем виде на этот вопрос, похоже, нет ответа.)
@Ryan Вот некоторые вещи, которые я абсолютно точно могу найти. Я знаю, для меня большая часть моей проблемы, помимо того, что я очень зеленый, заключается в том, что я не знаю, чего я не знаю. В частности, я ничего не знаю о том, что такое JMS или AMQ, и никогда не использовал их, а тем более не знаю об их существовании. Я на 100% за изучение новых вещей и их применение, но если я о них не знаю, я ничего не могу с этим поделать. Одного наличия акронимов достаточно, чтобы поставить меня на еще один квест Google, так что спасибо вам за это! Я не знаю, можем ли мы использовать системы обмена сообщениями из-за определенных ограничений там, где я работаю, но я проверю.
@James_D, потому что это комментарий. Этот вопрос чрезвычайно широк, и однозначного ответа на него нет. Правильное решение может быть определено только людьми, поддерживающими код и среду развертывания.
Хорошо, но если это комментарий, опубликуйте комментарий, а не ответ.
@WillDutcher JMS (система обмена сообщениями Java) — очень старая система для передачи сообщений. AMQ — это проект Apache activemq.apache.org. Это очень надежная система для передачи сообщений между системой, как внутренней, так и внешней.
@James_D Я опубликовал ответ, достаточно широкий, чтобы соответствовать вопросу и дать направление ОП.
Они на самом деле отдельные Приложения? Каждый со своим методом
main(...)
и запущен независимо на отдельных JVM? Это то, что вы действительно имеете в виду? В любом случае: "У меня нет кода для вставки". Затем создайте некоторые. Напишите новый проект с нуля (минимальный воспроизводимый пример), который демонстрирует проблему (и ничего больше). Все, что вам нужно сделать, это сымитировать ту же проблему, передав простое значение таким же образом.