Развертывание приложения Struts2 без ContextPath - PullRequest
0 голосов
/ 27 июля 2010

У меня есть приложение struts2, работающее под контекстным путем "/ path" на моем локальном коте без проблем. Когда я развертываю его на веб-сервере (используя прокси-сервер для перенаправления с "http://www.domain.com" на" myserver: 8080 / path / "), Struts делает все виды странных вещей.

Во-первых, он включает контекст в -tags. Это может быть отключено атрибутом. Но, к сожалению, он также включает путь в атрибутах действий моих форм, поэтому форма входа в систему указывает на «http://www.domain.com/path/login.action" вместо» http://www.domain.com/login.action" ...

Есть ли возможность так или иначе изменить контекст по умолчанию, который добавлен здесь, или отключить это для форм? (Я хотел бы сохранить -tags, кажется, что единственным способом использовать HTML-формы по умолчанию.) Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 03 февраля 2014

Хотя я очень поздно отвечаю на этот вопрос, но я недавно зашел на эту страницу, когда столкнулся с той же проблемой.

Приложение, над которым я работал, добавляло контекст-корень, а именно. 'myContextRoot' на мой URL на localhost, и он отлично работал там. Например, как упоминалось выше, действие «myAction» становилось http://localhost:8050/myContextRoot/myAction.action Но в тот момент, когда я развернул его на сервере, он перестал работать, а затем, после чертовых поисков, нашел решение для себя. Я развертываю файл EAR на glassfish, и там у нас есть файл application.xml. В application.xml у меня был тег 'context-root', значением которого было 'myContextRoot', которое я изменил на '/', и после этого я получил свой URL как на localhost и

Надеюсь, это поможет:)

0 голосов
/ 03 августа 2010

Я обнаружил, что у других тоже была проблема, но разработчики фреймворков, похоже, не думают, что это проблема. Мои решения:

  • использовать includeContext = "false" во всех s: url-тегах
  • вместо тега s: form используйте обычную форму, установите действие "actionname.action" и включите простую таблицу с tablerows () для каждого поля. Вы все еще можете использовать s: textfield и такие.
  • к сожалению, HTTP-сессии больше не будут работать, поскольку они установлены для пути "/ path" (ApplicationPath). Это связано с тем, что в файле cookie для JSESSIONID задано значение / path. Это означает, что ваши посетители будут хранить переменные сеанса, только когда они находятся в http://www.domain.com/path/login.action, и что они будут потеряны, когда они будут перенаправлены обратно в http://www.domain.com/interestingstuff.action ... мое решение - взлом, который требует установка клиентской cookie-файла JSESSIONID через JavaScript, как описано здесь: Struts2: проблема сеанса (после обратного прокси-сервера)

Надеюсь, это кому-нибудь поможет ... если вы найдете более удачные решения, пожалуйста, дайте мне знать. : -)

...