#java #windows #tomcat #batch-file #32bit-64bit
#java #Windows #tomcat #пакетный файл #32-битный-64-битный
Вопрос:
Мы находимся в процессе обновления нашего сервера с 32-разрядной Windows 2003 до 64-разрядной Windows 2008, и я провожу некоторую проверку, прежде чем мы выберем 32-разрядные или 64-разрядные версии наших обновленных серверных приложений.
В настоящее время у нас есть сервер Tomcat с несколькими веб-приложениями, которые запускают скрипты perl (внутри пакетных файлов Windows) с использованием Runtime.getRuntime().exec()
. Скрипты perl, в свою очередь, запускают MS Office для создания объектов и управления ими.
Из того, что я прочитал, большинство людей (включая Microsoft) рекомендуют устанавливать 32-разрядную версию Office, если только у вас нет очень веских причин для установки 64-разрядной версии (и на данный момент я не думаю, что мы делаем).
Похоже, это, вероятно, означает, что я должен запускать 32-разрядный Perl для создания 32-разрядных объектов Office.
Вопрос в том, означает ли это, что мне также нужно запускать Tomcat на 32-разрядной Java? Если да, то у меня есть второй вопрос: могу ли я установить несколько экземпляров Tomcat в разные JVM, чтобы воспользоваться преимуществами дополнительной памяти в 64-разрядной ОС?
Если возможно запустить 32-разрядный процесс из 64-разрядной Java, существуют ли какие-либо специальные приемы или достаточно просто указать WOW64 в пути к команде cmd?
Комментарии:
1. вы можете запустить 32-разрядный процесс в 64-разрядной среде, но, как вы упомянули, возможно, вы не сможете использовать дополнительную память, которую вы можете использовать
Runtime.getRuntime().exec()
для запуска 32-разрядного или 64-разрядного приложения, 32-разрядный процесс в 64-разрядной Windows будет иметь * 32 против его имени в диспетчере задач..2. Вам не обязательно запускать 32-разрядный Perl. Я ожидал бы, что 64-разрядный Perl сможет отлично работать с 32-разрядной версией Office, вероятно, даже без необходимости вносить какие-либо изменения в код.
3. Гарри, это одна из вещей, которые я пытаюсь выяснить. Я видел сообщения людей, у которых были проблемы, и чьи проблемы были решены, когда они удалили 64-разрядный Perl и установили вместо него 32-разрядный. Если нам удастся заставить все работать в 64-разрядной версии, это, вероятно, предпочтительнее в будущем, поэтому я спрашивал о запуске 32-разрядных процессов из 64-разрядной Java (то есть я хотел бы запустить 64-разрядную Java, если это вообще возможно, даже если я не могузапустите 64-разрядный Office или 64-разрядный Perl).
4. Спасибо, Ананта. Моя главная проблема заключается не в ограничениях памяти для отдельных сценариев пакетного файла / perl, а в том факте, что Tomcat будет запускать несколько из них одновременно, поэтому их совокупное использование памяти может превысить 32-разрядный предел.
Ответ №1:
В документах exec указано
(…) Запуск процесса операционной системы сильно зависит от системы. (…)
Таким образом, можно было бы предположить, что вполне возможно запустить 32-разрядный процесс из 64-разрядного Java-процесса, поскольку запуск другого процесса в Windows вообще не заботится о разрядности.
Если вы запустите SysWOW64cmd.exe
, у вас все должно быть в порядке.
Какой дистрибутив Perl вы используете? Версии Strawberry Portable ZIP можно использовать параллельно, ничего не устанавливая.
Комментарии:
1. Спасибо, Мартин. В настоящее время мы используем ActivePerl 5.8.8. Я также пытаюсь решить, следует ли перейти на более актуальную версию, но это вопрос для другого потока. 🙂
2. Да, я тоже застрял
ASP 5.8.8
, преобразование в strawberry 5.10 было довольно тривиальным в моем случае (но я не преобразовал все). Хорошо, что даже с установленным ASP 5.8 вы все равно можете использовать Strawberry portable edition, поскольку все, от чего зависит perl, — это правильные настройки пути, и они тривиально исправлены для скрипта portable launcher.