powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с загрузкой 2х DLL использующих 2 ВиртДжаваМашины. Кто нибуюдь в курсе ?
6 сообщений из 6, страница 1 из 1
Проблема с загрузкой 2х DLL использующих 2 ВиртДжаваМашины. Кто нибуюдь в курсе ?
    #38453805
Pruvetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Сразу уточню:
- я Delphi программист. С Джавой не работаю вообще никак.

- Суть проблемы подробно пока сам не знаю ! Она возникла пару часов назад, и мне о ней рассказал наш менеджер, контактирующий с заказчиком. Описываю проблему со слов нашего заказчика, описавшем все в телефонном разговоре - он должен выслать какое то подробное описание в ближайшее время.

Задам вопрос на удачу, может решение простое и все о нем знают :)

Суть проблемы такая (записано со слов позвонившего заказчика)
У заказчика есть Delphi программа DelphiProg

Также заказчика есть некий софт "JavaProg1" , написанный на Java. Разработчики этого "JavaProg1" предоставили DLL-прослойку JavaProxy1 (не знаю на каком она языке написана), для обращения к этому софту из любых языков. Обыкновенная DLLка.

Мы написали модуль DelphiProxy1 (pas файл, с исходным кодом) на Delphi, который обращается к этой DLL-Прослойке JavaProxy1.

DelphiProg -> DelphiProxy1 -> JavaProxy1 -> JavaProg1

Уже почти месяц заказчик тестирует эту нашу DelphiProxy1.

Сейчас ВНЕЗАПНО у заказчика обнаружилось, что его Delphi программа DelphiProg использует еще какую-то "JavaProg2" но через COM.

DelphiProg -> через COM ->JavaProg2 (возможно там есть какие то прослойки, о которых заказчик не уточнил в телефонном разговоре)
Судя по всему COM объект тоже в DLLке реализован. Или я ошибаюсь.

Сам баг
Сама проблема проявляется, если DelphiProg заказчика начинает работать с обеими программами (JavaProg1 и JavaProg2) - и на словах она звучит как "в одном адресном пространстве не могут крутится две виртуальные Джава Машины".

Вот еще некий поток речи с описанием ошибки, записанный с телефонного разговора " Обе библиотеки не могут делить JVM, если в момент инициализации передаются критические параметры, как, например, локализация источников (ресурсов). Здесь возможна неоднозначность при объединении ресурсов нескольких приложений. "

Еще заказчик утверждает, что если переписать библиотеку в виде отдельного процесса, то проблема уйдет. Мол мы в своем процессе будем загружать одну ДжаваМашину, а другая либа будет грузить другую ДжаваМашину.

Плохо лишь, что времени крайне мало, чтобы сейчас все переписывать в отдельном процессе.



Кто нибудь знает об этой проблеме ? Как заставить DLLки не загружать две JVM, а использовать одну общую ?

Вариант "послать заказчика лесом" не прокатит. Его проблемы, это и наши проблемы :)

Спасибо :)
...
Рейтинг: 0 / 0
Проблема с загрузкой 2х DLL использующих 2 ВиртДжаваМашины. Кто нибуюдь в курсе ?
    #38454493
Pruvetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никто не сталкивался с такой проблемой ?

Что если обращаться из одного приложения к двум Джава программам, то идет попытка загрузки двух экземпляров ДжаваВртМашины и это приводит к ошибке ?
...
Рейтинг: 0 / 0
Проблема с загрузкой 2х DLL использующих 2 ВиртДжаваМашины. Кто нибуюдь в курсе ?
    #38454504
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас есть некий нативный код, который приводит к некой ошибке. При этом совершенно не понятно как именно этот код испольузет JVM. Проблема не в JVM, а в коде, который её использует. Не понятно ни как COM обращается к JVM, ни как это делают остальные ваши DLL.
...
Рейтинг: 0 / 0
Проблема с загрузкой 2х DLL использующих 2 ВиртДжаваМашины. Кто нибуюдь в курсе ?
    #38454584
Pruvetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понятно.
Все осложняется тем, что действительно я и сам понятия не имею как идет работы с Джавой в этих двух программах. Т.к. мы используем официальную прослойку от разработчиков софтины. Про вторую прогу вообще информации почти 0 (только то, что она вроде бы через COM общается с Джавой).

Я надеялся, что эта проблема с загрузкой двух копий виртуальной машины в одно адресное пространство, это какая то достаточно известная баго-фича. Мол уж наверняка много кто был вынужден обращаться из своих программ в ДВЕ и более Джава программы, и наверное сталкивались с стакой заметной баго-фичей, а соответственно знают о ее решении.

У меня вообще были изначально сильные сомнения что такая бага может существовать. Не верится, что в эволюционирующей много лет Джаве могут быть такие глупые детские ограничения. Наверное дело в программах.

Будем разбираться пока.
Спасибо.
...
Рейтинг: 0 / 0
Проблема с загрузкой 2х DLL использующих 2 ВиртДжаваМашины. Кто нибуюдь в курсе ?
    #38454646
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использовать Java из нативного кода можно разными способами.
Единстыенный стандартный это JNI, который подымает JVM в вашем процессе.
Никакого станадартного решения для обращения к JVM через COM нет.
Создают ли ваши прокси JVM - не понятно.
Если оба способа создают JVM в одном и том же процессе, то их стоит переписать так чтобы они умели обнаруживать уже существующую JVM.
http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html
...
Рейтинг: 0 / 0
Проблема с загрузкой 2х DLL использующих 2 ВиртДжаваМашины. Кто нибуюдь в курсе ?
    #38454817
Pruvetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Спасибо за ссылку. Может быть она поможет !
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с загрузкой 2х DLL использующих 2 ВиртДжаваМашины. Кто нибуюдь в курсе ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]