Как нам. DLL в веб-приложении на основе Java - PullRequest
1 голос
/ 28 апреля 2010

У меня есть веб-приложение j2ee. Есть ли способ использовать файл .dll в нем.

Ответы [ 3 ]

1 голос
/ 28 апреля 2010

Во-первых, ваш сервер приложений должен иметь возможность загружать собственные библиотеки из загрузчиков классов приложений, чтобы System # loadLibrary работала; другими словами, он должен реализовывать ClassLoader # findLibrary. В противном случае вы должны использовать System # load и каким-то образом знать абсолютный путь к вашей dll.

Во-вторых, размещение собственных библиотек в приложении J2EE повлияет на возможность перезапуска приложения, поскольку JNI ограничивает возможность загрузки несколькими родными загрузчиками одной и той же собственной библиотеки. Если загрузчик класса приложения из первого экземпляра приложения не подвергается сборке мусора перед попыткой перезапустить приложение (либо из-за утечки, либо из-за того, что GC непредсказуем), то второй экземпляр приложения, скорее всего, не будет работать, если он не сможет загрузить родную библиотеку. По этой причине я рекомендую размещать собственные библиотеки и классы, которые их используют, в загрузчике классов на уровне сервера или по крайней мере в том, который гарантированно никогда не будет перезагружен.

1 голос
/ 29 апреля 2010

Что вам нужно, это то, что называется Java Native Interface.

Очень простая статья, которая поможет вам в этом, - Основы JNI - 1. Более глубокой «статьей» (или лучшей книгой) является Руководство и спецификация JavaTM Native Interface Programmer. Доступен еще один хороший учебник от IBM developerworks: Java-программирование с JNI (вы должны зарегистрироваться, но это бесплатно и стоит).

1 голос
/ 28 апреля 2010

Да, вы можете просто использовать JNI / System#loadLibrary() так же, как в обычном приложении Java. Вам нужно только понять, что это выполняется на стороне сервера, , а не на стороне клиента. Если вы намереваетесь запустить это на стороне клиента, то вам нужно предоставить его в виде приложения или веб-запуска .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...