Мне нужно взаимодействовать с C / C ++ из приложений Java Enterprise. Я хотел бы написать класс, который сможет собирать информацию об узлах и ячейках, возможно, любую дополнительную информацию о том, где развернуто приложение, поэтому я могу, начиная с C ++, отследить JAR в файловой системе, откуда поступил вызов ( авторитетно). Есть ли конкретная библиотека Java, которую я мог бы использовать, которая даст такую информацию о приложении? В идеале, то, что произошло бы: (давайте назовем это EnvProvider)
- Приложение Java вызывает EnvProvider
- EnvProvider собирает информацию о приложении Java, которое его вызвало
- EnvProvider вызывает оболочку C ++ (возможно, CORBA, SOAP?) И передает эту информацию
- C ++ отслеживает создание резервной копии файловой системы для вызывающего приложения, чтобы проверить фактические JAR-файлы, откуда поступил предполагаемый вызов приложения.
Это звучит тривиально (обрисовано в общих чертах здесь всего за 4 шага), но из моих исследований до сих пор выясняется, что нет хорошего способа получить достаточно информации о приложении Java из самого приложения Java. «Достаточно» информации, я говорю о достаточном количестве, чтобы дать C ++ достаточно информации, чтобы пройтись по файловой системе и найти развернутый EAR, JAR, WAR.
Любая информация, которую вы могли бы предоставить, была бы очень признательна!
Привет
Чад
* РЕДАКТИРОВАТЬ *
Ким, спасибо за ответ. Позвольте мне немного объяснить, почему мне нужен этот конкретный след.
Я работаю с / с криптографической библиотекой, написанной на C / C ++. Они были написаны моим предшественником здесь (где я работаю), и они очень хорошо проверены. Однако они предоставляют больше, чем просто шифрование, а содержащиеся в них алгоритмы являются собственностью и должны оставаться безопасными. Это исключает реализацию того же самого в Java, поскольку Java слишком легко перекомпилируется. Фактически, мой предшественник пошел на многое (оправданно), чтобы запутать исходный код C / C ++. Эти библиотеки хорошо работают с Shell, собственными двоичными исполняемыми файлами C / C ++ (.exe и т. Д.), А также с другими приложениями, вызов которых поступает из (в основном) полностью закрытого приложения. Этот источник предоставляет способы гарантировать, что приложение, вызывающее его, на самом деле является доверенным приложением (звучит похоже на подписание кода, но я могу заверить вас, что то, что он делает с этими исходными файлами, намного сложнее).
Я пытаюсь расширить эту функциональность в нашей архитектуре Enterprise Java, и для этого мне нужно иметь возможность вернуться туда, откуда поступил вызов, даже если это означает просто перейти к развернутой WAR или даже к EAR, в который было упаковано приложение, поэтому я могу использовать исходные файлы с исходным кодом C / C ++. Поэтому, если вызов поступил из приложения A, а приложение было развернуто в App_A.EAR, я хотел бы получить эту информацию и вызвать C / C ++, проследить до этого EAR и поработать с ним. Если это звучит странно, я прошу прощения, но я (из-за поведения) опускаю большую часть того, для чего используются файлы (.exe или JAR / WAR / EAR).
Еще раз спасибо за любую помощь, которую вы могли бы оказать!
* РЕДАКТИРОВАТЬ *
Чад