Информационная безопасность

Информационная безопасность прежде всего связана с безопасностью сервера базы данных и сервера приложений.

С помощью входящего в состав Oracle Fusion Middleware 11g пакета Oracle Identity Management создается единая, интегрированная платформа безопасности, позволяющая управлять учетными данными и правами пользователей, распределять ресурсы среди пользователей, обеспечивать безопасность доступа к корпоративным ресурсам, а также контролировать результаты аудита в масштабах корпоративных приложений.

Пакет Oracle Identity Management обеспечивает защиту крупных распределенных сетей приложений, позволяя достигать нового уровня безопасности для защиты ресурсов предприятия и управления связанными процессами обеспечения безопасности. Oracle IM обладает повышенным КПД благодаря высокому уровню интеграции, консолидации и автоматизации составляющих его компонентов. Кроме того, продукт удобен в управлении и обладает повышенной эффективностью в сферах безопасности приложений, управления рисками, а также интеграции с системами управления базами данных.

Компоненты Oracle Identity Management

В пакет Oracle Identity Management входят следующие продукты.

Oracle Identity Manager (OIM) – отвечает на вопрос: "Кто получил доступ к Чему, Когда, Как, и Почему?" OIM предназначается для администрирования прав доступа в отношении всех ресурсов компании со стороны пользователей как внутренней, так и внешней сети, начиная с изначального процесса их регистрации до завершающего шага блокирования учетной записи.

При использовании во внешней сети, отличная масштабируемость OIM позволяет предприятиям обеспечивать миллионам заказчиков доступ к ресурсам компании при помощи традиционных клиентов (например браузеров) или смартфонов.

Oracle Role Manager (ORM) – содержит полный набор функций для управления жизненным циклом бизнес-ролей в масштабах предприятия. ORM является доверенным источником корпоративных ролей в пакете продуктов Oracle IM. Oracle Identity Manager и ORM дополняют друг друга, обеспечивая ролевой доступ при управлении правами и полномочиями.

Oracle Access Manager (OAM) предоставляет централизованные, управляемые политиками службы аутентификации, функцию единого входа (SSO), а также механизм подтверждения аутентификации. OAM интегрируется с разнообразными механизмами аутентификации, веб-серверами и серверами приложений от сторонних разработчиков, а также основанными на стандартах переносимыми решениями единого входа для обеспечения максимальной гибкости и создания интегрированного, полного решения для контроля веб-доступа. OAM дополняет собственные функции авторизации и выявления атрибутов интеграцией с Oracle Entitlements Server, позволяющей выполнять детальную авторизацию в приложениях, базах данных и веб-службах.

Oracle Web Services Manager (OWSM) – для веб-служб является тем же, чем Oracle Access Manager является для веб-приложений. OWSM разработан для защиты доступа к многочисленным типам ресурсов, среди которых совместимые со стандартами веб-службы (Java EE, Microsoft.NET, PL/SQL, и т.д.); композитные приложения сервис-ориентированной архитектуры (SOA), включая процессы BPEL и процессы сервисной шины предприятия (ESB); а также удаленные портлеты Oracle WebCenter.

Oracle Identity Federation (OIF) - является автономным решением, позволяющим при помощи браузера выполнять кросс-доменный единый вход с использованием индустриальных стандартов (Security Assertion Markup Language - SAML, Liberty ID-FF, WS-Federation). В OIF 11 g R1 реализована поддержка протокола Microsoft Windows CardSpace (например, провайдер удостоверений OIF может предложить пользователю выполнить вход по протоколу CardSpace, после чего вернуть подтверждение SAML, созданное на основании аутентификации и атрибутов CardSpace).

Oracle Enterprise Single Sign-On (eSSO) – это пакет для рабочих станций Microsoft Windows. Его компоненты предоставляют функции объединенной аутентификации и единого входа для приложений "толстых" и "тонких" клиентов, не требуя модификации имеющихся приложений. Oracle eSSO позволяет корпоративным пользователям использовать единый вход для всех своих приложений, при этом пользователь может быть подключен к корпоративной сети, находиться вдали от офиса, перемещаться между компьютерами или работать на общем компьютере.

Oracle Entitlements Server (OES) – является подсистемой детальной авторизации, реализующей, объединяющей и упрощающей управление сложными политиками выделения прав. OES обеспечивает безопасность доступа к ресурсам приложений и программным компонентам (таким как URL-адреса, Enterprise JavaBeans и Java Server Pages), а также к произвольным бизнес-объектам (таким как учетные записи заказчиков или информация о пациентах в базе данных). OES предоставляет централизованный пункт администрирования комплексных политик выделения прав, который может применяться в широком спектре деловых и информационно-технологических систем.

Oracle Adaptive Access Manager (OAAM) – защищает ресурсы, в режиме реального времени предотвращая попытки мошенничества, выполняя аутентификацию с использованием нескольких факторов, а также используя уникальный механизм усиления аутентификации. OAAM состоит из двух основных компонентов, в совокупности являющихся одним из самых мощных и гибких средств для борьбы с мошенничеством. Компонент Adaptive Strong Authenticator обеспечивает многофакторную аутентификацию и предоставляет механизмы защиты конфиденциальной информации, такой как пароли, токены, номера счетов и другие важные данные. Компонент Adaptive Risk Manager предоставляет функции анализа рисков (работающие как в режиме реального времени, так и в автономном режиме), а также позволяет выполнять операции по предотвращению мошеннических действий в критические моменты входа в систему и осуществления транзакции. Oracle Directory Services Oracle Internet Directory (OID) предоставляет компонентам Oracle Fusion Middleware, приложениям Oracle Fusion и внутренним корпоративным приложениям стандартизованный механизм, использующий протокол LDAP для хранения учетных данных и доступа к ним. К таким данным относятся данные идентификации пользователя (использующиеся при аутентификации), привилегии доступа (для авторизации) и сведения профиля. Продукт Oracle Virtual Directory (OVD) разработан для осуществления агрегации и преобразования учетных данных в режиме реального времени, без копирования или синхронизации данных.

Oracle Platform Security Services

В лице продукта Oracle Platform Security Services (OPSS)корпоративные разработчики, системные интеграторы и независимые производители ПО получаютоснованный на стандартах, переносимый, интегрируемый каркас безопасности корпоративного уровня для приложений Java Platform, Standard Edition (Java SE) и Java Platform, Enterprise Edition (Java EE). OPSS избавляет разработчиков от задач, напрямую не связанных с разработкой приложений, предоставляя слой абстракции в виде стандартизованных API. OPSS является фундаментом безопасности для Oracle Fusion Middleware: все компоненты Oracle Fusion Middleware 11 g и приложения Oracle Fusion используют службы OPSS. Oracle Management Pack for Identity Management

Oracle Identity Management и Oracle Database Security

По сравнению с другими средствами управления учетными данными предложение Oracle характеризуется большей гибкостью и широтой выбора, предлагаемого заказчику. Это достигается благодаря интеграции компонента Oracle Virtual Directory (OVD) с функцией СУБД Oracle Enterprise User Security (EUS), позволяющей организациям выполнять центральное управление удостоверениями пользователей БД при помощи имеющихся корпоративных каталогов, таких как Oracle Internet Directory (OID), Microsoft Active Directory и Sun Java System Directory Server. Благодаря интеграции OVD и EUS организации могут использовать функцию виртуализации учетных данных для управления правами пользователей БД и их привилегированными ролями в рамках разнообразных хранилищ, без необходимости переноса или синхронизации данных. Кроме того, OID использует две уникальных функции безопасности баз данных: Oracle Database Vault (контролирующую разграничение обязанностей администраторов БД) и Oracle Transparent Encryption.

Oracle Database Vault защищает данные удостоверений от доступа или манипуляций со стороны лиц, не имеющих доступа к протоколу OID. Функция Transparent Data Encryption выполняет шифрование данных в БД. Таким образом, даже если несанкционированный пользователь получит доступ к базе данных, он не сможет прочитать данные. Функции Oracle Database Vault и Oracle Transparent Data Encryption позволяют Oracle предлагать единственные службы каталогов, обеспечивающие полную защиту от хранилища до клиента.



ЗАКЛЮЧЕНИЕ

В дипломном проекте была разработана информационная система отслеживания полетов воздушных судов. Был проведен анализ требований и предложено проектное решения. Было разработано веб-приложение, работающее с картой перелетов. Были рассмотрены и реализованы задачи, связанные с хранением и отображением пространственных данных. Была проведена работа по чтению и использованию xml файлов. Также были рассмотрены вопросы реализации архитектуры «тонкого клиента». Предположительный эффект от использования системы состоит в уменьшении времени поиска информации пользователем более чем в два раза, а, значит, уменьшении себестоимости перевозки грузов и увеличению прибыли авиакомпании.

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


СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1.  Родионов, В. В. Р 60 Дипломное проектирование: учебно-методическое пособие для студентов специальности 23020165 «Информационные системы и технологии» / В. В. Родионов. – Ульяновск: УлГТУ, 2008. – 98 с.

2. Меняев М.Ф. Содержание организационно-экономической части дипломного проекта (для проектов, связанных с разработкой программного обеспечения):
 Учебное пособие. ‑М.: Изд-во МГТУ им. Н.Э. Баумана, 2002.‑ 24 с.

3. Буч Г., Рамбо Д., Якобсон И. Язык UML. Руководство пользователя. 2-е изд.: Пер. с англ. Мухин Н. – М.: ДМК Пресс, 2006. – 496 с.: ил.

4. C. Murray Oracle Spatial User’s Guide and Reference / C. Murray. – Redwood City, 2006. – 594 pp.

5. C. Murray Oracle® Fusion MiddlewareUser's Guide for Oracle MapViewer / C. Murray. – Redwood City, 2009. – 360 pp.

6. Поиск геопространственных данных с применением MapViewer [Электронный ресурс]: В этой статье представлен MapViewer, компонент сервера приложений Oracle Application Server 10 g, и приложение-пример, включающее описание наборов данных, базы данных и установки Oracle Application Server Containers for J2EE (OC4J), которые используются компонентом MapViewer для показа актуальной информации, определяемой месторасположением. – Режим доступа: http://citforum.ru/database/oracle/tema_ora_map2/.–Загл. с экрана.





ПРИЛОЖЕНИЕ А

Исходные тексты программы


 

CityListener.java

 

package view;

 

import java.io.FileNotFoundException;

import java.io.IOException;

import javax.faces.context.FacesContext;

import javax.faces.event.ValueChangeEvent;

import model.ParseCitiesXML;

import oracle.adf.model.BindingContext;

import oracle.adf.model.OperationBinding;

import oracle.adf.model.binding.DCBindingContainer;

import oracle.adf.model.binding.DCIteratorBinding;

import oracle.adf.view.faces.bi.component.geoMap.MapInfoCallbackObject;

import oracle.adf.view.faces.bi.event.MapClickActionEvent;

import oracle.adf.view.faces.bi.event.MapSelectionEvent;

import oracle.adf.view.rich.context.AdfFacesContext;

import oracle.jbo.Row;

import oracle.jbo.ViewObject;

import org.xml.sax.SAXException;

 

public class CityListener {

 

public CityListener() { //Konstructor

   super();

}

 

public void setPopUpString(String popUpString) {

   this.popUpString = popUpString; }

 

public String getPopUpString() {

   return popUpString; }

 

public void setDescrString(String descrString) {

   this.descrString = descrString; }

 

public String getDescrString() {

   return descrString; }

 

public void setSource(String newQuery) {

   System.out.println("Set Source");

   DCBindingContainer bc = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();

   OperationBinding oper = (OperationBinding)bc.getOperationBinding("changeCityDiscrQuery");

   oper.getParamsMap().put("newQuery", newQuery);

   oper.execute();

}

 

public String cityAction() {

   System.out.println("City action run");

   DCBindingContainer bindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();

   DCIteratorBinding dcItteratorBindings = bindings.findIteratorBinding("CitiesView1Iterator");

   ViewObject voTableData = dcItteratorBindings.getViewObject();

   Row rowSelected = voTableData.getCurrentRow();

   String str = rowSelected.getAttribute("IdCity").toString();

   System.out.println("Id city is " + str);

    

 

setSource(str); return null; }}

 

ParseXML.java

 

package model;

import com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl;

import com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl;

import java.io.FileNotFoundException;

import java.io.IOException;

import oracle.xml.jaxp.*;

import java.io.StringReader;

import javax.xml.parsers.ParserConfigurationException;

import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;

import org.xml.sax.InputSource;

import org.xml.sax.SAXException;

import org.xml.sax.SAXParseException;

import org.xml.sax.helpers.DefaultHandler;

 

 

public class ParseXML extends DefaultHandler {

private String marker;

private String colorId;

private String colorRGB;

private Double size;

private String sql;

private int nom;

 

public ParseXML() {

   super();

   this.marker = null;

   this.colorId = null;

   this.colorRGB = null;

   this.size = 0.0;

   this.sql = null;

}

 

public void parseXMLDocument(String xmlString) throws FileNotFoundException,

                                                     SAXException, IOException

                                                      {

   try {

       SAXParserFactory obj = SAXParserFactory.newInstance();

       SAXParserFactoryImpl factory = (SAXParserFactoryImpl)obj;

       SAXParserImpl saxParser = (SAXParserImpl)factory.newSAXParser();

       saxParser.parse(new InputSource(new StringReader(xmlString)), this);

 

   } catch (ParserConfigurationException e) {

       System.err.println(e.getMessage());

   } catch (FileNotFoundException e) {

       System.err.println(e.getMessage());

   } catch (IOException e) {

       System.err.println(e.getMessage());

   } catch (SAXException e) {

       System.err.println(e.getMessage());

   }

}

 

public void startDocument() throws SAXException {

   System.out.println("SAX Event: Start Document"); }

 

public void endDocument() throws SAXException {

   System.out.println("SAX Event: End Document");

   System.out.println("Marker is: "+ this.getMarker());

   System.out.println("Color_id is: " + this.getColorId());

   System.out.println("ColorRGB is: " + this.getColorRGB());

   System.out.println("Size is: " + this.getSize());

   System.out.println("SQL is: " + this.getSql());

}

 

public void setNom(String qName) {

   if (qName.equals("marker"))

       nom = 1;

   else if (qName.equals("color_id"))

       nom = 2;

   else if (qName.equals("color_rgb"))

       nom = 3;

   else if (qName.equals("size"))

      nom = 6;

   else if (qName.equals("sql"))

       nom = 7;

   System.out.println("Nom: " + nom);

}

 

public void startElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName,

                        Attributes atts) throws SAXException {

   System.out.println("SAX Event: Start Element" + qName);

   setNom(qName);

}

 

public void endElement(java.lang.String namespaceURI, java.lang.String localName,

                      java.lang.String qName) throws SAXException {

   System.out.println("SAX Event: End Element " + qName);

}

 

public void characters(char[] ch, int start, int length) throws SAXException {

   //System.out.println("SAX Event: Text");

   String text = new String(ch, start, length).trim();

 

   if (text.length() > 0) {

       System.out.println("Text:" + text);

       switch (nom) {

       case 1:

           { setMarker(text); break; }

       case 2:

             { setColorId(text); break; }

       case 3:

           { setColorRGB(text); break; }

       case 6:

           { setSize(text); break; }

       case 7:

           { setSql(text); break; } } }

}

 

public void error(SAXParseException e) throws SAXException {

   System.err.println("Error:" + e.getMessage());

}

 

public void fatalError(SAXParseException e) throws SAXException {

   System.err.println("Fatal Error:" + e.getMessage());

}

 

public void warning(SAXParseException e) throws SAXException {

   System.out.println("Warning:" + e.getMessage());

}

 

 

public void setMarker(String marker) {

this.marker = marker; }

 

public String getMarker() { return marker; }

 

public void setSize(String str) {

   try {

       this.size = Double.parseDouble(str);

   } catch (NumberFormatException e) {

       System.out.println(e.getMessage());

   }

 

}

 

public double getSize() {

  return this.size;

}

 

public void setSql(String sql) {

   this.sql = sql;

}

 

public String getSql() {

   return sql;

}

   

public void setColorId(String colorId) {

   this.colorId = colorId;

}

 

public String getColorId() {

   return colorId;

}

public void setColorRGB(String colorRGB) {

   this.colorRGB = colorRGB;

}

 

public String getColorRGB() {

   return colorRGB;

}

}

 

faces-config.xml

 

<?xml version="1.0" encoding="windows-1251"?>

<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee">

<application>

<default-render-kit-id>oracle.adf.rich</default-render-kit-id>

</application>

<managed-bean>

<managed-bean-name>parseXML</managed-bean-name>

<managed-bean-class>model.ParseXML</managed-bean-class>

<managed-bean-scope>request</managed-bean-scope>

</managed-bean>

<managed-bean>

<managed-bean-name>queryListener</managed-bean-name>

<managed-bean-class>view.QueryListener</managed-bean-class>

<managed-bean-scope>request</managed-bean-scope>

</managed-bean>

<managed-bean>

<managed-bean-name>cityListener</managed-bean-name>

<managed-bean-class>view.CityListener</managed-bean-class>

<managed-bean-scope>request</managed-bean-scope>

</managed-bean>

<managed-bean>

<managed-bean-name>parseCitiesXML</managed-bean-name>

<managed-bean-class>model.ParseCitiesXML</managed-bean-class>

<managed-bean-scope>request</managed-bean-scope>

</managed-bean>

<managed-bean>

<managed-bean-name>queryFlightsListener</managed-bean-name>

<managed-bean-class>view.QueryFlightsListener</managed-bean-class>

<managed-bean-scope>request</managed-bean-scope>

</managed-bean>

<managed-bean>

<managed-bean-name>flightListener</managed-bean-name>

<managed-bean-class>view.FlightListener</managed-bean-class>

<managed-bean-scope>request</managed-bean-scope>

</managed-bean>

</faces-config>



 

page.jsf

 

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<f:view xmlns:f="http://java.sun.com/jsf/core" xmlns:af="http://xmlns.oracle.com/adf/faces/rich"

   xmlns:dvt="http://xmlns.oracle.com/dss/adf/faces">

 <af:document title="Airports and flights" id="d1">

   <af:messages id="m1"/>

   <af:form id="f1">

       <af:panelStretchLayout id="psl1">

           <f:facet name="center">

               <af:panelTabbed id="pt1">

                   <af:showDetailItem text="Airports" id="sdi2">

                       <af:panelSplitter id="ps2" orientation="vertical" splitterPosition="26"

                                         inlineStyle="width:auto; height:500px;">

                           <f:facet name="first">

                               <af:selectOneChoice value="#{bindings.QueryView1.inputValue}"

                                                   label="Search airports:"

                                                   required="#{bindings.QueryView1.hints.mandatory}"

                                                   shortDesc="#{bindings.QueryView1.hints.tooltip}" id="soc2"

                                                   autoSubmit="true"

                                                   valueChangeListener="#{queryListener.switchQuery}">

                                   <f:selectItems value="#{bindings.QueryView1.items}" id="si2"/>

                               </af:selectOneChoice>

                           </f:facet>

                           <f:facet name="second">

                               <af:panelGroupLayout layout="scroll" id="pgl4">

                                   <af:panelSplitter id="ps3" orientation="horizontal"

                                                     inlineStyle="height:auto; width:auto;"

                                                     positionedFromEnd="true"

                                                     splitterPosition="137" dimensionsFrom="auto">

                                       <f:facet name="first">

                                           <dvt:thematicMap id="tm1" basemap="world" summary="Thematic map"

                                                            inlineStyle="height:500px; width:800px;">

                                               <dvt:areaLayer layer="countries" id="al1"/>

                                               <dvt:pointDataLayer id="dl1" selectionMode="single"

                                                                   selectedRowKeys="#{bindings.CitiesView1.collectionModel.selectedRow}"

                                                                   selectionListener="#{bindings.CitiesView1.collectionModel.makeCurrent}"

                                                                   value="#{bindings.CitiesView1.collectionModel}"

                                                                   var="row">

                                                   <dvt:pointLocation type="pointXY" pointX="#{row.Longitude}"

                                                                      pointY="#{row.Latitude}" id="pl1">

                                                       <dvt:marker id="m2"

                                                                   fillColor="#{queryListener.fillColorRGB}"

                                                                   scaleX="#{queryListener.sizeIcon}"

                                                                   scaleY="#{queryListener.sizeIcon}"

                                                                   labelDisplay="on" value="#{row.Name}"

                                                                   action="#{cityListener.cityAction}"

                                                                   labelPosition="top"/>

                                                   </dvt:pointLocation>

                                               </dvt:pointDataLayer>

                                           </dvt:thematicMap>

                                       </f:facet>

                                       <f:facet name="second">

                                           <af:panelFormLayout id="pfl1">

                                               <af:panelLabelAndMessage label="Id city:" id="plam1">

                                                   <af:outputText value="#{bindings.IdCity.inputValue}" id="ot1">

                                                       <af:convertNumber groupingUsed="false"

                                                                         pattern="#{bindings.IdCity.format}"/>

                                                   </af:outputText>

                                               </af:panelLabelAndMessage>

                                               <af:panelLabelAndMessage label="Name:" id="plam2">

                                                   <af:outputText value="#{bindings.Name.inputValue}" id="ot2"/>

                                               </af:panelLabelAndMessage>

                                               <af:panelLabelAndMessage label="Airport:" id="plam3">

                                                   <af:outputText value="#{bindings.Airport.inputValue}" id="ot3"/>

                                               </af:panelLabelAndMessage>

                                               <af:panelLabelAndMessage label="State:" id="plam4">

                                                   <af:outputText value="#{bindings.Status.inputValue}" id="ot4"/>

                                               </af:panelLabelAndMessage>

                                               <af:panelLabelAndMessage label="Dangeros:" id="plam5">

                                                   <af:outputText value="#{bindings.Dangeros.inputValue}"

                                                                  id="ot5"/>

                                               </af:panelLabelAndMessage>

                                           </af:panelFormLayout>

                                       </f:facet>

                                   </af:panelSplitter>

                               </af:panelGroupLayout>

                           </f:facet>

                       </af:panelSplitter>

                   </af:showDetailItem>

                   <af:showDetailItem text="Flights" id="sdi1">

                       <af:panelSplitter id="ps1" splitterPosition="33"

                                         orientation="vertical" inlineStyle="width:auto; height:500px;"

                                         dimensionsFrom="auto">

                           <f:facet name="first">

                               <af:panelGroupLayout layout="scroll" id="pgl1">

                                   <af:selectOneChoice value="#{bindings.QueryFlightView1.inputValue}"

                                                       label="Search flights:"

                                                       required="#{bindings.QueryFlightView1.hints.mandatory}"

                                                       shortDesc="#{bindings.QueryFlightView1.hints.tooltip}"

                                                       id="soc1" autoSubmit="true"

                                                       valueChangeListener="#{queryFlightsListener.switchQuery}">

                                       <f:selectItems value="#{bindings.QueryFlightView1.items}" id="si1"/>

                                   </af:selectOneChoice>

                               </af:panelGroupLayout>

                           </f:facet>

                           <f:facet name="second">

                               <af:panelGroupLayout layout="scroll" id="pgl3">

                                   <dvt:mapToolbar mapId="map" id="mt2"/>

                                   <dvt:map id="map" startingX="0.0" mapServerConfigId="mapConfig1"

                                            baseMapName="AIRPORTS.WORLDTILELAYER2" mapZoom="2" startingY="0.0"

                                            summary="Geography Map" styleClass="AFStretchWidth"

                                            inlineStyle="width:950px; height:500px;">

                                       <dvt:mapColorTheme id="mt1" themeName="LINESTHEME"

                                                          value="#{bindings.FlightView11.geoMapModel}"

                                                          bucketCount="1" minColor="#94b5ff" maxColor="#84adff"

                                                          locationColumn="ID_NAME"

                                                          clickListener="#{bindings.FlightView11.geoMapModel.processClickAction}"

                                                          selectionListener="#{bindings.FlightView11.geoMapModel.processSelection}"/>

                                       <dvt:mapPointTheme id="mt3" value="#{bindings.FlightView12.geoMapModel}"

                                                          clickListener="#{bindings.FlightView12.geoMapModel.processClickAction}"

                                                          selectionListener="#{bindings.FlightView12.geoMapModel.processSelection}">

                                           <dvt:mapPointStyleItem

                                                                  isDefault="true"

                                                                  imageURL="red.png"/>

                                       </dvt:mapPointTheme>

                                   </dvt:map>

                               </af:panelGroupLayout>

                           </f:facet>

                       </af:panelSplitter>

                   </af:showDetailItem>

               </af:panelTabbed>

               <!-- id="af_one_column_stretched" -->

           </f:facet>

       </af:panelStretchLayout>

   </af:form>

</af:document>

</f:view>

 







double arrow
Сейчас читают про: