getServletContext().getRealPath() возвращает null в WebSphere Application Server Liberty

Раньше я использовал Tomcat v9.0 в локальной среде, используя

getServletContext(). GetRealPath ("")

чтобы получить путь, сервер вернул

....metadata.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\WebApp\

Однако, когда клиент запускает WebSphere Application Server Liberty, я установил то же самое на свой компьютер, но тот же код, который возвращает путь в Tomcat, возвращает

нулевой

в среде Websphere. Не могли бы вы помочь мне понять, почему это происходит и как я получу путь в среде Websphere. Также я проверил следующую ссылку https://www.ibm.com/developerworks/community/forums/html/topic?id=eb04c8ae-02d4-421b-af2c-2ef626a3db1b&ps=50&tags=&query=&filter=&sortBy=&order=asc, но не нашел решения.


person Jude Rodricks    schedule 26.09.2017    source источник
comment
Как код развертывается на обоих?   -  person nitind    schedule 26.09.2017
comment
Он не развернут на обоих. Я временно остановил Tomcat для запуска Websphere. Вот как я могу это проверить   -  person Jude Rodricks    schedule 26.09.2017


Ответы (1)


Я получил путь в среде Websphere. В Websphere требуется, чтобы мы указывали «/» вместо пустой строки, т.е.

getServletContext(). GetRealPath ("/")

вместо

getServletContext(). GetRealPath ("")

Я не уверен, верно ли это для всех случаев, но на моей машине это работало нормально.

person Jude Rodricks    schedule 26.09.2017
comment
Да, кроме того вам понадобится расширенная война, поэтому либо ставьте <applicationManager autoExpand="true"/>, если вы просто кладете приложения в папку dropin, либо разворачивайте войну в папке apps и добавляйте их в папку server.xml. Это не сработает, если приложение будет храниться в запакованном виде в виде архива. - person Gas; 26.09.2017