Я просто получил класс сервлета, работающий в Eclipse. Я тестировал его, развертывая его с помощью App Engine, и это побудило меня работать как веб-приложение. Теперь я хочу запустить этот код из другого класса. Поэтому я сделал еще один класс и поставил «TestServlet ts = new TestServlet();» в основной функции. Когда я бегу, ничего не происходит. Должен ли я сделать вызов метода «doGet» TestServlet, или это связано с тем, что основной класс не работает в качестве веб-приложения?Запуск класса сервлета из другого класса
ответ
Умм ... вы не должны этого делать. Извлеките общую логику в отдельный класс POJO (простой старый Java-объект) и вызовите его как из своего сервлета, так и из вашего другого класса.
Вручную создающие/вызывающие сервлеты НЕ являются хорошей идеей.
Вам нужен контейнер сервлета, если вы хотите запустить его для реального. Я бы предложил использовать Winstone http://winstone.sourceforge.net. Это небольшой, быстрый, нулевой контейнер конфигурации для запуска вашего сервлета.
Это не очень хороший ответ. OP _has_ контейнер сервлетов, когда он тестировал свой сервлет, развертывая его в App Engine. Это никоим образом не оправдывает попытки вручную создать экземпляр своего сервлета. – ChssPly76
Он говорит, что пытается проверить его, развернув его на GAE. В моей интерпретации вопроса он пытается запустить сервлет на своей машине, на что я и задавал вопрос. – Joe
@Joe - тогда ваша интерпретация вопроса неверна. Я ничего не имею против использования Winstone вместо GAE для проверки сервлета - это, безусловно, проще или быстрее; но вопрос состоял в том, «как я могу запустить сервлет из основного() метода приложения java-приложения. И ответ «вы не должны». – ChssPly76
Вызов doGet (или doPost или любой другой видимый метод) в экземпляре объекта сервлета будет выполнять содержащийся код. Однако имейте в виду, что поведение может отличаться от запуска сервлета в веб-контейнере, если код использует любую из переменных «проводного ввода».
При номинальной стоимости я бы предложил вам рефакторинг, чтобы код, который вам нужен, был обычным методом и вызывал как ваш сервлет, так и ваш основной класс.
- 1. Запуск методов класса из другого класса
- 2. Запуск GUI из другого класса
- 3. Запуск события из другого класса
- 4. Запуск MediaPlayer из другого класса
- 5. Запуск кода из другого класса
- 6. Запуск основного класса из другого класса с помощью JButton
- 7. Машинопись: Запуск одного метода класса из внутри другого класса
- 8. Запуск класса из другого класса с дополнительной информацией андроид
- 9. Запуск Java-класса из другого приложения Java
- 10. Запуск теста TestNG из другого класса
- 11. Запуск методов из другого класса в Java
- 12. Запуск приложения JavaFX из другого класса
- 13. iPhone - Запуск селекторов из другого класса
- 14. Запуск другого действия из класса потоков
- 15. Запуск класса из отдельного класса
- 16. Запуск сервлета из класса java, например из HTML-кода
- 17. Вызов функции другого класса из другого класса
- 18. вызов класса из другого класса
- 19. вызов сервлета из класса java
- 20. Вызов сервлета из класса java
- 21. доступ переменная другого класса из внутреннего класса другого класса
- 22. Доступность класса сервлета из внешнего файла web.xml
- 23. Запуск класса внутри класса
- 24. Запуск класса класса
- 25. Запуск нестатического класса из статического класса?
- 26. AlertDialog из другого класса
- 27. Сеттер из другого класса
- 28. getAssets(); из другого класса
- 29. Webview.loadurl из другого класса
- 30. Переменная из другого класса
Ответ на вопрос полностью зависит от того, чего вы пытаетесь достичь. Для тестирования компонентов и/или компонентов поведения классов, конечно, вы проверяете код без уровня сервиса. Для тестирования интеграции может потребоваться его запуск (что задается вопросом). – Joe
Мне нужен только сервлет, чтобы извлечь данные XML из веб-службы. После этого я буду манипулировать XML в другом коде. Я надеялся в основном запустить сервлет, получить XML и отключить его, если это возможно. Я хотел просто запустить один класс, но вы говорите, что я должен запускать веб-приложение и приложение Java отдельно, не так ли? Очень ценю помощь. – Mattk
Я считаю, что вы можете запустить Winstone 'embedded' (т. Е. Вызывать его из кода), не обязательно быть отдельным экземпляром (но это может быть). (Возможно, лучший способ получить XML из веб-службы). – Joe