�����:   ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½:




�������
��������
�����
�����


Java
- �������
- ������-�����
- ������
- �������
- �����������
- ������
- IDE
- ������� ��������
- �������

��������� Java
- ����
- �������
- ������
- WAP, WML � ��.

JavaScript
- ������-�����
- �������
- ������

���-���������
- HTML
- CSS
- SSI

�������� ��� ���
�������
�����
������
���������
���� :)




Rambler's Top100

Java: ������������ � ����� ������ �� Java-�������� � �������� �����������

������ � ����� ������ �� Java-�������� � �������� �����������

��������

����������, ��� ������������ ������ � ����� ������ �� ������������ ����� ���������������� � ���� ����� �� ������������ ������� ���������. ����� ����, � ���� ����� ���������������� ����� ����� ����������� �������������� �� ���� � ������������ ���������� � ��� ������� ������� � ����� ������, �������� � ������� �����������. � ���� ������ Java �� ������������ ����������. ��� � ������ JDK1.1 �������� ����� ������� java.sql, �������������� ����������� �������, ��������� � ���� ������� ������������� ODBC-����������. � ���� ������ ���������� ��� ������������� �������, ��������: java.sql.CallableStatement, ������� ������������ ���������� �� Java �������� ��������; java.sql.DatabaseMetaData, ������� ��������� ���� ������ �� ������� �� ����������� ������� � ����������� � ���������� ����� ������������� ������ � ����� � ���������� ������, �������, ��������, ������ � �.�.; �������, - java.sql.ResultSetMetaData, � ������� �������� ����� �������� � ������� ���� ��� ����������� ���������� �� ������ ���� ������ ��� �������� ���� ���������� � ���� �������� ������ � �������.

������, �������� ������� Java �� ������ ������������ ������ ���������������� ����������� � ���, ��� ���� � �� �� ������� ������� � ����� ������, � ������� ��������������� � �������������������� Java, ����� ������������ ����������� �����, ��������� ��� ������������ ����������� ��������-��������������� ����������, WWW � Intranet/Internet. ���������� �� ������� ��� �������� ������������� Java-�������� ��� �������������� � ������ ������.

1. Java-��������� � ������� � ����������� JDBC-ODBC

JDBC (Java Database Connectivity) �������� �� ����������, � ����������� � ������� �� ������������� SAG CLI (SQL Access Group Call Level Interface - ��������� ������ ������ ������ ������� SQL).

��� �� ���� JDBC �������� �� ����� � ���������� �������� ���������� � ������ ODBC. ���� � ��������� JDBC API � ������������� ����������� ������ �� ������ ����� ODBC, � � ����� ������������� ������ ������ � ����� ������ �� ����- ��� ����-������� ����� (��. ���.1), ��� ����� ���������� ������� ����, ��� ����������� ������������ JDBC-ODBC-Bridge ���������� ����������� ����� � ����� ����� �������������� ����������� (��. ���. 2)


���. 1. ���������������� ������ � ���� ������ �� 3-�-������� �����.


���. 2. ����� �������������� �����������.

���� ������� ������� �� ���. 2 ������ ����������, ����� ������ - ����� ����� �������������� ����������� � Java ������������ ������� ���������� ����� ���� �������� ����� ODBC � �� ���������� ������������ �������-��������� � ��������� ���� � ������� �������������� ����������������� ����������. JDBC Driver Manager - ��� �������� ����� JDBC-�����������. ��� ��������� ������� ����� ������ - ��������� Java-��������� � ��������������� JDBC ������� � ����� ����� �� ����. �����������, ��� ODBC ��� ���� � �������� ������ JDBC ��-�� ��� ������������ ����� ����������� ����������� ������������ ����������� � �������������. �� ����� ��������� �������� ������ - � ����� ������ ����� JDBC � �� ����� �� ���� ������������ ������������ ������ � ODBC-��������� ��������������� �� Java? ������� �� ���� ������ ����� ���� ������ ����������� ���. ���� ����� JDBC-ODBC-Bridge, ��� �� �������, ����� ��������� ������� ������.

1. ODBC ������ ������������ ��������������� �� Java, ��������� �� ������� �� C-����������. ����� �� Java C-���� �������� ��������� ��������� Java, ��������� ����� � ������ � ������ ��������� ������-�����������.

2. ������� ODBC C-API � Java-API �����������. � �������, Java �� ����� ����������, � �� ����� ��� � ODBC ��� ������������.

3. ODBC ������� ������ ��� ���������. � ��� ������� ������� � ������� ����, ������ ������� ����� ������ ����������� ��� ����� ������� ��������.

4. Java-API ���������, ����� �������� ��������� ������ Java �������. ����� ODBC ������������, �� ODBC-������� � ODBC �������� ������ ���� �������������� �� ������ ���������� ������. � �� �� �����, JDBC ������� ������� ��������� �� Java � ����� ���� ����� ��������� �� ����� ��������� �� ������� ����������� �� �����������.

JDBC API - ��� ������������ Java-��������� � ������� SQL ����������� �, ��������� ��� � �������� ���������� ��������� ODBC, �� ����������, ���-����, ��� ��������� Java-���������, ������������� � ���������� ������� ������� Java.

� ������� �� ���������� ODBC, JDBC ����������� ������� �����. ������� ��� ������ �������� �������, ������������ ������ JavaSoft ��� ������� �� JDBC � ���������� ������. ���� ������� �������� ����� ������� � �������� ������� JDBC � ���������� DriverManager. ��������, �������������� �������� Internet, ���� ������ � �������� �� ������������ �������������� ��� ������ URL.

jdbc::

��� ��� ���������� ��� ����������� ��������, ��� ������� ��������� ������������ ���������� � ����� ������, ��������, ODBC. � ������ ���������� ODBC, � URL-������ ������������� ������ ��� ������������, � � �������� ������������ ������� DSN (Data Source Name), �.�. ��� ODBC-��������� �� ODBC.INI �����. ��������:

jdbc:odbc:dBase

� ��������� ������� ������ ODBC ����� ���� ������������ ��� ������� �������� ������� � ���� ������, ��������:

jdbc:dcenaming:accounts-payable,
���
jdbc:dbnet://ultra1:1789/state

� ��������� ������ ����� URL //ultra1:1789/state ������������ ����� � ��������� ��� �����, ���� � ��������������� ������������� ��� ������� � ��������������� ���� ������.

������, ��� ��� ���������� ����, ���� �����, ���-���� ������������ �������� ODBC ��������� ��� ��������������� � �����������. ��������� �������������� ����� ��������� JDBC � ODBC ����������� ������ JavaSoft � �������������� � InterSolv � ���������� JDBC-ODBC-Bridge. ��� ����������� � ���� JdbcOdbc.class (��� ��������� Windows JdbcOdbc.dll) � ������ � �������� JDK1.1. ������ JdbcOdbc-��������� ������ ������������ ����������� �������� (����������), ������� ��������� ���������������� ������ � ����� ������ ����� ����������� ��������� ODBC. ��� ������� ��� ���������� ����������� � ����� ODBC.INI. �� ���������� ������ JDBC-ODBC-Bridge ���������� ������ Java � ������ ODBC � ��� ����� ��������� ������������ ����� ������������ �������� ODBC, ������� � ���������� ������� ��������� � ��������.

���������� �������� ���������� �� Java c �������� � ��������� ������������ ������� ��� ���� � ������� dBase-�������.



// ��������� ��� �� Java ������������ ��� ������. ������� ������������
// ��������������� �������� url, login, � password, �, ����� ������������
// SQL ���������� �� ������ �������� �� � ���� ������.
//--------------------------------------
//
// Module: SimpleSelect.java
//
// ��������: ��� ��������� ��� ODBC API ����������. Java-����������
// ����� �������������� � JDBC ��������, �������� select ��������
// � ���������� ���������� � �������
//
// �������: JDBC � ODBC ����
//
// �����: Karl Moss (�.������ ����������� ��� ������ � ����������)
//
// ����: ������ 1997
//
// Copyright: 1990-1996 INTERSOLV, Inc.
// This software contains confidential and proprietary
// information of INTERSOLV, Inc.
//--------------------------------------

import java.net.URL;
import java.sql.*;
import java.io.*;

class SimpleSelect {


 public static void main (String args[]) {
 String url = "jdbc:odbc:dBase";
 String query = "SELECT * FROM my_table"; 

 try {

 // �������� jdbc-odbc-bridge ��������
 
 Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");

 DriverManager.setLogStream(System.out); 

 // ������� ���������� � ���������. ������ ��
 // ������������������ ��������� ����� �����������, ����
 // �� ����� ������ ���, ������� ������ ���������� ���� URL

 Connection con = DriverManager.getConnection(url, "", ""); 

 // ���� �� ������ �����������, �� ���������� exception
 // (�������������� ��������). ������, ���� �� ��������
 // � ��������� ������ ���������, ������ �� ������� ����������� � URL

 // �������� � ������ ��������� �� �������� ����������
 // 

 checkForWarning (con.getWarnings ()); 

 // �������� DatabaseMetaData ������ � ��������
 // ���������� � ����������

 DatabaseMetaData dma = con.getMetaData ();

 //System.out.println("\nConnected to " + dma.getURL());
 //System.out.println("Driver " + 
 //dma.getDriverName());
//System.out.println("Version " +
 //dma.getDriverVersion());
 //System.out.println("");

 // ������� ��������-������ ��� �������
 // SQL ���������� � �������

 Statement stmt = con.createStatement ();

 // ���������� ������, ����� �������� ResultSet �������

 ResultSet rs = stmt.executeQuery (query);

 // �������� ��� ������� � ���� �� ������ �����������

 dispResultSet (rs);

 // ������� �������������� �����

 rs.close();

 // ������� ��������

 stmt.close();

 // ������� ����������

 con.close();
 }
 catch (SQLException ex) {

 // ��������� SQLException. ���������� �
 // ������� ���������� �� ������. �������, ��� ���
 // ����� ���� ��������� ������, ��������� ������
 // 

 //System.out.println ("\n*** SQLException caught ***\n");

 while (ex != null) {
 //System.out.println ("SQLState: " +
 // ex.getSQLState ());
 //System.out.println ("Message: " + ex.getMessage ());
 //System.out.println ("Vendor: " +
 //ex.getErrorCode ());
 ex = ex.getNextException ();
 //System.out.println ("");
 }
 }
 catch (java.lang.Exception ex) {

 // ������� ��������� ������ ���� exception, ����������� ��.

 ex.printStackTrace ();
 }
 }

 //----------------------------------
 // checkForWarning
 // �������� � ���������� ��������������. ������� true ����
 // �������������� ����������
 //----------------------------------

 private static boolean checkForWarning (SQLWarning warn) 
 throws SQLException {
 boolean rc = false;

 // ���� SQLWarning ������ ��� �������, ��������
 // ��������������� ���������. 

 if (warn != null) {
 System.out.println ("\n *** Warning ***\n");
 rc = true;
 while (warn != null) {
 //System.out.println ("SQLState: " +
 //warn.getSQLState ());
 //System.out.println ("Message: " +
 //warn.getMessage ());
 //System.out.println ("Vendor: " +
 //warn.getErrorCode ());
 //System.out.println ("");
 warn = warn.getNextWarning ();
 }
 }
 return rc;
 }
 //----------------------------------
 // dispResultSet
 // �������� ������� ���������� �����������
 //----------------------------------
 private static void dispResultSet (ResultSet rs)
 throws SQLException, IOException
 { 
	 // ���������� ����������� ���������� �
	 // ��������� ��� �������� ������� ������������� ������
 int i, length, j;
 String cp1 = new String("Cp1251"); 
 // �������� the ResultSetMetaData. ��� ����� ������������
 // ��� ������ ����������
 ResultSetMetaData rsmd = rs.getMetaData ();
 // �������� ����� ������� � �������������� ������
 int numCols = rsmd.getColumnCount ();
 // �������� ��������� �������
 for (i=1; i<=numCols; i++) {
 if (i > 1) System.out.print(",");
 //System.out.print(rsmd.getColumnLabel(i));
 }
 System.out.println("");
 
 // �������� ������, �������� �� �� ��� ���, ���� �� �����������
 // �������������� �����

 boolean more = rs.next ();
 while (more) {

 // ���� �� ��������
 
 for (i=1; i<=numCols; i++) { 

// ��������� ������ ���������� ��������� ������� �������������
// ����� �� ������� ���� ������ � �������� ������, ������ ��� �
// ��������� ����� ������� ����� ���� ������������ ������������
// �������. ���� ������������ ����������� ����� - getString - �� ������ 
// ���������� �����������. ������ ����� ������� ��������� � Unicode,
// ����� �������������� � ������ Windows � ������ ���������� ����

InputStream str1 = rs.getUnicodeStream(i); 
	 byte str2[];
	 byte str3[]; 
	 int sizeCol = rsmd.getColumnDisplaySize(i);
	 str2 = new byte[sizeCol+sizeCol]; 
	 str3 = new byte[sizeCol+sizeCol];
	 length = str1.read(str2); 
	
 // ����� ����� ������ ���� �� ������, ������� ���������� ������
 // ���������������� ������ 
	 k=1;	
	 for (j=1; j<sizeCol*2; j++) {
		if (str2[j] != 0) { 
			str3[k]=str2[j]; k=k+1; } } 
	 
	 String str = new String(str3,cp1);
	 System.out.print(str);	
 }
 System.out.println("");

 // �������� ���������� ���� � ������

 more = rs.next ();
 }
 }

}

� ���� ������� ���������, ���������� �� ��������� ����������, ���� ����������� ���� ��������� ���������, ����������� ������������ �� ��� ������ � ���������� ������ ������, ���������� ������� � ������ � ������������� ���������. ���� � ���, ��� ���� Java ������������� ���������� �������������� �� Unicode � ������� � ������������ � �������������� �� ����� ������ ��������� �������������� (��� ���������� locale), ��� �������������� �� ������ ��������� �� ��������� � ������������� ������, ��������, ����� ������������� ������ ��������� �� ��������������� � Java-���������, � ���������� �� ������� ����������, �������� �� ��� ������ ����� ��������� ������������� �����. �� �� ��������, ��� �� ������ �����, ��������� � ��� ������������� ���������, ���������� � ������ ������������ � Web-���������.

2. ����-��������������� Java-����������

2.1 RMI-����������

����� ��������� ������� (RMI - Remote Method Invocation) ������������ �������� ������������ ����� Java �����������, ���� ���� ��� ����������� �� ������ �����������, ����������� � ��������������� ������ ������� ����.

������ ����������� RMI ����������� � ���, ��� �� ������������ ��������������� ��������� ��� ������ � ������ � ������� �� ������� TCP. ������� ������������ ��� � ���, ��� �� ���������� ��� ��������� ����� �������� �������, ���������� �� ������� �������, ���, ��� ���� �� ��������� ������ ������������� ��������. RMI ����� ������ � ����� �����������, ��� ���������, ���������� �� �������, �� �� ������� ���������� Java-�������� �� ����� ������ ����������. ������� ����������, ��� �� ������, ����������� �������������� ��� ���� �� TCP/IP ���������.

���������� �������� ���� ��� ���������� ����������� RMI-����������:

  • ���������� ��������� �������� � ����� ��� ������� � �������
  • Java-����������
  • RMI-����������
  • ����������� .class-������ � ��������������� ����������
  • �����������
  • ����� �������
  • ����� �������

��������� ���� ������ ���������� ��� ������� � �������, ������������� �� ����� � ��� �� ������, ������, ���������� ����� �������� ����� � ������� ��������� ��� ��������, ������������� �� ������ ������� � ���� � ��������� ������������. ��������� ������� ���� ����� � ������ ��������� � ����������� ����, ��������� ����������� �� �������.

��� �������� RMI

�� ����������� Java-���������, ����� ������� ������ ������, ������� ����� ������������ ���������, � ���������e�� ����� ������, ������� ����� ���� ������� ��� �������. ������ ����� ������������ RMI-��������� � ������� ������� ��� ������, ����������� ������� ������������������ � ��������� ��� ������ �� URL-���������� �����, ��������:

rmi://localhost/LookupServer

������, ��������� ��� ������, ����� �������� �������� ������ � ������ ������, � �������� ��������� ������ � ����. ����� ��������� ����� ����� ��������� � ������� RMI ����������� � ������������ �� ����������������� ���� � ���������������� ����� �������, ������� ���������� ������������ � ������� TCP/IP.

���������� ���������� ���������� ����

RMI ������������ ������� Java, �������������� ����� ����� �� ������, ���������� �� ����, ��� ��� ������� ���������. ������ ��� ��� �������� ������, � �������� ����� ���������� ������������, - ��� ����������� ����������, ������������ ������, ������� �������� ������������-������������.


// Lookup.java

import java.rmi.*;

public interface Lookup extends Remote {
public String findInfo(String info) throws RemoteException;
 }

Java.rmi.Remote - ������ ���������, ������� ���������, ��� ��� ��������� ������, - ��� ������� ������, ����������� �����("Lookup") �������� ���������� ��������. ��� ������ � ��������� ���������� ������ ���� ��������� ����� ���������� ���� Java.rmi.RemoteException, ������� �������������� ������ ���, ����� ����� ���������� ������ ���� ����.

���������� ���������� ����

����� ���� ��� �� ���������� ��������� � ���������� �������, ����� ��������� ��������� ��� - ����������� ��� �������. ������ ������������ ��������� ��������� � ������� ������� �������, ������� ����� ������������-���������.

��� ������ ������� ��� ����� ��������� ��������� �������:


// LookupServer.java

 import java.io.*;
 import java.util.*;
 import java.rmi.*;
 import java.rmi.server.*;

 public class LookupServer extends UnicastRemoteObject
 implements Lookup {
 private Vector save = new Vector();

 public LookupServer(String db) throws RemoteException
 {
 try {
 FileReader fr = new FileReader(db);
 BufferedReader br = new BufferedReader(fr);
 String s = null;
 while ((s = br.readLine()) != null)
 save.addElement(s);
 fr.close(); 
 }
 catch (Throwable e) {
 System.err.println("exception");
 System.exit(1);
 }
 }

 public String findInfo(String info)
 {
 if (info == null)
 return null;

 info = info.toLowerCase();
 int n = save.size();
 for (int i = 0; i < n; i++) {
 String dbs = (String)save.elementAt(i);
 if (dbs.toLowerCase().indexOf(info) != -1)
 return dbs;
 }

 return null;
 }

 public static void main(String args[])
 {
 try {
 RMISecurityManager security =
 new RMISecurityManager();
 System.setSecurityManager(security);
 String db = args[0];
 LookupServer server = new LookupServer(db);
 Naming.rebind("LookupServer", server);
 System.err.println("LookupServer ready...");
 }
 catch (Throwable e) {
 System.err.println("exception: " + e);
 System.exit(1);
 }
 }
 }

������ ������ � ��������� ���� ������ ��������� � ����� � ��������� �� ���������. ����� findInfo ���� ����� ������ ��� � �������.

������ ���� ������:

Ivanov, Ivan 295-0083
Petrov, Peter 775-9958
Romanov, Alexander 555-7779

�������, ��� LookupServer �������� ����������� ������������ ������ java.rmi.server.UnicastRemoteObject � ��������� Lookup. ���� �� ���� ������� ������������ ��������� �������� ���������, ����������� ��� ��������� ��������, � ������ ���������� ������, ������� ����� ������� ������������.

��������� ������ ������������

�������� ������� ����� ����� ���� - ��, ��� ���������� � ��������� main(). ������ ����� ����� ���������� ������. RMI ��������� ��������� ��������� .class ����� � � ���� ������ ���������� �����-������ web-������� � ��� ���������� �� �������� ��������, ��� ���� �� ���� ������ �����������. ���� �� �� ���������� ������, �� �� ��������� ������ ����������� ������ ��������� �����, � RMI �� ����������� �� ����� �������� � ������ �������������. ��� ��� �� ������ ���������� security manager, ����� ������� ��������� �������� ��������� .class ������.

������� LookupServer ����� �������������� � ������� ������ Naming.rebind � ���������� ��������� ������� �� �����.

�� ����� �� �������� ��������, ��� ��������� ����� ���������� ���������� ����������, ���� ������ �� �������� �������� �������� ���� � ������� TCP/IP ����������? ��� ���������� �� ������, ��������� ������ � ������ ���������� ��� ���������� ��������� � ����� ��� ������������ ����� �����. ��������������� .class ����� ������������ �� ���������� .class ����� ����� RMI ����������, ��������� ����.

�������������, ����� stub(��������) �������� ���:


public class LookupServer_Stub extends java.rmi.server.RemoteStub
implements Lookup, java.rmi.Remote { ... }

� �������� - ���:


public class LookupServer_Skel implements
java.rmi.server.Skeleton { ... }

������������� �������:
Javap -c LookupServer_Stub
����� ���������� ����-��� � �������������� ��, ��� ���������� �� ������.

����(stub) -��� �������� ��� ���������� �������, � �������� - ����� �������� �� �������, ������� ������������ ��������� ������.

���� ������������ ������� ������ �������� �� ������� �������, � �������� - �� ������� �������. ��� ���� ������������ �������������� �������� � ���������������� �����, � ����� ������, � ����� ������, ������������ � ������� ��������� TCP/IP

���������� ����������� ����


// LookupClient.java

import java.rmi.*;
import java.rmi.server.*;

public class LookupClient {
public static void main(String args[])
{
try {
RMISecurityManager security =
new RMISecurityManager();
System.setSecurityManager(security);
String host = "localhost";
String server = "LookupServer";
String name = "rmi://" + host + "/" + server;
Lookup look_obj = (Lookup)Naming.lookup(name);
String results = look_obj.findInfo(args[0]);
if (results == null)
System.err.println("** not found **");
else
System.out.println(results);
}
catch (Throwable e) {
System.err.println("exception: " + e);
System.exit(1);
}
}
} 

���� �� ������������� ������, �������� ������ ���������� ������, �� ������ ��� ������������ ������������ ����� �� ��� � �� �������. URL ��� ���� ������������ ���:

Rmi://localhost/LookupServer
��� localhost - ��� ���������� ���������� (IP, ����� = 127.0.0.1), ������������� ��� ������. ������ ������������� �� ��� �� ����� ������. �� ������ ����� ������������ � ��������� ������� ���. ����� ����� � ������� ������ ������, ���������� ��������������� ���������� �������.

���������� ����

��� ����� - Lookup.java, LookupServer.java, � LookupClient.java ������������� ��� � ������ � Java:


javac Lookup.java
javac LookupServer.java
javac LookupClient.java

���������� RMI �����������

����� ����, ��� �� �������������� ��� �����, ��������� RMI Compiler (rmic):
rmic LookupServer
����� �������� LookupServer_Skel.class � LookupServer_Stub.class �����.

�����������.class ������ � ��������������� �� ����� �� �����

�� ������ ����������� ���������� ����� (Lookup.class, LookupClient.class, � LookupServer_Stub.class) � ����������, ������ �� �� ������� ��������� ��� ������.

�� ������ ����������� ��������� ����� (Lookup.class, LookupServer.class, LookupServer_Skel.class, � LookupServer_Stub.class) � ����������, ��� ��� ������ ���������� ��� ���������� �������.

�����������

������, � �������� ���������� ������������, ������ ���� ������ � ������� ��������, �.�. ���������������. � JDK 1.1 ������� ����������� ���������
Rmiregistry

Rmiregistry ����� ����������� ��� � ��������� ���� ��� ��� ������� ������� �� �������.

����� �������

�� ������ ���������� ������ �� �������:
java LookupServer database_name

� �������, ���� ���� ���� ������ � ������� ���� � ��������� ��������� � ����� C:\PHONE.TXT, �� �� ������ ���� �������:
java LookupServer C:\PHONE.TXT

����� �������

���������� ��������� ���������� �� �������:
java LookupClient Ivanov

"Ivanov" - ��� ������� ��� � ����.

����� �������, RMI ���� ����������� ��������� �������������� Java-to-Java ���������� ���������, � ������� ������ ��������� �������� Java ���������� �� ������ Java-�������� �� ��������� ������� ��� ��� ���, ���� �� ��� ������ ���������� ��������. �����������, ��� �������� ����������� ����� ���������� ������������ ��� ������ � SQL-���������, ������� ������������� Java-API ��������� ��� ������� � ������. ��������, � ������ ��������� Informix � Informix Client SDK ���� �������� Informix Object Interface for Java, ��� ���������� �������������� �������, ��� ������������ ����������������� RMI-���������� � �������� � ����� ������ Informix. ����� ����, ������� � ��������������� RMI-������, ������� �������� ����� ������� � �������� �������, ������� ����� �������� ������������. � ��������, ����������� ���� ������ ����� ������������ ��� ������ � ������ ������ ������ � SQL-���������, ���� �� ������ ����� ������� ������� Java-API ��������� ��� ������� � ����� ������. � ������� ������ �� ������������ � ������������� JDBC � RMI-�����������, ���� ���� �� ��� ����� � ����������� ������� ����������. � Informix, ��������, ��� ����������������� �������������� � ������ ������ ���������� ��� RMI-������: informix.api.remote.rmi - ��� ��������� �������� � informix.api.remote.rmi.server - ��� rmi-�������. ��� ���� � ���������� ���������� ������������ ��������� � DBMSManager, ������� ����������� ���������� ��� ���� �������� Informix � ����� ������, � �� ������ ���������� ���� ���������, ���� ��������� ���������� � ����� ����� RMI ������. ��� ���������� ���������� ��������� DirectDBMSManager ������. ��� ���������� ���������� ��������� RMIDBMS-Manager ������ � ���������� � ���������������� RMI �������. ������������ RMI ������� �������������� � �����:


rmi://hostname[:port]/
//�������� DBMSManager �������
DBMSManager getDBMSManager() throws Exception
{
// based on RMI Checkbox, get appropriate DBMSManager
DBMSManager dbmsManager;
if (RMIcheckbox.getState())
dbmsManager = new RMIDBMSManager(rmiServerTextField.getText());
else
dbmsManager = new DirectDBMSManager();
return dbmsManager;

���� �������������� � ����� �������������� � ������� ����������� �������������� ������� � ������� ���������� ��������, ������� ����� ���������� ��� ��������, ��� � ������������. � ��������� ����� � SQL-�������� ��� ����� �������������� �� �������, �� ���� ������ ������������������ - ������ � ������������� Java-API ��������� ������ ������������ ����.

2.1 Java, ����������������� � ����

Java ����� ���� �������� � ���� ���������� ��������� �������� � ��� ���� ������ ����������� ������� ����� ���������� �����:

  • ���������� ������������ ����� ���������������� ��� ��������� �������� ��������. � ������ ������������ ����������� ������ Java � ���������� ��������� JDBC. ����������� ������� � ����������� ����� ���������������� ��������� ������ ����������� �������� �������� �� ����� SQL.
  • ���������� ��������� ����� ������. �������, ���������� �� ����� Java ����� ��������� � ���� �������� � ����������� �������. ��� ��������� ��������� � ������������ ������������ ���� ������. Java-����� ����� ���� ����������� � �������� ���� ������ ��� ������� �������. ������ ���� ����� ������ ���������� ����������� ���������������� Java-������. � �������� ������� ������� ������� ����� �� ����� Java, �������� ������. ���������� ��� ����� ���� ������� � ������ ������. ��������, ��������� ������ ����� ����������� ������ � ����� Street � Postal Code(�������� ���), � �������� ���� City ����� ����������� �� ������ ��������� �������. ����� ����, ����� ������������ ������������ ������� � �������. ��� ���� ����������� ���������� ������� � ����������� �� ������������� ������. ��� ����� ������� ������ US_Address � Rus_Address, �������������� �� �������� ������ Address. � ������ ����� ������ ����� ���� ������ ������ ����������� ������� �� ��������� ������� � ������ �������� ��� ��������, ����������� ������ ��� ������ � ���. ���� ��� SQL ����� �������������� ��� ������� � Java-��������, ��� ��� ��� ������� � Sybase Adaptive Server.

��������� ������ ��������� ����� ������ � �������:


INSERT INTO employees (id, name, Address)
VALUES(1789, "Serg Dunaev", new Rus_Address("58 Gagarin Street", "153038")
)

��������� ������ � �������������� Java-�������� ���������� ������ �����������, ������� �� ��������� �����:


SELECT name
FROM employees
WHERE Rus_Address.street="Gagarin Street"
  • ������ ����������� ������. ������� ���������� ����������� ���������� ����� ����� ���������� ����� ����������� �����������, ��������� ���������� � ����. ������������ ������ ������������ ������ ����������� ������ �� ���� ������� �������������� �������. ������������ ��������� �� Java ������� �� ������ �������. ��� �� ������������� ���������� �������� ����������� Java-������� � ����. ������ ������ ���� ��������������� � ����-��� � ��� �����, ������ ��� ������������� � ����� ����������� ������. � ����� � �������������� ����������� ������ ��� ���������� ������� �� Java � ���������� ��������� ���������� JDBC, ���� � ��� �� ������ �� ����� Java ����� ���� ����������� ��� ������, ��� � ��� ����.

3. Java-��������

���� ������� ��������� ���������������� Web-���������, �� �������� ��������� ���������������� Web-�������� � �������� ������ ��������� ����������������. � ��������� ����� ������ ������������ ������������ ��������, ����������� �������� ��� ��������, ������ ��������, ������� �� ����� ������ ��������� �, ������� ������ ����������� � ��������� Web-�������, �����������, � ������� �� ������� CGI-��������� ��� ��������, ���� ����� �������� �����������.

3.1 �������� �� ���� Java Web Server

�������� �������� ���������, ������� �������� ������������� ���������, � ������� �������� �� ����� �������� ���������� � Java-��������������� Web-�������. � ������� �� ��������, ��� �������� ������������ Java-��������� (��� ������� � GUI-�����������), �� ����, ������ ������������������� � ����������� ������������ �, ��������� ��� ����������� Java, ��� ����� ������������ ����������� ����� HTML � ����������������� � ����� ���������. �����������, ��� �������� ����� ������������ � ���������� ��� ������� � ����� ������, ������������ ��� ��������� �������� � ����� �� ��������. � ��������� ����� ����������� Web �������� ������������ ���������� ���������. Java Web-Server ����� ���, ��� ��� �� �������� ����� ��������� ��� ����������. ����������� Servlet-API ���������� ��� � ����� Java Web Server, ��� � � ��������� �������� JSDK, �� ������� � ������ 1.2, �� ������� � ������ JDK. ����������� ������������ ��������� �������� ��, ��� ��� �� ������� �������� ����� ��������� ��� ������ ����� �������. ��������� ��������� ����������� ����������� � ������ ������ �������� �� ������� � �� ����� ������������������ ����������� ��� CGI, ��� � Fast-CGI ���������� (��. ���.3).



���. 3. ��������� �������� �� Web-�������.

�������� �� ��, ��� �������� ���������� HTTP-��������, �� ��� ������������� ������������� ������� ��� ������ ����� ������� � ��� ����� �������� �� ��������������. � ���������, ����� �� ����������� ��������, �����-����, ��������� �������� ������������� ������������� ��������. ���� � ���, ��� ����������� ���� ����������� ������ ��� �� ���������, ������ ��� Web-������ ��� ������ ��������� ��� ���������� Java-handler, �������� �������� �� ���������� ��� Java-�������� � ������������ ������-������� ������ � ��� ����� ����������� ���������� �������. �������, ���� �� ������ �������� � �������� �� ������ Web-�������, ������� ��������� ��������, ������������� ������, ��� ���� ������������ ������ ����������� ���������� �����/������ ��������� ����������� ������ ��� ������ �� ��������, ��������:


// ����������� ������������ ������������
// � ����������� �� ������������� ���� ���������
String dos = new String("Cp866");
String win = new String("Cp1251");
String iso = new String("8859_5");
String im = new String("������������� �����");
.......................................................
out.println("<body>");
//out.write(im.getBytes(dos));
out.write(im1.getBytes(win));
//out.write(im2.getBytes(iso));
out.println("</body></html>");

�� � ������ ����������� ������� Java - getBytes() �� ���������, ����� �� ���������� ������ ��� ������ ��������� �� ��� ������. ����� ���������� ��������� �����, ������� �� ��� ������������ ��� ������ � ������ ������ ��� ������ ���������� JDBC. ����� ����, ���� font.properties � �������� $JDK_HOME/lib ��� � ����������� �������� ������ �������� ������ ���� �������������� ������� ��������. �� ������ ������� Java ������� ������� ����� font.properties.ru, ������� ����� ����� � �������� ������. ���� �� ��������� � ��� ���������������� Web-��������, ��������, ������� ������� Apache, �� �� ����������� �� ��� � ��� ������������ ������, ����������� �� ���� ������ �� ��������. ����� ������� ��������������� �������� � ����� ������ � �������? ������� �� ����������� ������� ����������� �� ������������� ����������� � ����� ������. ����� ������������ ������������ JDBC-ODBC, ��� ������������� �������� ��������������� �� ���������� SQL-������� � ���� ������. ���������� �������� DBServlet.java, ������� � ������� ����� ����������� ��� �� Java Web Server, ��� � Web ������� Apache.


/*
* @(#)DBServlet.java	1.6 97/06/13
*/
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;
import java.sql.*;
/**
* DBServlet
* 
* ���� ������� ������������� ��� ������������ JDBC ����
* � �������� ������ � ����� 
������ ��� ������ ���������. ��� ����, ����� ��������� ����
* �������, ���������� CLASSPATH, LD_LIBRARY_PATH, ODBCINI
* ������ ���� ��������������� ������� �����������.
*/

public class DBServlet extends HttpServlet {


/**
* init method
*/
public void init(ServletConfig conf) throws ServletException {
super.init(conf);
}
/**
* service method
*/
public void service(HttpServletRequest req, HttpServletResponse res) 
throws ServletException, IOException
{

String stack, username, 
password, query;
Connection con;
PrintStream out; 
/* ServletOutputStream out = res.getOutputStream();*/
// �������� ����������. ������ ��� ��������� ������ ����� ���������
// � ���������� ������������� ���� ��������, � ������� �����
// ����������������� ��� �������
stack = req.getParameter("stack");
username = req.getParameter("username");
password = req.getParameter("password");
query = req.getParameter("query");
res.setContentType("text/html");
out = new PrintStream(res.getOutputStream());
printPageHeader(out);
// � ��� ������, ���� ��������� �����������
if (stack == null || username == null || password == null ||
query == null) {
printPageFooter(out);
return;
}

String url = "jdbc:odbc:"+stack;

out.println("<hr><h3>Previous Query</h3>");
out.println("<pre>");
out.println("Database Stack : "+stack);
out.println(" User ID : "+username);
out.println(" Password : "+password);
out.println(" Query : "+query);
out.println("</pre>");
try {
// ����� jdbc ����. ����� ������������ ��������� 
//������������������ ���������
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//Class.forName("jdbc.odbc.JdbcOdbcDriver");
// �������� ���������� � ����� ������
con = DriverManager.getConnection(url, username, password);
out.println("<hr>");
 out.println("<h3>ODBC Driver and Database Messages</h3>");
checkForWarning(con.getWarnings(), out);
 DatabaseMetaData dma = con.getMetaData();
 out.println("Connected to " + dma.getURL() + "<br>");
 out.println("Driver " + dma.getDriverName() + "<br>");
 out.println("Version " + dma.getDriverVersion() + "<br>");

 // ������� � ��������� ������. ���������� �������� SQL
 // �������� ��������� ������������� � ���� ��� ��������
 Statement stmt = con.createStatement();
 ResultSet rs = stmt.executeQuery(query);

 // ������ �����������. 
 //��� ��������������� �� ����������� �����
 // � ��������� � ������� �������
 dispResultSet(rs, out);
 rs.close();
 stmt.close();
 con.close();
 out.println("<hr>");
}
catch (SQLException ex) {
 out.println("<hr>*** SQLException caught ***");
 while (ex != null) {
 out.println("SQLState: " + ex.getSQLState() + "<br>");
 out.println("Message: " + ex.getMessage() + "<br>");
 out.println("Vendor: " + ex.getErrorCode() + "<br>");
 ex = ex.getNextException();
 }
}
catch (java.lang.Exception ex) {
 ex.printStackTrace();
}

printPageFooter(out);
}

 /**
 * ������� ����������� ����������
 */ 
 public String getServletInfo() {
return "��� ������� �������, 
������� ���������� ��� 
������������ JDBC";
 }


 /*
 * �������� � ������ ���������� �������
 */
 private void checkForWarning(SQLWarning warn, PrintStream out)
 throws SQLException
 {
 boolean rc = false;
 
 if (warn != null) {
 out.println("<hr>*** Warning ***");
 rc = true;
 while (warn != null) {
 out.println("SQLState: " + warn.getSQLState() + "<br>");
 out.println("Message: " + warn.getMessage() + "<br>");
 out.println("Vendor: " + warn.getErrorCode() + "<br>");
 warn = warn.getNextWarning();
 }
 }
 }

 /*
 * ����� ����������� ������� � ��������� html �������
 */
 private void dispResultSet(ResultSet rs, PrintStream out)
 throws SQLException, IOException

 {
 int i;
 
 // ���������� ������������ ��� ��������� ���������� � �����
 ResultSetMetaData rsmd = rs.getMetaData();
 int numCols = rsmd.getColumnCount();
 out.println("<hr>");
 out.println("<h3>Database Columns and Data</h3>");
 out.println("<table border=3>");
 out.println("<tr>");
 for (i=1; i<=numCols; i++) {
 out.println("<th>" + rsmd.getColumnLabel(i) + "</th>");
 }
 out.println("</tr>");

 // ��� ���� ������
 while (rs.next()) {
 out.println("<tr>");

 // for one row
 for (i=1; i<=numCols; i++) {
 dispElement(rs, rsmd.getColumnType(i), out, i);
 }
 out.println("</tr>");
 }
 out.println("</table>");
 }

 // ������ ������ ��������
 private void dispElement(ResultSet rs, int dataType,
 PrintStream out, int col)
 throws SQLException, IOException
 {
 String cp1 = new String("Cp1251");
 // � ����������� �� ����
 //������, ���������� ��������� ���� ���������
switch(dataType) {
case Types.DATE:
 java.sql.Date date = rs.getDate(col);
 out.println("<th>" + date.toString() + "</th>");
 break;
case Types.TIME:
 java.sql.Time time = rs.getTime(col);
 out.println("<th>" + time.toString() + "</th>");
 break;
case Types.TIMESTAMP:
 java.sql.Timestamp timestamp = rs.getTimestamp(col);
 out.println("<th>" + 
timestamp.toString() + "</th>");
 break;
case Types.CHAR:
case Types.VARCHAR:
case Types.LONGVARCHAR:
 String str = rs.getString(col); 
// ��������, ��� ����� ��� 
//����������� ������������� ��������������
 out.println("<th>" + str + "</th>");
 break;
case Types.NUMERIC:
case Types.DECIMAL:
 java.math.BigDecimal numeric = rs.getBigDecimal(col, 10);
 out.println("<th>" + numeric.toString() + "</th>");
 break;
case Types.BIT:
 boolean bit = rs.getBoolean(col);
 out.println("<th>" + new Boolean(bit) + "</th>");
 break;
case Types.TINYINT:
 byte tinyint = rs.getByte(col);
 out.println("<th>" + new Integer(tinyint) + "</th>");
 break;
case Types.SMALLINT:
 short smallint = rs.getShort(col);
 out.println("<th>" + new Integer(smallint) + "</th>");
 break;
case Types.INTEGER:
 int integer = rs.getInt(col);
 out.println("<th>" + new Integer(integer) + "</th>");
 break;
case Types.BIGINT:
 long bigint = rs.getLong(col);
 out.println("<th>" + new Long(bigint) + "</th>");
 break;
case Types.REAL:
 float real = rs.getFloat(col);
 out.println("<th>" + new Float(real) + "</th>");
 break;
case Types.FLOAT:
case Types.DOUBLE:
 double longreal = rs.getDouble(col);
 out.println("<th>" + new Double(longreal) + "</th>");
 break;
case Types.BINARY:
case Types.VARBINARY:
case Types.LONGVARBINARY:
 byte[] binary = rs.getBytes(col);
 out.println("<th>" + new String(binary, 0) + "</th>");
 break;
}
}

private void printPageHeader(PrintStream out) {
out.println("<html>");
out.println("<head>");
out.println("<tltle>
�������� ������� ��� ������ 
� ������ ������
</title>");
out.println("</head>");
out.println("<body>");
out.println("<center><font size=5>" +
 "<b>Jeeves Database Servlet</b>" +
 "</font></center>");
out.println("<hr>");
out.println("<form action=\"/servlet/dbServlet\" method=\"get\">");
out.println("<pre>");
out.println("ODBC DSN : <input type=textarea name=stack>");
out.println(" User ID : <input type=textarea name=username>");
out.println(" Password : <input type=textarea name=password>");
out.println(" SQL Query : 
<input type=textarea name=query>");
out.println("</pre>");
out.println("<input type=
submit>");
out.println("</form>");
}

 private void printPageFooter(PrintStream out) {
 out.println("</body>");
out.println("</html>");
out.flush();
}
}

� ���� ��������� ���������� ������ ������� ��� ��������� ��������� - javax.servlet.* � javax.servlet.http.*, ������� ��������� � ����������� �������� ����� JavaSoft JSDK1.0.1 ��� ��������������� � JDK1.2.

������� ����, ������� ���������� ��� ���� ������, - ��� ����� ������� ����������� ���������� �������� ��������� �� ����� � ����� ������� ���������� �������� ��������� �� ������.


public void service (HttpServletRequest req, 
HttpServletResponse res) throws 
ServletException, 
IOException
{
...
}

����������� ����� request �������� ������ ����������, ������� ����� ���� ��������� ��� ������ HttpServletRequest::getParameterNames ������.
stack = req.getParameter("stack");
���������� ��� �������� ���� �� ������������� � htm-����� ��������� stack, � ������� �� ������ �������� � ���������� ��� ODBC-��������� (ODBC DSN).

����� ���������� ����������� ���� ��������� ��� ���������� ������� ���������, ����������� �� HTML-�����, ����� ��� ���������� ��� ��������� � ��������:


while ( values.hasMoreElements() )
{
...
}

��� � �������� ������� ������������ ��������� ����� �������� �� ����� ������ �����.


String name, value;
name = (String)values.nextElement();
value = req.getParameter (name);

���� ������ ������ ���������� ��� ����, ����� ������ ������ ������� ��������, ����������� ���������������� JavaServer"� ��� ��������� ����, ������ ����, ����� ������ c������ CGI. �������, �������, ��� ���� ��������, ������� ����� ���������� ������� - ��������� ������� � �������������� ��������. ���������, ��� �� ��������������� ���� ������ � init ������ � ����� ��������� HttpServlet ��� ServletException:


public void init 
(ServletConfig conf) throws ServletException
 ...
public void service (HttpServletRequest req, 
HttpServletResponse res) 
throws ServletException, IOException
 ...

������ DBServlet �������� ����� service ����� ������������ ���� ��� ��������� ������ try/catch, ������� ������������ ������������ ��� ������������ ��������� �������, ��������� � ���������� ��������� ���������� ��� ����������. � ������ ����� try ������������ ����� ���������� �������� ��� ������������� �������� ���������� � �������� ���� ������ ��� ���������� sql-�������. ������ ���� try ����� ������������ �� ������ ����������, ��������, ��� ������ ����������� � ���� � ����������� �������� - ������� �� ������� �� ������ ����� ������� �� ������������� ���������. ���� ��� - � ����������� ���������� ������ �������� ��������������� �����������.

��� ��������� ����� �������������� � ������������ � ������ ������� � �������� �� ������ ���������� ������ � �������, �� � ����� ���������� ������ � ����������� ������ java.sql ���������� ������� ������ �������, ��� ��, ������� ���������� ����������� �������� ��� ���������� ����������� ODBC-����������.

3.2 �������� �� ���� Apache

��� ���, ��� ����� ���� � ���������� ������������� ����������� � ��������� � �������������, ����� Apache HTTP-������� ��������, �������, ����� ����������. ����� �����, ����� ���������� ���� ������ ����� �������� � �� �� � �� ����������������� ���������������������� ��������, ������ ����������� � ���������� ������� ��������, ��� ������� �� ���������, ���� �������� � �������� �����������. �����, �� ������ �� �����, ���������� ������� ��������� � ����������� �������� Web-�������, ������������ �� �������� ������, � ��� ��������� ����� ���� ������������ ��������� �������������, ������� ��� ������������� ��������� �� �� ���� ����������. �� ��������� ������� ��� Web-������� ����� �������� �� ���������� ������ ��� ���� ���������: CGI, ISAPI ��� NSAPI, ������ ��� ��������� ���� ����� ���� ����������� �� Wintel-���������. ���, � ���������� Delphi-3 ������ ����� ���������� ���� ���������� � ���� Web-�������, �� �������� ������������� ��������� ��������������, ������� ����� ���������� ������ ������� Web, ���������� ��� Windows-95/NT, � ��� ����� � ���� �� ������� ������� ����������� ��������� ����� ������� Gateway-ODBC. ����� ������� �� ������ ���������� �����������, ��� �����, ��� �������� HTTP ��� ������ ����� ������� �������� ������������ ������ ���������� ��������� � ������ � ���� ������ ��� ��������. ��� Apache ���������� ����������� ����������� ��������� JServ, ������� ����� ��� � ��� ������ � �������� ����� ���������������� ���������� ���������. ��� ������� Apache ������������� �������� Java-����������, �������� � ����� ������������ �� ���������� ��� �������, ��������� � �������� Java-��������. ��������, ���� ����� �� Java �������������� ��������������� � Web, ������� ���������� ������� �������� ��� ������������ ��������. �������� ���������� Java-���������� ������� �� ������������������ ����������, �� ������� ��������������� Web-������ Apache. ���� ���, � ������� UltraSparc-3000 c Java-����������� ������� HotSpot, �� �������� ����� ���� ����� �������, � �������, � �� � � ����� ��� �������, ��� �� ������� NT-������. Apache, � ������� �� ��������� �� ����� ����������� ����������� ������ Java, � ������������� �� ��, ������� ������������� ��� ������ ���������. ����� ������ ����������� �����, ��� ��������� ��������� ��������� Java-�����, ���������� ���������� ������� � ������ �� �������� � ���������� Apache. �������, � � ����� ���������������� ������ Apache ��� ������������� ������� ����� �������� �����, ��� �������� ��������������, ������� ��� ���������� � ������������� ������� ������ �������� ��� ������� �� ��������� � ������ �������������������� ��������� ��� ����������������� Web-�����, ������ ��� Fastrack, ��� Java Web Server. ��� ����, ����� ������������ Apache �� �������������� � Java, ���������� �������������� ������� Jserv, ���������� ����������� ���������� Java-�������, ����� �������� ���������������� ���� Apache Configuration, ������� � ���� ������:

Module jserv_module mod_jserv.o

(������ mod_jserv.c ������ ���������� ��� ���� � src/���������� Apache). ����� ����� ���������� ��������������� Apache � ������� ��������� make. ����� ����� �������� �������� ���������������� ���� Apache httpd.conf, ������� � ���� ������ ����:


<IfModule mod_jserv.c>
ServletProperties conf/servlet.properties
ServletPort 8007
ServletBinary /opt1/jdk1.1.5/bin/java
ServletClassPath /opt1/jdk1.1.5/lib/classes.zip
ServletClassPath /opt1/local/etc/httpd/jserv/lib/servclasses.zip
ServletClassPath /opt1/local/etc/httpd/jserv/classes
ServletClassPath /opt1/JSDK1.0.1/lib/classes.zip
ServletErrorLog
logs/jserv_log
ServletAlias 
/servlets /opt1/local/etc/httpd/
jserv/servlets
ServletAuthExport Off
# AddHandler 
jhtml-parser .jhtml
# Action jhtml-parser 
/servlets/
org.apache.jserv.JServSSI
</IfModule>

����������, � ������ ���������� ������ ���������� ����� ���� �������, ������, ����� ����� ������ Apache HTTP-������� �� ������� httpd, �� ������������� ��������� Java-����������, ������� � ����� ��������� � ��������� ��� ����������� ��������, � ��� ����� � ��, ������� ����� �������� � ������ ������. ������������ Apache ��� ������ � ������ ������ ����������� � ���, ��� ��������� ��, ����� ��� � Java, �������� � �������� �����, ����� ���������� ������������ ��� ����������� ����������� � ��������� ��� ���������� �������������� ��������� �� Java � �� ����� C, �������, �� ���������� ������������� ����� ��������� ��������� �������� �������.

����������

������������� ������ �� ���������� ����������� ������������� Java-�������� ��� ������ � ������ ������. ������� ������, ��� ���������� ��������� �����������, ���������������� � ����������� ������ �����������. ������ ������� Microsoft �������� � �������� ����� ���������� RDO, ADO � OLE DB. ��� ����������, ����� ��� JDBC �������� � ����������� ��������-��������������� ���������� � �������� �� �������, ������� ����� ���� ��������� � JDBC. � �� �� ����� � JDBC ����������� � � ������ ������� �������� ���� JSQL, ������� ��� ������������ ��������� ��������. � ���� ������, SQL ��������� ����� ����� ���������� � Java ���������, � �� ���������� �� ��� ��������� ���������� � Java-������. ���������� SQL-������������ �������� ������������� ������������ Java-���������� � SQL ����������.

�����: �. �. ������


�. ������
"JavaScript � DHTML. ������� ��������. ��� ��������������"
���������>>
��������>>


�. ��������
"����� ��������� � ���� ��� ������� ���������"
���������>>
��������>>

����� � ��� �� �� ����� ���� ������ ������� ���.


[an error occurred while processing this directive]



Apache Struts 2.0.11
Apache MyFaces Trinidad Core 1.2.3.
Sun ��������� ��������� ���������� � Java ME �� Java SE
��������� �����!