File: java.xml

package info (click to toggle)
phpdoc 20020310-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 35,272 kB
  • ctags: 354
  • sloc: xml: 799,767; php: 1,395; cpp: 500; makefile: 200; sh: 140; awk: 51
file content (222 lines) | stat: -rw-r--r-- 7,791 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
<?xml version="1.0" encoding="iso-8859-1"?>
 <reference id="ref.java">
  <title>Java</title>
  <titleabbrev>PHP / Java Integration</titleabbrev>
  <partintro>
   <para>
    Es gibt zwei Wege, um die Welten von Java und PHP zu verbinden. Einerseits 
    besteht die Mglichkeit PHP in eine Java Servlet Umgebung zu integrieren, 
    andererseits kann man mit der Java Extension aus PHP heraus auf Java Klassen 
    zugreifen. Die erste der beiden genannten Mglichkeit ist wesentlich 
    stabiler und performanter als die zweitgenannte Lsung.
   </para>
   <para>
    Die Java Erweiterung fr PHP nutzt das Object Overloading von PHP 4 um auf 
    Java Klassen zuzugreifen. Die Java Virtual Machine (JVM) wird hierbei ber 
    das Java Native Interface (JNI) erzeugt. Eine detaillierte 
    Installationsbeschreibung entnehmen Sie bitte der Datei 
    <filename>php4/ext/java/README</filename>.
    <example>
     <title>Zugriff auf Java Klassen aus PHP heraus</title>
     <programlisting role="php">
&lt;?php
  // In PHP Instanz der Java Klasse java.lang.System erzeugen
  $system = new Java('java.lang.System');

  // Zugriff auf die Objekteigenschaften
  print 'Java version='.$system-&gt;getProperty('java.version').' &lt;br&gt;';
  print 'Java vendor=' .$system-&gt;getProperty('java.vendor').'  &lt;br&gt;';
  print 'OS='.$system-&gt;getProperty('os.name').' '.
              $system-&gt;getProperty('os.version').' on '.
              $system-&gt;getProperty('os.arch').' &lt;br&gt;';

  // java.util.Date Beispiel
  $formatter = new Java('java.text.SimpleDateFormat',
                        "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

  print $formatter-&gt;format(new Java('java.util.Date'));
?&gt;
     </programlisting>
    </example>
    <example>
     <title>Zugriff auf Java AWT aus PHP heraus</title>
     <programlisting role="php">
&lt;?php
  // Dieses Beispiel kann nur als CGI ausgefhrt werden.

  $frame  = new Java('java.awt.Frame', 'PHP');
  $button = new Java('java.awt.Button', 'Hallo Java Welt!');

  $frame-&gt;add('North', $button);
  $frame-&gt;validate();
  $frame-&gt;pack();
  $frame-&gt;visible = True;

  $thread = new Java('java.lang.Thread');
  $thread-&gt;sleep(10000);

  $frame-&gt;dispose();
?&gt;
     </programlisting>
    </example>

    Notes:

    <itemizedlist>
     <listitem>
      <simpara>
       <literal>new Java()</literal> erzeugt eine Instanz der angegebenen Java 
       Klasse, falls ein geeigneter Konstruktur gefunden wird. Fr den Zugriff 
       auf Klassen mit statischen Methoden bentigt man keinen Parameter.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       Beim Zugriff auf Mitglieder (Members) einer Instanz wird zunchst nach 
       Bean Eigenschaften gesucht, danach erst nach ffentlichen (public) 
       Eigenschaften. Mit anderen Worten: Es wird zuerst versucht werden, zum 
       Beispiel <literal>print $date.time</literal> als 
       <literal>$date.getTime()</literal> zu interpretieren, danach erst wird 
       <literal>$date.time</literal> versucht werden.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       Der Zugriff auf statische und Instanzeigenschaften erfolgt mit der selben 
       Syntax.
      </simpara>
     </listitem>
     <listitem>
      <para>
       Das Auslsen einer Java Exception resultiert in einer PHP Warnung und 
       einem NULL Ergebnis. Folgende Funktionen ermglichen den Zugriff auf die 
       eigentlichen Exceptions:

       <itemizedlist>
        <listitem><simpara><function>java_last_exception_get</function></simpara></listitem>
        <listitem><simpara><function>java_last_exception_clear</function></simpara></listitem>
       </itemizedlist>
      </para>
     </listitem>
     <listitem>
      <simpara>
       Traditionell knnen Arrays und Hashes in PHP weitestgehend als 
       gleichwertig angesehen werden. Beim Austausch dieser Datentypen zwischen 
       PHP und Java ist zu beachten, dass Hashes in PHP nur mit Integer- und 
       Stringwerten indiziert werden knnen und Arrays von primitiven Datentypen 
       in Java nicht dnn besetzt sein drfen. Ferner ist zu beachten, dass 
       diese Datenstrukturen by-Value bergeben werden, was ungnstig in Bezug 
       auf Speicher- und Zeitbedarf sein kann.
      </simpara>
     </listitem>
    </itemizedlist>
   </para>
   <para>
    Das PHP 4 Servlet SAPI Modul baut auf dem von der Java Extension zur 
    Verfgung gestellten Mechanismus auf, allerdings wird der PHP Prozessor 
    hierbei von einer Servlet Engine, wie zum Beispiel Apache Jakarta / Tomcat, 
    ausgefhrt. Dies fhrt zu einer wesentlich hheren Stabilitt und besserer 
    Performance als der umgekehrte Weg, wie in die Java Extension an sich 
    anbietet. Dies kommt daher, dass die Servlet Engine sich um das Pooling und 
    die Wiederverwendung von Java Virtual Machines (JVMs) kmmert. Eine 
    detaillierte Anleitung zur Integration von PHP in eine Servlet Engine 
    entnehmen Sie bitte der Datei <filename>php4/sapi/README</filename>.

    Bemerkungen:

    <itemizedlist>
     <listitem>
      <simpara>
       Das Servlet SAPI Modul sollte zwar auf jeder Java Servlet Engine 
       funktionieren, wurde aber bislang nur in Verbindung mit Apache 
       Jakarta/Tomcat getestet. Meldungen von Problem - aber auch von 
       Erfolgserlebnissen - bei der Verendung mit anderen Servlet Engines werden 
       dankbar aufgenommen.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       PHP hat die Angewohnheit das aktuelle Arbeitsverzeichnis (CWD) zu ndern. 
       sapi/servlet wird versuchen, den alten Zustand wieder herzustellen. 
       Whrend PHP luft kann es sein, dass die Servlet Engine kann Klassen aus 
       dem CLASSPATH finden kann, die ber relative Pfade angesprochen werden.
      </simpara>
     </listitem>
    </itemizedlist>
   </para>
  </partintro>

  <refentry id="function.java-last-exception-clear">
   <refnamediv>
    <refname>java_last_exception_clear</refname>
    <refpurpose>Letzte Java Exception freigeben</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>void</type><methodname>java_last_exception_clear</methodname>
      <void/>
     </methodsynopsis>
   </refsect1>
  </refentry>

  <refentry id="function.java-last-exception-get">
   <refnamediv>
    <refname>java_last_exception_get</refname>
    <refpurpose>Letzte Java Exception holen</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>exception</type><methodname>java_last_exception_get</methodname>
      <void/>
     </methodsynopsis>
    <para>
     Das nachstehende Beispiel demonstriert die Verarbeitung von Java Exceptions 
     aus PHP heraus:

     <example>
      <title>Verarbeitung von Java Exceptions</title>
      <programlisting role="php">
<?php
  $stack = new Java('java.util.Stack');
  $stack-&gt;push(1);

  // Sollte funktionieren
  $result = $stack->pop();
  $ex = java_last_exception_get();
  if (!$ex) print "$result\n";

  // Sollte nicht funktionieren (Fehler mit @ unterdrckt)
  $result = @$stack-&gt;pop();
  $ex = java_last_exception_get();
  if ($ex) print $ex->toString();

  // Exception freigeben
  java_last_exception_clear();
?>
      </programlisting>
     </example>
    </para>
   </refsect1>
  </refentry>
 </reference>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->