Назад | Перейти на главную страницу

Какие проблемы вам нужно проверить при развертывании java-приложения в Linux?

Какие проблемы следует специально проверять при развертывании серверного приложения, написанного на Java (без каких-либо конкретных зависимостей от платформы), которое было написано и протестировано в Windows.

Два, о которых я знаю:

  1. Имена файлов с учетом регистра
  2. Доступные шрифты

Убедитесь, что любые сторонние JAR-файлы, которые вы используете (например, SWT) имеют соответствующую платформо-зависимую версию. Хотя вы сказали «без каких-либо конкретных зависимостей от платформы», поведение, зависящее от платформы, иногда может быть скрыто.

Также:

  1. Пути к файлам (есть ли у вас такие пути, как C:\Program Files?)
  2. Пути к файлам (вы используете '/' или '\' или используете соответствующую константу File.pathSeparator?)
  3. Как найти важные каталоги, такие как домашний каталог пользователя?
  4. Если вы открываете сокеты ниже 1024 порта, станете ли вы пользователем root в UNIX?
  5. Будете ли вы использовать Sun JVM, gcj или другую JVM? Повлияют ли различия в реализации или производительности на ваше приложение?
  6. Ознакомьтесь с примечаниями к выпуску JVM (например, для J2SE 5 или Java SE 6) для упоминания ошибок или других различий в поведении на выбранных вами платформах.

1) Убедитесь, что ваши JVM идентичны на обеих платформах. 2) Вероятно, потребуется некоторый уровень настройки JVM. 3) Включите ведение журнала вашей JVM на короткий период времени, чтобы определить, есть ли у вас проблемы.

Вы почти наверняка захотите установить

-Djava.awt.headless=true

на случай, если какие-либо библиотеки попытаются выполнить рендеринг шрифтов, манипуляции с изображениями или что-то еще, что касается Swing, AWT или ImageIO

По общему признанию, не особенно специфичен для Windows-Unix, но стоит отметить, исходя из нашего опыта:

  • Проверьте настройки в $ JAVA_HOME / jre / lib / security / java.security - особенно networkaddress.cache.ttl - Sun JRE по умолчанию будет кэшировать запросы DNS навсегда, что несколько раз укусило нас и наших клиентов. '-Dsun.net.inetaddr.ttl=60'должен переопределить его из командной строки.

  • Убедитесь, что вы используете кучу подходящего размера: -Xmx2048m или аналогичный (в зависимости от требований вашего приложения)