Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации

Руководство разработчика Моста ActiveX

Реализация для SDK/JRE 1.4.2 и Выше

Этот документ включает следующие темы:

Глава Приложений В качестве примера описывает два приложения в качестве примера.

Краткий обзор

Мост ActiveX позволяет компонентно-ориентированному на JavaBeans (ТМ) компонентная архитектура ("боб") быть эффективно упакованным как элемент управления ActiveX, таким образом позволяя это использоваться в качестве функционального компонента в контейнере ActiveX.

Отметьте, что эта реализация Моста ActiveX, возможно, не является совместимой с предыдущей реализацией для SDK/JRE 1.1 до 1.3.1. Чтобы использовать новый мост, бобы должны будут быть повторно упакованы.

Поддерживаемое OSs и Контейнеры ActiveX

В целях разработки эта реализация поддерживает следующее OSs и Контейнеры ActiveX:

OSs: Windows NT, 2000, XP.

Контейнеры ActiveX: Visual Studio 6.0 с SP3.

Отметьте, что упакованные бобы должны работать на любой платформе Windows и в любом контейнере ActiveX — не только те платформы и упомянутые выше контейнеры.

Упаковка Боба

Примечания

1. Выполнение поставщика программного блока (packager.exe) требует, чтобы у Вас был следующий, установленный на Вашем компьютере:

  • SDK 1.4.2 или выше
  • Microsoft Visual C++ 6.0 с SP3

2. Для packager чтобы работать Вы должны первый показ VCVARS32.BAT. cd к /bin каталог, где это располагается в Вашей установке Microsoft Visual C++ и типе VCVARS32.

Использовать packager.exe к сгенерированному .dll для боба.

Использование packager.exe следующие:

Packager Использование

Usage: packager [-options] <jar file name> <bean name><jar file name> <bean name>

where options include:
   -clsid <class-id><class-id>         CLSID for the packaged bean
   -out <output directory><output directory>   destination directory for the packaged bean
   -reg                      consent to register the Active-X control

Дополнительная информация

Пример

Например, предположить <bean>.jar jelly.jar; jelly.jar располагается в C:\my_bean_jars; полностью определенное бобовое имя sunw.demo.jelly.JellyBean; и SDK j2sdk1.4.2. Вы могли работать packager.exe следующим образом:

C:\j2sdk1.4.2\bin\packager -clsid {D824B185-AE3C-11D6-ABF5-00B0D07B8581}
                           -out C:\Program Files\Java\j2re1.4.2\axbridge\bin
                           -reg C:\my_bean_jars\jelly.jar sunw.demo.jelly.JellyBean

Поставщик программного блока был бы:

Вручную Регистрация боба .dll

Если Вы не используете -reg опция с packager.exe как показано выше, можно вручную зарегистрироваться .dll с regsvr32.exe. cd к каталогу, где .dll файл располагается (например, C:\Program Files\Java\j2re1.4.2\axbridge\bin) и введите:

<path_regsvr32>\regsvr32 <bean name>.dll

Предположите, что Вы выполняете Windows 2000. regsvr32.exe располагается в C:\winnt\system32 на Windows 2000. Затем зарегистрироваться JellyBean.dll Вы сделали бы это:

C:\Program Files\Java\j2re1.4.2\axbridge\bin>C:\winnt\system32\regsvr32 JellyBean.dll

Это будет:

Используя Боб в Приложении

Теперь, когда боб регистрируется как элемент управления ActiveX, следует быть в состоянии вставить его в контейнер ActiveX. В случае Тестового Контейнера элемента управления ActiveX, который идет с Visual Studio в главном меню, идут в Edit>Insert New Control... и прокрутите список вниз, пока Вы не находите бобовое управление. В случае JellyBean.dll управление, это обнаруживается как JellyBean Bean Control. Ниже этого показывается вставленным в тестовый контейнер Visual Studio.

Тестовый контейнер Visual Studio

Развертывание

Чтобы развернуть боб, упакованный как элемент управления ActiveX в приложении, Вы должны будете включать регистрацию .dll как часть процесса установки. .dll должен быть установлен в <jre_home>axbridge\bin каталог, и это должно быть зарегистрировано там с regsvr32.exe. Как утверждено ранее, когда .dll регистрируется, боб .jar будет помещен в <jre_home>\axbridge\lib каталог.

Объекты Java в Среде Моста ActiveX

Объекты Java доступны через объекты обертки, поддерживающие IDispatch интерфейс; то есть, к ним получают доступ косвенно через Мост ActiveX. Например, если Вы работаете с упакованным бобом в Visual Basic (VB) и хотите передать объект Java как параметр бобовому методу, необходимо, чтобы любой (1) у боба был метод, который возвращает необходимый тип объекта Java; или (2) объект Java доступен как бобовое свойство.

Например, рассмотрите календарный пример, JCalendarPanel, в главе В качестве примера.

Если бы Вы работали непосредственно в Java с этим бобом, то Вы создали бы a Date объект, набор его свойства, затем передает это как параметр setSelectedDate() метод JCalendarePanel. Путем это делается с Мостом ActiveX следующим образом:

Принятие Вас работает в VB и имеет экземпляр JCalendarPanel вызванный JCalendarPanel1, в VB Вы могли использовать JCalendarPanel1.selectedDate свойство, чтобы получить a Date объект:

Set dat = JCalendarPanel1.selectedDate

Затем Вы использовали бы методы VB Date объект (dat) установить это. Например:

dat.setYear (1986 - 1900)
dat.setMonth (11 - 1)
dat.setDate 24

Наконец, Вы использовали бы setSelectedDate метод JCalendarPanel1 назначать дату:

JCalendarPanel1.setSelectedDate dat

Другие Соображения

Методы и Перегрузка метода

Все методы, обеспеченные BeanInfo через getMethodDescriptors() доступны от контейнеров ActiveX.

Однако, если метод будет перегружен, то только метод, который берет самое большое количество параметров, будет доступен. Это - то, потому что IDL COM не поддерживает перегрузку. Однако, значение аргумента и тип возвращаемого значения будут VARIANT. Каждый параметр является дополнительным. Для любого перегруженного метода Вы должны будете сослаться на бобовую документацию, чтобы знать точное число параметров и их типов. Отбрасываются методы или имена свойства, которые идентичны любому ключевому слову MIDL.

Свойства

Все свойства доступны хотя мост с тем же самым правом доступа как определено в BeanInfo через PropertyDescriptor. Мост ActiveX вызовет методы средства доступа как определено в PropertyDescriptor.

Если бобовое свойство bound или constrained, bindable или requestedit флаги устанавливаются в атрибутах свойства COM. Контейнер уведомляется относительно изменения свойства через IPropertyNotifySink интерфейс. Если свойство ограничивается, и контейнер отрицает изменение свойства, то боб PropertyVetoException бросается мостом.

Для типов примитивов и для строки, шрифта, и свойств цвета, большинство контейнеров ActiveX как Visual Basic позволит непосредственному управлению войти свойствами их PropertySheet. Для всех других свойств, таких как массивы или объекты, свойства не будут доступны в PropertySheet но может все еще быть вызван через язык сценариев, связанный с контейнером.

Свойства окружения

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

DISPID_BACKCOLOR
DISPID_FORECOLOR
DISPID_FONT
DISPID_ENABLED

Мост передаст изменения свойства окружения контейнера ActiveX к бобу через установку свойств.

События

Все исходные интерфейсы, которые объявляются как значение по умолчанию в EventSetDescriptor массив, возвращенный BeanInfo будет объединен в один интерфейс, который объявляется как являющийся исходным интерфейсом значения по умолчанию ActiveX. Это - требование ActiveX, чтобы, по крайней мере, исходный интерфейс значения по умолчанию был доступен контейнерами ActiveX.

Каждый метод, возвращенный getListenerMethodDescriptors API EventSetDescriptor отображается на событие ActiveX. Имя события является именем метода. Так как все интерфейсы значения по умолчанию бобов объединяются с уникальным интерфейсом, интерфейсы, которые содержат то же самое имя метода, не позволяются.

Рассмотрите, например java.awt.event.ActionListener исходный интерфейс:

public interface ActionListener extends EventListener {
  public void actionPerformed(ActionEvent e);
}

Имя события ActiveX, сгенерированное из этого определения интерфейса, actionPerformed. Например, в случае Visual Basic подпись события похожа на это:

Private Sub Button_actionPerformed (ByVal evt As Object)
  MsgBox evt.toString
End-Sub

evt если к контейнеру объект автоматизации, который представляет java.awt.AWTEvent Object. Контейнеры могли получить доступ к информации о событии, вызывая методы, поддерживаемые AWTEvent class.

Безопасность

Боб, упакованный как элемент управления ActiveX, будет частью автономного приложения. Следовательно это будет выполняться вне модели обеспечения безопасности поля песка апплета.

В сценариях Internet Explorer боба не безопасно, поскольку это предоставили AllPermission разрешение.

Конфигурация JVM

Отметьте, что можно сконфигурировать JVM через Панель управления Java. Следующие вкладки относятся к Мосту ActiveX:

Можно использовать Консоль Java для того, чтобы отладить бобы.

 


Oracle и/или его филиалы Авторское право © 1993, 2012, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами