2012-04-11 2 views
1

У меня есть Java-программа, которая имеет некоторое количество классов. Три метода взяли вход A и дали вывод B. Мне нужно сделать эти методы доступными как веб-службу, чтобы я мог спросить что-то вроде http://test.com/method?input=A, и возвращается результат B. Я не хочу переписывать свой существующий код. Есть ли что-то доступное, такое как структура веб-сервиса для JAVA, которая позволяет мне создать интерфейс веб-службы для этих трех методов. Что является самым простым способом?Как я могу реализовать следующее?

Я столкнулся со многими акронимами и другими вещами во время моих исследований, таких как динамический проект, JAVA EE, Glassfish и т. Д. ... Что может реализовать мое требование? Благодаря!

ответ

0

Вы, вероятно, нужно какой-то веб-рамки - Glassfish является одним из примеров. В основном, ваше приложение не создано для получения веб-запросов, поэтому вам нужен какой-то контейнер (например, контейнер сервлетов, такой как Tomcat http://en.wikipedia.org/wiki/Web_container).

Я думаю, что «restlet» - это контейнер с сервлетом, который может удовлетворить ваши потребности.

Проверьте: http://www.restlet.org/

+0

В итоге я использовал рестарт. Спасибо. – user1066429

0

Самый простой способ сделать быстрые службы Java, которые я нашел, - Restlet.

Вы можете использовать их учебники, чтобы запустить веб-сервер так, как буквально 20 минут с нуля. Нижеследующее Restlet должно работать прямо из коробки как каркас скелета. Разумеется, вы замените вызов String b = ... и замените его своей собственной библиотекой.

public class Main extends Application { 

    public static void main(String[] args) { 
     Main main = new Main(); 
     main.start(); 
    } 

    private void start() { 
     Component c = new Component(); 
     c.getServers().add(Protocol.HTTP, 80); 
     Application app = new Main(); 
     c.getDefaultHost().attach(app); 
     c.start(); 
    } 

    public Restlet createInboundRoot() { 
     Router router = new Router(getContext()); 
     router.attach("/method/{input}", new Restlet(getContext()) { 
      public void handle(Request request, Response response) { 
       String a = request.getAttributes().get("input").toString(); 
       String b = MyLibraries.compute(a); 
       response.setEntity(b, MediaType.TEXT_HTML); 
      } 
     }); 
     return router; 
    } 

} 
0

Если вы работаете на сервере Java EE 6, вы можете использовать JAX-RS: http://docs.oracle.com/javaee/6/tutorial/doc/gilik.html

+0

благодарит за ваш ответ. Я не понимаю, скажу, что у меня есть Java-программа, состоящая из нескольких классов. Где-то у меня есть основной метод класса Main, который инициализирует хэш-таблицу с данными, загружает график и строит квадровое дерево. Теперь у меня есть три метода, которые необходимо связать с помощью веб-службы, в которой загружены загруженные квадраты, график и хэш-таблица, загруженные в память. Могут ли данные таким образом распределяться между клиентами? – user1066429

+0

Данные будут оставаться на сервере. Клиенты в этом случае являются конечными пользователями, которые на самом деле не касаются вашего кода, но получают только ответы HTML со связанными носителями (css, js, images и т. Д.). Таким образом, вам нужно будет создавать представления, которые представляют ваши данные, а представлениям все равно, как работает остальная часть вашего приложения. Одна вещь, которая довольно распространена, заключается в предоставлении данных как JSON и использовании javascript (единственной клиентской обработки, которую вы имеете для вас), чтобы делать забавные вещи с данными. Кроме того, я думаю, вам, возможно, придется переписать свою «основную» функцию, чтобы она соответствовала любой веб-структуре, которую вы используете. – Kasapo

+0

Кроме того, каждый клиент, вероятно, будет ссылаться на другой экземпляр вашего приложения - веб-фреймворки обычно имеют способ сделать это более эффективным (например, не переопределять определение класса, а создавать отдельные экземпляры), что означает, что ваши данные ДОЛЖНЫ быть в порядке, переделать диск IO в одни и те же файлы или ваши методы не являются безопасными для потоков/многопроцессорными (в зависимости от того, как настроен ваш веб-сервер) – Kasapo

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