2014-10-28 5 views
1

У меня есть приложение, как следует за,Можно ли вызвать метод из запущенного приложения

public class OpenApp { 

    public static void main(String[] args) { 
     if(args.length>0) 
     System.out.println("Hi " + args[0]); 
     System.in.read();  
    } 

    public static String sayHi(){ 
     return "Hi"; 

    } 

} 

Так OpenApp будет работать. У меня есть другие методы. Могу ли я вызвать метод sayHi из другого приложения, не создавая новый экземпляр класса.? Потому что у меня есть некоторые ограничения данных при запуске OpenApp.

Пожалуйста, исправьте меня, если мой вопрос неверен. Просто я пытаюсь общаться между двумя JVM. Итак, я читаю, RMI - лучший способ общения. Так есть другой способ.

+0

'Webservices' ...? –

+0

Нет, на самом деле, пытаясь избежать конкретных протоколов связи. Подобно отражениям Java, я ищу. –

+1

@Pasupathi Вы ** do ** нуждаетесь в некотором (хотя бы межпроцессном) протоколе связи, если «пытаетесь установить связь между двумя JVM». См. http://www.javaworld.com/article/2077419/learn-java/interprocess-communications-in-java.html. Другие (несетевые прозрачные, только локальные) альтернативы - это [FIFO, именованная труба или общая память] (http://stackoverflow.com/questions/1416780/java-interprocess-communication). –

ответ

1

Для двух приложений для общения вам нужна форма Inter-Process Communication, IPC, в значительной степени по определению. Поэтому вам нужен какой-то протокол. Итак, короткий ответ на ваш вопрос: RMI - это не единственный способ, но все остальные способы похожи, коммуникация, а не прямой вызов метода.

Если вы просто хотите вызвать метод в коде другого приложения, добавьте в проект приложение .jar с классом или load the .jar at runtime и (так как это статический метод) просто вызовите метод. Но это обычный вызов статического метода, поэтому вы, вероятно, не имели в виду это?

+0

Laoding jar похож на создание нового экземпляра, у меня есть некоторые ограничения данных в запущенном приложении. Я проверю IPC. –

Смежные вопросы