1 <?xml version="1.0" encoding="iso-2022-jp"?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?>
4 <!-- English Revision: 395228:409442 (outdated) -->
7 Copyright 2004-2006 The Apache Software Foundation or its licensors,
10 Licensed under the Apache License, Version 2.0 (the "License");
11 you may not use this file except in compliance with the License.
12 You may obtain a copy of the License at
14 http://www.apache.org/licenses/LICENSE-2.0
16 Unless required by applicable law or agreed to in writing, software
17 distributed under the License is distributed on an "AS IS" BASIS,
18 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 See the License for the specific language governing permissions and
20 limitations under the License.
23 <modulesynopsis metafile="mod_proxy_ajp.xml.meta">
25 <name>mod_proxy_ajp</name>
26 <description><module>mod_proxy</module>
\e$B$G
\e(B AJP
27 \e$B$r%5%]!<%H$9$k$?$a$N%b%8%e!<%k
\e(B</description>
28 <status>Extension</status>
29 <sourcefile>proxy_ajp.c</sourcefile>
30 <identifier>proxy_ajp_module</identifier>
33 <p>
\e$BK\%b%8%e!<%k$K$O
\e(B <module>mod_proxy</module>
\e$B$,
\e(B<em>
\e$BI,MW$G$9
\e(B</em>
\e$B!#
\e(B
34 <code>Apache JServ Protocol version 1.3</code> (
\e$B0J9_
\e(B <em>AJP13</em>)
35 \e$B$r%5%]!<%H$7$^$9!#
\e(B</p>
37 <p><code>AJP13</code>
\e$B%W%m%H%3%k$r07$($k$h$&$K$9$k$K$O
\e(B
38 <module>mod_proxy</module>
\e$B$H
\e(B <module>mod_proxy_ajp</module>
39 \e$B$r%5!<%P$KAH$_9~$`I,MW$,$"$j$^$9!#
\e(B</p>
41 <note type="warning"><title>
\e$B7Y9p
\e(B</title>
43 >
\e$B0BA4$J%5!<%P$K$9$k
\e(B</a>
\e$B$^$G%W%m%/%75!G=$OM-8z$K$7$J$$$G$/$@$5$$!#
\e(B
44 \e$B%*!<%W%s%W%m%-%7%5!<%P$O$"$J$?<+?H$N%M%C%H%o!<%/$K$H$C$F$b!"
\e(B
45 \e$B%$%s%?!<%M%C%HA4BN$K$H$C$F$b4m81$G$9!#
\e(B</p>
49 <seealso><module>mod_proxy</module></seealso>
51 <section id="overviewprotocol"><title>
\e$B%W%m%H%3%k$N35MW
\e(B</title>
52 <p><code>AJP13</code>
\e$B%W%m%H%3%k$O%Q%1%C%H;X8~$G$9!#
\e(B
53 \e$B2DFI$J%W%l!<%s%F%-%9%H7A<0$G$O$J$/%P%$%J%j7A<0$K$J$C$?$N$O!"
\e(B
54 \e$B$*$=$i$/%Q%U%)!<%^%s%9>e$NM}M3$K$h$j$^$9!#
\e(B
55 \e$B%&%'%V%5!<%P$O%5!<%V%l%C%H%3%s%F%J$H
\e(B TCP
\e$B%3%M%/%7%g%s$GDL?.$7$^$9!#
\e(B
56 \e$B%=%1%C%H@8@.$O=E$$=hM}$J$N$G!"Ii2Y$r8:$i$9$?$a$K!"%5!<%V%l%C%H%3%s%F%J$H$N
\e(B
57 TCP
\e$B@\B3$r0];}$7!"J#?t$N%j%/%(%9%H!&%l%9%]%s%9=hM}%5%$%/%k$KBP$7$F0l$D$N
\e(B
58 \e$B%3%M%/%7%g%s$r;H$$$^$o$9$h$&$K$J$C$F$$$^$9!#
\e(B</p>
59 <p>
\e$B$"$k%j%/%(%9%H$K%3%M%/%7%g%s$,3d$jEv$F$i$l$k$H!"$=$N=hM}%5%$%/%k$,
\e(B
60 \e$B40N;$9$k$^$GB>$N$b$N$K;H$o$l$k$3$H$O$"$j$^$;$s!#
\e(B
61 \e$B$D$^$j%3%M%/%7%g%s>e$G$O!"%j%/%(%9%H$NF1;~=hM}$O9T$o$l$^$;$s!#
\e(B
62 \e$B$3$N$?$a!"%3%M%/%7%g%sN>C<$G$N<B9T$9$k%3!<%I$r4J7i$K$G$-$k0lJ}$G!"
\e(B
63 \e$BF1;~$K3+$/%3%M%/%7%g%s$OB?$/$J$C$F$$$^$9!#
\e(B</p>
64 <p>
\e$B%5!<%V%l%C%H%3%s%F%J$X$N%3%M%/%7%g%s$r3+$$$?8e$O!"%3%M%/%7%g%s$N>uBV$O
\e(B
65 \e$B<!$N$I$l$+$K$J$j$^$9
\e(B:</p>
67 <li> Idle <br />
\e$B%3%M%/%7%g%s>e$G=hM}$5$l$F$$$k%j%/%(%9%H$O$"$j$^$;$s!#
\e(B</li>
68 <li> Assigned <br />
\e$B%3%M%/%7%g%s$O%j%/%(%9%H$r=hM}Cf$G$9!#
\e(B</li>
70 <p>
\e$B%3%M%/%7%g%s$,FCDj$N%j%/%(%9%H$K%"%5%$%s$5$l$k$H!"4pK\E*$J>pJs
\e(B (
\e$BNc$($P
\e(B
71 HTTP
\e$B%X%C%@Ey
\e(B)
\e$B$,05=L$5$l$?7A
\e(B (
\e$BNc$($PDL>o$NJ8;zNs$O@0?t$K%(%s%3!<%I$5$l$^$9
\e(B)
72 \e$B$GE>Aw$5$l$^$9!#>\:Y$O2<5-$N!V%j%/%(%9%H%Q%1%C%H$N9=B$!W$r;2>H$7$F$/$@$5$$!#
\e(B
73 \e$B%j%/%(%9%H$K%\%G%#$,B8:_
\e(B <code>(content-length > 0)</code>
\e$B$9$l$P!"
\e(B
74 \e$B4pK\E*$J>pJs$ND>8e$KJL%Q%1%C%H$GE>Aw$5$l$^$9!#
\e(B</p>
75 <p>
\e$B$3$N;~E@$G$*$=$i$/!"%5!<%V%l%C%H%3%s%F%J$O=hM}$r3+;O$G$-$k$h$&$K$J$j$^$9!#
\e(B
76 \e$B$G$9$N$G!"<!$N%a%C%;!<%8$r%&%'%V%5!<%P$KLa$7$FCN$i$;$i$l$k$h$&$K$J$j$^$9!#
\e(B</p>
78 <li>SEND_HEADERS <br/>
\e$B%V%i%&%6$K%X%C%@$rAw?.$7$^$9!#
\e(B</li>
79 <li>SEND_BODY_CHUNK <br/>
\e$B%V%i%&%6$K%\%G%#%G!<%?$N%A%c%s%/$rAw$j$^$9!#
\e(B
81 <li>GET_BODY_CHUNK <br/>
\e$B%j%/%(%9%H$N%G!<%?$rA4$F<u$1<h$j=*$o$C$F$$$J$$$H$-$K!"
\e(B
82 \e$B;D$C$F$$$k%G!<%?$r<u$1<h$j$^$9!#%Q%1%C%H$K$"$kDj$^$C$?:GBgD9$,$"$j!"G$0U$N
\e(B
83 \e$BBg$-$5$N%G!<%?$,%j%/%(%9%H$N%\%G%#$H$7$F4^$^$l$&$k>l9g
\e(B
84 (
\e$BNc$($P%U%!%$%k$N%"%C%W%m!<%I$N>l9g
\e(B)
\e$B$KI,MW$H$J$j$^$9!#
\e(B
85 (
\e$BCm
\e(B: HTTP
\e$B$N%A%c%s%/E>Aw$H$O4XO"$"$j$^$;$s!#
\e(B)</li>
86 <li>END_RESPONSE <br/>
\e$B%j%/%(%9%H=hM}%5%$%/%k$r=*N;$7$^$9!#
\e(B</li>
88 <p>
\e$B8D!9$N%a%C%;!<%8$O$=$l$>$l0[$J$k%G!<%?%Q%1%C%H7A<0$K$J$C$F$$$^$9!#
\e(B
89 \e$B8e=R$N!V%l%9%]%s%9%Q%1%C%H$N9=B$!W$r;2>H$7$F$/$@$5$$!#
\e(B</p>
92 <section id="basppacketstruct"><title>
\e$B4pK\%Q%1%C%H9=B$
\e(B</title>
93 <p>
\e$B$3$N%W%m%H%3%k$K$O
\e(B XDR
\e$B$+$i<u$17Q$$$@ItJ,$,>/$7$"$j$^$9$,!"B?$/$NE@$G
\e(B
94 \e$B0[$J$j$^$9
\e(B (
\e$BNc$($P
\e(B 4
\e$B%P%$%H%"%i%$%a%s%H$G$J$$$3$H$J$I
\e(B)
\e$B!#
\e(B</p>
95 <p>
\e$B%P%$%H%*!<%@!<
\e(B:
\e$B8D!9$N%P%$%H$N%(%s%G%#%"%s$,$I$&$J$C$F$$$k$+$O!"
\e(B
96 \e$B;d$O>\$7$/$J$$$N$G$9$,!"%j%H%k%(%s%G%#%"%s$K$J$C$F$$$k$H;W$$$^$9!#
\e(B
97 XDR
\e$B;EMM$G$=$&$J$C$F$$$k$N$H!"AG@2$i$7$$$3$H$K
\e(B sys/socket
\e$B%i%$%V%i%j$,
\e(B
98 (C
\e$B$G
\e(B)
\e$B$=$&$$$&Iw$K$G$-$F$$$k$N$G$=$&$J$N$@$H;W$$$^$7$?!#
\e(B
99 \e$B%=%1%C%H8F$S=P$7$NFbIt$K$D$$$F$h$j>\$7$$J}$,$$$i$C$7$c$$$^$7$?$i!"
\e(B
100 \e$B$465<x$/$@$5$$!#
\e(B</p>
101 <p>
\e$B%W%m%H%3%k$K$O
\e(B 4
\e$B$D$N%G!<%?%?%$%W$,$"$j$^$9
\e(B: byte, boolean,
102 integer, string
\e$B$G$9!#
\e(B</p>
104 <dt><strong>Byte</strong></dt><dd>
\e$B%P%$%H0l$D$G$9!#
\e(B</dd>
105 <dt><strong>Boolean</strong></dt>
106 <dd>
\e$B%P%$%H0l$D$G!"
\e(B<code>1 = true</code>, <code>0 = false</code>
\e$B$G$9!#
\e(B
107 (C
\e$B$N$h$&$K
\e(B)
\e$BHsNm$r??$H$7$F07$C$F$7$^$&$H!"$"$k>l9g$OF0$/$+$b$7$l$^$;$s$7!"
\e(B
108 \e$BF0$+$J$$$+$b$7$l$^$;$s!#
\e(B</dd>
109 <dt><strong>Integer</strong></dt>
110 <dd><code>0
\e$B$+$i
\e(B 2^16 (32768)</code>
\e$B$NHO0O$N?t;z!#9b<!$N
\e(B 2
\e$B%P%$%H$,
\e(B
111 \e$B@h$K3JG<$5$l$^$9!#
\e(B</dd>
112 <dt><strong>String</strong></dt>
113 <dd>
\e$B2DJQD9$NJ8;zNs
\e(B (2^16
\e$B$,D9$5$N>e8B
\e(B)
\e$B!#D9$5>pJs$N%Q%1%C%H
\e(B 2
\e$B%P%$%H$N8e$K
\e(B
114 \e$BJ8;zNs
\e(B (
\e$B=*C<J8;z
\e(B '\0'
\e$B$r4^$`
\e(B)
\e$B$,B3$/7A<0$G%(%s%3!<%I$5$l$^$9!#
\e(B
115 \e$B%(%s%3!<%I$5$l$F$$$kD9$5>pJs$O:G8e$N
\e(B '\0'
\e$B$r
\e(B<strong>
\e$B%+%&%s%H$7$J$$
\e(B</strong>
116 \e$B$3$H$KCm0U$7$F$/$@$5$$!=!=$3$l$O
\e(B <code>strlen</code>
\e$B$HF1MM$G$9!#
\e(B
117 \e$B$3$l$i$N=*C<J8;z$r%9%-%C%W$9$k$?$a$K!"$"$^$j0UL#$NL5$$%$%s%/%j%a%s%HJ8
\e(B
118 \e$B$r$?$/$5$s=q$+$J$$$H$$$1$J$$$N$O!"
\e(B
119 Java
\e$B$NB&$+$i8+$k$H>/$7J6$i$o$7$/46$8$i$l$k$+$b$7$l$^$;$s!#
\e(B
120 \e$B$3$&$J$C$?M}M3$O$*$=$i$/!"
\e(BServlet
\e$B%3%s%F%J$+$iJV$5$l$kJ8;zNs$rFI$_=P$9;~$K!"
\e(B
121 \e$B8zN($h$/
\e(B C
\e$B$N%3!<%I$r=q$1$k$h$&$K$9$k!=!=%5!<%V%l%C%H$+$iJV$5$l$k
\e(B
122 \e$BJ8;zNs$O
\e(B \0
\e$BJ8;z$G=*C<$5$l$F$$$k$N$G!"
\e(BC
\e$B$N%3!<%I$G$O$o$6$o$6%3%T!<$r$;$:$K!"
\e(B
123 \e$B0l$D$N%P%C%U%!$X$N%j%U%!%l%s%9$r<h$j2s$9$h$&$K=q$/$3$H$,$G$-$k!=!=
\e(B
124 \e$B$?$a$@$H;W$o$l$^$9!#
\e(B
125 '\0'
\e$BJ8;z$,$J$$>l9g$O!"
\e(BC
\e$B$G$OJ8;zNs$N5,B'$K9g$&$h$&$K%3%T!<$7$J$1$l$P
\e(B
126 \e$B$$$1$J$/$J$C$F$7$^$$$^$9!#
\e(B</dd>
129 <section><title>
\e$B%Q%1%C%H%5%$%:
\e(B</title>
130 <p>
\e$BB?$/$N%3!<%I$G$=$&$J$C$F$$$k$N$G$9$,!"%Q%1%C%H%5%$%:$N:GBg%5%$%:$O
\e(B
131 <code>8 * 1024 (8K)</code>
\e$B$G$9!#%Q%1%C%H$N<B:]$ND9$5$O%X%C%@$K
\e(B
132 \e$B%(%s%3!<%I$5$l$FF~$C$F$$$^$9!#
\e(B</p>
134 <section><title>
\e$B%Q%1%C%H%X%C%@
\e(B</title>
135 <p>
\e$B%5!<%P$+$i%3%s%F%J$KAw=P$5$l$k%Q%1%C%H$O
\e(B <code>0x1234</code>
\e$B$G;O$^$j$^$9!#
\e(B
136 \e$B%3%s%F%J$+$i%5!<%P$KAw$i$l$k%Q%1%C%H$O
\e(B <code>AB</code> (ASCII
\e$B%3!<%I
\e(B A
\e$B$H
\e(B
137 ASCII
\e$B%3!<%I
\e(B B)
\e$B$G;O$^$j$^$9!#$3$NFs%P%$%H$N8e$K!"%Z%$%m!<%ID9$,
\e(B (
\e$B>e5-$N7A<0$G
\e(B)
138 \e$BB3$-$^$9!#$3$N$?$a!"%Z%$%m!<%ID9$N:GBgCM$O
\e(B 2^16
\e$B$K$G$-$k$h$&$K;W$($^$9$,!"
\e(B
139 \e$B<B:]$K$O%3!<%I$G$O:GBgCM$O
\e(B 8K
\e$B$K@_Dj$5$l$F$$$^$9!#
\e(B</p>
142 <td colspan="6"><em>
\e$B%Q%1%C%H7A<0
\e(B (Server->Container)</em></td>
156 <td colspan="2">
\e$B%G!<%?D9
\e(B (n)</td>
162 <td colspan="6"><em>
\e$B%Q%1%C%H7A<0
\e(B (Container->Server)</em></td>
176 <td colspan="2">
\e$B%G!<%?D9
\e(B (n)</td>
180 <p>
\e$B$[$H$s$I$N%Q%1%C%H$G!"%Z%$%m!<%I$N:G=i$N%P%$%H$,%a%C%;!<%8$N7?$r%(%s%3!<%I
\e(B
181 \e$B$7$F$$$^$9!#Nc30$O%5!<%P$+$i%3%s%F%J$KAw$i$l$k%j%/%(%9%H%\%G%#%Q%1%C%H$G$9
\e(B
182 \e$B!=!=$3$l$i$OI8=`E*$J%Q%1%C%H7A<0
\e(B (<code>0x1234</code>
\e$B$H%Q%1%C%HD9
\e(B)
183 \e$B$G$9$,!"$=$N8e$KB3$/%W%l%U%#%C%/%9%3!<%I$,$"$j$^$;$s!#
\e(B</p>
184 <p>
\e$B%&%'%V%5!<%P$O<!$N%a%C%;!<%8$r%5!<%V%l%C%H%3%s%F%J$KAw=P$G$-$^$9!#
\e(B</p>
187 <td>
\e$B%3!<%I
\e(B</td>
188 <td>
\e$B%Q%1%C%H$N7?
\e(B</td>
189 <td>
\e$B0UL#
\e(B</td>
193 <td>Forward Request</td>
194 <td>
\e$B%j%/%(%9%H=hM}%5%$%/%k$r8eB3$N%G!<%?$H$H$b$K3+;O$9$k!#
\e(B</td>
199 <td>
\e$B%&%'%V%5!<%P$,%3%s%F%J$K!"%3%s%F%J$r=*N;$9$k$h$&$KEA$($k!#
\e(B</td>
204 <td>
\e$B%&%'%V%5!<%P$,%3%s%F%J$K@)8f$r<u$1;}$D$h$&$KEA$($k
\e(B
205 (
\e$B%;%-%e%"%m%0%$%s%U%'!<%:
\e(B)
\e$B!#
\e(B</td>
210 <td>
\e$B%&%'%V%5!<%P$,%3%s%F%J$K
\e(B CPong
\e$B$GB(:B$K1~Ez$9$k$h$&$KEA$($k!#
\e(B</td>
215 <td>
\e$B%5%$%:
\e(B (2
\e$B%P%$%H
\e(B)
\e$B$H$=$l$KB3$/%\%G%#%G!<%?!#
\e(B</td>
218 <p>
\e$B4pK\E*$J%;%-%e%j%F%#$r3NJ]$9$k$?$a!"%[%9%H$5$l$F$$$k%^%7%s$HF10l$N
\e(B
219 \e$B%^%7%s$+$i$N%j%/%(%9%H$KBP$7$F$N$_!"%3%s%F%J$O<B:]$K
\e(B <code>Shutdown</code>
220 \e$B$r<B9T$7$^$9!#
\e(B</p>
221 <p>
\e$B:G=i$N
\e(B <code>Data</code>
\e$B%Q%1%C%H$O!"
\e(B<code>Forward Request</code>
222 \e$B$ND>8e$K%&%'%V%5!<%P$+$iAw$i$l$^$9!#
\e(B</p>
223 <p>
\e$B%5!<%V%l%C%H%3%s%F%J$O%&%'%V%5!<%P$K!"<!$N%?%$%W$N%a%C%;!<%8$rAw$k$3$H$,
\e(B
224 \e$B$G$-$^$9
\e(B :</p>
227 <td>
\e$B%3!<%I
\e(B</td>
228 <td>
\e$B%Q%1%C%H$N7?
\e(B</td>
229 <td>
\e$B0UL#
\e(B</td>
233 <td>Send Body Chunk</td>
234 <td>
\e$B%5!<%V%l%C%H%3%s%F%J$+$i%&%'%V%5!<%P$K
\e(B
235 (
\e$B$=$7$F$*$=$i$/$=$N$^$^%V%i%&%6$K
\e(B)
\e$B!"%\%G%#$N%A%c%s%/$rAw$k!#
\e(B</td>
239 <td>Send Headers</td>
240 <td>
\e$B%5!<%V%l%C%H%3%s%F%J$+$i%&%'%V%5!<%P$K
\e(B (
\e$B$=$7$F$*$=$i$/$=$N$^$^%V%i%&%6$K
\e(B)
241 \e$B%l%9%]%s%9%X%C%@$rAw$k!#
\e(B</td>
245 <td>End Response</td>
246 <td>
\e$B%l%9%]%s%9
\e(B (
\e$B$D$^$j%j%/%(%9%H=hM}%5%$%/%k
\e(B)
\e$B=*N;$NL\0u$rAw$k!#
\e(B
251 <td>Get Body Chunk</td>
252 <td>
\e$B$^$@A4$FE>Aw$5$l$F$$$J$$>l9g!";D$C$F$$$k%j%/%(%9%H$N%G!<%?$r<u$1<h$k!#
\e(B
257 <td>CPong
\e$B1~Ez
\e(B</td>
258 <td>CPing
\e$B%j%/%(%9%H$K1~Ez$9$k!#
\e(B</td>
261 <p>
\e$B>e5-%a%C%;!<%8$O!"$=$l$>$lFbIt9=B$$,0[$J$C$F$$$^$9!#>\:Y$O2<5-$r$4Mw$/$@$5$$!#
\e(B
265 <section id="rpacetstruct"><title>
\e$B%j%/%(%9%H%Q%1%C%H9=B$
\e(B</title>
266 <p>
\e$B%5!<%P$+$i%3%s%F%J$XAw$i$l$k%a%C%;!<%8$,
\e(B
267 <em>Forward Request</em>
\e$B7?$N>l9g
\e(B :</p>
269 AJP13_FORWARD_REQUEST :=
270 prefix_code (byte) 0x02 = JK_AJP13_FORWARD_REQUEST
277 server_port (integer)
279 num_headers (integer)
280 request_headers *(req_header_name req_header_value)
281 attributes *(attribut_name attribute_value)
282 request_terminator (byte) OxFF
284 <p><code>request_headers</code>
\e$B$O<!$N$h$&$J9=B$$K$J$C$F$$$^$9
\e(B :
287 sc_req_header_name | (string) [see below for how this is parsed]
289 sc_req_header_name := 0xA0xx (integer)
291 req_header_value := (string)
293 <p><code>
\e$BB0@-
\e(B</code>
\e$B$O%*%W%7%g%s$G!"<!$N$h$&$J9=B$$r$7$F$$$^$9
\e(B :</p>
295 attribute_name := sc_a_name | (sc_a_req_attribute string)
297 attribute_value := (string)
300 <p>
\e$B$b$C$H$b=EMW$J%X%C%@$O
\e(B <code>content-length</code>
\e$B$@$H$$$&$3$H$K
\e(B
301 \e$BCm0U$7$F$/$@$5$$!#%3%s%F%J$O<!$N%Q%1%C%H$rC5$9$+$I$&$+$r!"
\e(B
302 \e$B$=$l$r8+$F7h$a$k$+$i$G$9!#
\e(B</p>
303 <section><title>Forward Request
\e$BMWAG$N>\:Y$J@bL@
\e(B
305 <section><title>Request prefix</title>
306 <p>
\e$B%j%/%(%9%H$K$D$$$F$OA4$F!"$3$NCM$O
\e(B 2
\e$B$K$J$j$^$9!#B>$N
\e(B Prefix
\e$B%3!<%I$N>\:Y$O
\e(B
307 \e$B>e5-$r$4Mw$/$@$5$$!#
\e(B</p>
309 <section><title>Method</title>
310 <p>HTTP
\e$B%a%=%C%I$O
\e(B 1
\e$B%P%$%H$K%(%s%3!<%I$5$l$^$9
\e(B :</p>
312 <tr><td>Command Name</td><td>Code</td></tr>
313 <tr><td>OPTIONS</td><td>1</td></tr>
314 <tr><td>GET</td><td>2</td></tr>
315 <tr><td>HEAD</td><td>3</td></tr>
316 <tr><td>POST</td><td>4</td></tr>
317 <tr><td>PUT</td><td>5</td></tr>
318 <tr><td>DELETE</td><td>6</td></tr>
319 <tr><td>TRACE</td><td>7</td></tr>
320 <tr><td>PROPFIND</td><td>8</td></tr>
321 <tr><td>PROPPATCH</td><td>9</td></tr>
322 <tr><td>MKCOL</td><td>10</td></tr>
323 <tr><td>COPY</td><td>11</td></tr>
324 <tr><td>MOVE</td><td>12</td></tr>
325 <tr><td>LOCK</td><td>13</td></tr>
326 <tr><td>UNLOCK</td><td>14</td></tr>
327 <tr><td>ACL</td><td>15</td></tr>
328 <tr><td>REPORT</td><td>16</td></tr>
329 <tr><td>VERSION-CONTROL</td><td>17</td></tr>
330 <tr><td>CHECKIN</td><td>18</td></tr>
331 <tr><td>CHECKOUT</td><td>19</td></tr>
332 <tr><td>UNCHECKOUT</td><td>20</td></tr>
333 <tr><td>SEARCH</td><td>21</td></tr>
334 <tr><td>MKWORKSPACE</td><td>22</td></tr>
335 <tr><td>UPDATE</td><td>23</td></tr>
336 <tr><td>LABEL</td><td>24</td></tr>
337 <tr><td>MERGE</td><td>25</td></tr>
338 <tr><td>BASELINE_CONTROL</td><td>26</td></tr>
339 <tr><td>MKACTIVITY</td><td>27</td></tr>
341 <p>
\e$B:#8e$N
\e(B ajp13
\e$B%P!<%8%g%s$G$O!"$3$N0lMw$K$J$$!":#8eDI2C$5$l$k%a%=%C%I$r
\e(B
342 \e$BAw$k$+$b$7$l$^$;$s!#
\e(B</p>
344 <section><title>protocol, req_uri, remote_addr, remote_host, server_name,
345 server_port, is_ssl</title>
346 <p>
\e$B$3$l$i$O$^$5$KJ8;zDL$j$N$b$N$G$9!#$I$l$bI,MW$G!"%j%/%(%9%H$NKh2s$K$D$-
\e(B
347 \e$BAw$i$l$^$9!#
\e(B</p>
349 <section><title>Headers</title>
350 <p><code>request_headers</code>
\e$B$N9=B$$O<!$N$h$&$J$b$N$G$9
\e(B :
351 \e$B$^$:%X%C%@$N?t
\e(B <code>num_headers</code>
\e$B$,%(%s%3!<%I$5$l$^$9!#
\e(B
352 \e$B<!$K%X%C%@L>
\e(B <code>req_header_name</code> /
\e$BCM
\e(B <code>req_header_value</code>
353 \e$B$NAH$,B3$-$^$9!#8zN($N$?$a!"0lHLE*$J%X%C%@$O@0?t$G%(%s%3!<%I$7$FE>Aw$7$^$9!#
\e(B
354 \e$B%X%C%@L>$,4pK\%X%C%@$N0lMw$KL5$$>l9g$O!"DL>oDL$j
\e(B (
\e$BJ8;zNs$H$7$F!"D9$5
\e(B
355 \e$B%W%l%U%#%C%/%9IU$-$G
\e(B)
\e$BE>Aw$5$l$^$9!#0lHLE*$J%X%C%@
\e(B
356 <code>sc_req_header_name</code>
\e$B$N0lMw$H$=$N%3!<%I$O<!$NDL$j$G$9
\e(B
357 (
\e$B$I$l$bBgJ8;z>.J8;z$r6hJL$7$^$9
\e(B) :</p>
359 <tr><td>
\e$BL>A0
\e(B</td><td>
\e$B%3!<%I$NCM
\e(B</td><td>
\e$B%3!<%IL>
\e(B</td></tr>
360 <tr><td>accept</td><td>0xA001</td><td>SC_REQ_ACCEPT</td></tr>
361 <tr><td>accept-charset</td><td>0xA002</td><td>SC_REQ_ACCEPT_CHARSET
363 <tr><td>accept-encoding</td><td>0xA003</td><td>SC_REQ_ACCEPT_ENCODING
365 <tr><td>accept-language</td><td>0xA004</td><td>SC_REQ_ACCEPT_LANGUAGE
367 <tr><td>authorization</td><td>0xA005</td><td>SC_REQ_AUTHORIZATION</td>
369 <tr><td>connection</td><td>0xA006</td><td>SC_REQ_CONNECTION</td></tr>
370 <tr><td>content-type</td><td>0xA007</td><td>SC_REQ_CONTENT_TYPE</td>
372 <tr><td>content-length</td><td>0xA008</td><td>SC_REQ_CONTENT_LENGTH</td>
374 <tr><td>cookie</td><td>0xA009</td><td>SC_REQ_COOKIE</td></tr>
375 <tr><td>cookie2</td><td>0xA00A</td><td>SC_REQ_COOKIE2</td></tr>
376 <tr><td>host</td><td>0xA00B</td><td>SC_REQ_HOST</td></tr>
377 <tr><td>pragma</td><td>0xA00C</td><td>SC_REQ_PRAGMA</td></tr>
378 <tr><td>referer</td><td>0xA00D</td><td>SC_REQ_REFERER</td></tr>
379 <tr><td>user-agent</td><td>0xA00E</td><td>SC_REQ_USER_AGENT</td></tr>
381 <p>
\e$B$3$l$rFI$_9~$`
\e(B Java
\e$B$N%3!<%I$G$O!":G=i$N
\e(B 2
\e$B%P%$%H@0?t$r<h$j9~$_!"
\e(B
382 \e$BL\0u$K$J$k%P%$%H
\e(B <code>'0xA0'</code>
\e$B$G$"$l$P!"%X%C%@L>$NG[Ns$N
\e(B
383 \e$B%$%s%G%C%/%9$r;H$$$^$9!#@hF,%P%$%H$,
\e(B <code>0xA0</code>
\e$B$G$J$$>l9g$O!"
\e(B
384 \e$B@hF,
\e(B 2
\e$B%P%$%H$OJ8;zNsD9$rI=$9@0?t$G$"$k$H2r<a$7!"FI$_9~$_$O$8$a$^$9!#
\e(B</p>
385 <p>
\e$B%X%C%@L>$ND9$5$O
\e(B <code>0x9999 (==0xA000 -1)</code>
\e$B0J>e$K$J$i$J$$$H$$$&
\e(B
386 \e$B2>Dj$N2<$KF0$$$F$$$F!">/$7$"$$$^$$$G$9$,9gM}E*$J5sF0$K$J$C$F$$$^$9!#
\e(B</p>
387 <note><title>
\e$BCm
\e(B:</title>
388 <code>content-length</code>
\e$B%X%C%@$O$H$F$b=EMW$G$9!#
\e(B
389 \e$BB8:_$7$F$$$FHs%<%m$G$"$l$P!"%j%/%(%9%H$K$O%\%G%#$,$"$k
\e(B (
\e$BNc$($P
\e(B POST
390 \e$B%j%/%(%9%H
\e(B)
\e$B$H?dB,$7!"$=$N%\%G%#$r<h$j9~$`$?$a$K
\e(B
391 \e$BD>8e$N%Q%1%C%H$rF~NO%9%H%j!<%`$+$iFI$_9~$_$O$8$a$^$9!#
\e(B
394 <section><title>
\e$BB0@-
\e(B</title>
395 <p><code>?</code>
\e$B%W%l%U%#%C%/%9$G;O$^$kB0@-
\e(B (
\e$BNc
\e(B <code>?context</code>)
396 \e$B$O!#>JN,2DG=$G$9!#$=$l$>$lB0@-$N7?$r<($9
\e(B 1
\e$B%P%$%H$N%3!<%I$H!"
\e(B
397 \e$BCM$NJ8;zNs$,B3$-$^$9!#
\e(B
398 \e$B$3$l$i$O=gITF1$GAw$k$3$H$,$G$-$^$9
\e(B (C
\e$B$N%3!<%I$O>o$K2<$N0lMw=g$K
\e(B
399 \e$BAw$k$h$&$G$9$,
\e(B)
\e$B!#
\e(B
400 \e$B%*%W%7%g%s$NB0@-$N%j%9%H$N:G8e$K$O!"FCJL$J=*N;%3!<%I$,Aw$i$l$^$9!#
\e(B
401 \e$B%3!<%I$N0lMw$O
\e(B : </p>
403 <tr><td>Information</td><td>Code Value</td><td>Note</td></tr>
404 <tr><td>?context</td><td>0x01</td><td>
\e$BL$<BAu
\e(B
406 <tr><td>?servlet_path</td><td>0x02</td><td>
\e$BL$<BAu
\e(B
408 <tr><td>?remote_user</td><td>0x03</td><td></td></tr>
409 <tr><td>?auth_type</td><td>0x04</td><td></td></tr>
410 <tr><td>?query_string</td><td>0x05</td><td></td></tr>
411 <tr><td>?jvm_route</td><td>0x06</td><td></td></tr>
412 <tr><td>?ssl_cert</td><td>0x07</td><td></td></tr>
413 <tr><td>?ssl_cipher</td><td>0x08</td><td></td></tr>
414 <tr><td>?ssl_session</td><td>0x09</td><td></td></tr>
415 <tr><td>?req_attribute</td><td>0x0A</td><td>Name (the name of the
416 attribute follows)</td></tr>
417 <tr><td>?ssl_key_size</td><td>0x0B</td><td></td></tr>
418 <tr><td>are_done</td><td>0xFF</td><td>request_terminator</td></tr>
420 <p><code>context</code>
\e$B$H
\e(B <code>servlet_path</code>
\e$B$O8=:_$N
\e(B C
\e$B$N
\e(B
421 \e$B%3!<%I$G$O%;%C%H$5$l$F$$$^$;$s!#$^$?!"$[$H$s$I$N
\e(B Java
\e$B$N%3!<%I$G$b!"
\e(B
422 \e$B$3$N%U%#!<%k%I$G2?$,Aw$i$l$F$bL5;k$5$l$^$9
\e(B (
\e$B$3$l$i$N%3!<%I$N8e$KJ8;zNs$,
\e(B
423 \e$BAw$i$l$k$H2u$l$k$b$N$b$"$j$^$9
\e(B)
\e$B!#
\e(B
424 \e$B$3$l$,%P%0$J$N$+!"C1$KL$<BAu$J$N$+!"Nr;KE*7P0^$G;D$C$F$$$k%3!<%I$J$N$+
\e(B
425 \e$BJ,$+$j$^$;$s$,!"%3%M%/%7%g%s$NN>B&$H$b$G8+Ev$?$j$^$;$s!#
\e(B</p>
426 <p><code>remote_user</code>
\e$B$H
\e(B <code>auth_type</code>
\e$B$O$*$=$i$/
\e(B
427 HTTP
\e$B%l%Y%k$NG'>Z$r;2>H$7$F$$$F!"%j%b!<%H%f!<%6$N%f!<%6L>$HG'>Z$K;HMQ$7$?
\e(B
428 \e$B%?%$%W
\e(B (
\e$BNc
\e(B Basic, Digest)
\e$B$K$D$$$F$d$j<h$j$7$^$9!#
\e(B</p>
429 <p><code>query_string</code>, <code>ssl_cert</code>,
430 <code>ssl_cipher</code>, <code>ssl_session</code>
431 \e$B$O
\e(B HTTP
\e$B$H
\e(B HTTPS
\e$B$NBP1~$9$kItJ,$r;2>H$7$^$9!#
\e(B</p>
432 <p><code>jvm_route</code>
\e$B$O%9%F%#%C%-!<%;%C%7%g%s$N%5%]!<%H!=!=
\e(B
433 \e$B%m!<%I%P%i%s%9$7$F$$$kJ#?t$N%5!<%PCf$NFCDj$N
\e(B Tomcat
\e$B%$%s%9%?%s%9$H!"
\e(B
434 \e$B%f!<%6$N%;%C%7%g%s$H$rI3IU$1$k5!G=!=!=$K;H$o$l$^$9!#
\e(B</p>
435 <p>
\e$B$3$N4pK\B0@-0lMw$KL5$$$b$N$K$D$$$F$O!"
\e(B<code>req_attribute</code>
436 \e$B%3!<%I
\e(B <code>0x0A</code>
\e$B7PM3$GB0@-$r2?8D$G$bAw$k$3$H$,$G$-$^$9!#
\e(B
437 \e$BB0@-$NL>A0$HCM$NJ8;zNs$NAH$r!"$=$l$>$l$3$N%3!<%I$ND>8e$KAw$j$^$9!#
\e(B
438 \e$B4D6-JQ?t$O$3$NJ}K!$GEA$($i$l$^$9!#
\e(B</p>
439 <p>
\e$B:G8e$KB0@-$,A4$FAw?.$5$l$?8e$K!"B0@-$N=*C<$r<($9
\e(B <code>0xFF</code>
440 \e$B$,Aw=P$5$l$^$9!#$3$N?.9f$OB0@-$N0lMw$N=*$o$j$r<($9$HF1;~$K!"%j%/%(%9%H
\e(B
441 \e$B%Q%1%C%H$N=*C<$r$b<($7$F$$$^$9!#
\e(B</p>
445 <section id="resppacketstruct"><title>
\e$B%l%9%]%s%9%Q%1%C%H9=B$
\e(B</title>
446 <p>
\e$B%3%s%F%J$,%5!<%P$KAw$jJV$9$3$H$N$G$-$k%a%C%;!<%8
\e(B:</p>
448 AJP13_SEND_BODY_CHUNK :=
450 chunk_length (integer)
454 AJP13_SEND_HEADERS :=
456 http_status_code (integer)
457 http_status_msg (string)
458 num_headers (integer)
459 response_headers *(res_header_name header_value)
462 sc_res_header_name | (string) [see below for how this is parsed]
464 sc_res_header_name := 0xA0 (byte)
466 header_value := (string)
468 AJP13_END_RESPONSE :=
473 AJP13_GET_BODY_CHUNK :=
475 requested_length (integer)
477 <section><title>
\e$B>\:Y
\e(B :</title></section>
478 <section><title>Send Body Chunk</title>
479 <p>
\e$B%A%c%s%/$O4pK\E*$K$O%P%$%J%j%G!<%?$G!"%V%i%&%6$KD>@\Aw$i$l$^$9!#
\e(B</p>
481 <section><title>Send Headers</title>
482 <p>
\e$B%9%F!<%?%9%3!<%I$H%a%C%;!<%8$,DL>o$N
\e(B HTTP
\e$B$NDL?.$K$O$"$j$^$9
\e(B (
\e$BNc
\e(B
483 <code>200</code>
\e$B$H
\e(B <code>OK</code>)
\e$B!#%l%9%]%s%9%X%C%@L>$O!"
\e(B
484 \e$B%j%/%(%9%H%X%C%@L>$HF1MM$NJ}K!$G%(%s%3!<%I$5$l$^$9!#
\e(B
485 \e$B%3!<%I$HJ8;zNs$NH=JLJ}K!$N>\:Y$K4X$7$F$O!">e5-$N
\e(B header_encoding
486 \e$B$r;2>H$7$F$/$@$5$$!#
\e(B
487 \e$B0lHLE*$J%X%C%@$N%3!<%I$O
\e(B :</p>
489 <tr><td>
\e$BL>A0
\e(B</td><td>
\e$B%3!<%I$NCM
\e(B</td></tr>
490 <tr><td>Content-Type</td><td>0xA001</td></tr>
491 <tr><td>Content-Language</td><td>0xA002</td></tr>
492 <tr><td>Content-Length</td><td>0xA003</td></tr>
493 <tr><td>Date</td><td>0xA004</td></tr>
494 <tr><td>Last-Modified</td><td>0xA005</td></tr>
495 <tr><td>Location</td><td>0xA006</td></tr>
496 <tr><td>Set-Cookie</td><td>0xA007</td></tr>
497 <tr><td>Set-Cookie2</td><td>0xA008</td></tr>
498 <tr><td>Servlet-Engine</td><td>0xA009</td></tr>
499 <tr><td>Status</td><td>0xA00A</td></tr>
500 <tr><td>WWW-Authenticate</td><td>0xA00B</td></tr>
502 <p>
\e$B%3!<%I$+%X%C%@J8;zNs$ND>8e$K$O!"%X%C%@$NCM$,%(%s%3!<%I$5$l$^$9!#
\e(B</p>
504 <section><title>End Response</title>
505 <p>
\e$B%j%/%(%9%H=hM}%5%$%/%k$N=*N;$rCN$i$;$^$9!#
\e(B<code>reuse</code>
\e$B%U%i%0$,??
\e(B
506 <code>(==1)</code>
\e$B$N>l9g!"8=:_;HMQ$7$F$$$k
\e(B TCP
\e$B%3%M%/%7%g%s$O<!$N?7$7$$
\e(B
507 \e$B%j%/%(%9%H$K;H$($k$h$&$K$J$j$^$9!#
\e(B<code>reuse</code>
\e$B$,56
\e(B (C
\e$B$N%3!<%I$G$O
\e(B
508 1
\e$B0J30$NA4$F
\e(B)
\e$B$N>l9g$O!"%3%M%/%7%g%s$rJD$8$k$3$H$K$J$j$^$9!#
\e(B</p>
510 <section><title>Get Body Chunk</title>
511 <p>(
\e$B%\%G%#$N%5%$%:$,Bg$-$9$.$F:G=i$N%Q%1%C%H$K<}$^$i$J$$>l9g$d!"
\e(B
512 \e$B%j%/%(%9%H$,%A%c%s%/E>Aw$5$l$?>l9g$J$I$K$O!"
\e(B)
\e$B%3%s%F%J$O%j%/%(%9%H$+$i$N
\e(B
513 \e$B%G!<%?FI$_9~$_MW5a$r$7$^$9!#%5!<%PB&$O$=$l$KBP$7$F!":G>.
\e(B
514 <code>request_length</code>
\e$B:GBg
\e(B <code>(8186 (8 Kbytes - 6))</code>
515 \e$B$NHO0O$G!"L$E>Aw$G;D$C$F$$$k%j%/%(%9%H%\%G%#$NBg$-$5$N%G!<%?$r
\e(B
516 \e$BAw$jJV$7$^$9!#
\e(B<br />
517 \e$B%\%G%#$K$=$l0J>e%G!<%?$,;D$C$F$$$J$$>l9g
\e(B (
\e$B$D$^$j%5!<%V%l%C%H$,
\e(B
518 \e$B%\%G%#$N:G8e$rD6$($FFI$_9~$b$&$H$7$?>l9g
\e(B)
\e$B!"%5!<%P$O
\e(B
519 \e$B%Z%$%m!<%ID9
\e(B 0
\e$B$N
\e(B<em>
\e$B6u%Q%1%C%H
\e(B</em><code>(0x12,0x34,0x00,0x00)</code>
520 \e$B$rAw$jJV$7$^$9!#
\e(B</p>