alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Java example source code file (wscompile_zh_TW.properties)

This example Java source code file (wscompile_zh_TW.properties) is included in the alvinalexander.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Learn more about this Java project at its project page.

Java - Java tags/keywords

api, general, gnu, http, jax-ws, jws, license, oracle, public, sei, this, wsdl, wsdl_uri, xauthfile

The wscompile_zh_TW.properties Java example source code

#
# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

wsimport.usage=\u7528\u6cd5: {0} [options] <WSDL_URI>\n\n\u4f7f\u7528 "wsimport -help" \u53ef\u53d6\u5f97\u9078\u9805\u7684\u8a73\u7d30\u63cf\u8ff0.

wsimport.help=\n\u7528\u6cd5: {0} [options] <WSDL_URI>\n\n\\\u5176\u4e2d [options] \u5305\u62ec:\n\\  -b                  \u6307\u5b9a jaxws/jaxb \u9023\u7d50\u6a94\u6848\u6216\u5176\u4ed6\u7db1\u8981\n\\                            (\u6bcf\u500b  \u5747\u5fc5\u9808\u8981\u6709\u81ea\u5df1\u7684 -b)\n\\  -B            \u5c07\u6b64\u9078\u9805\u50b3\u9001\u5230 JAXB \u7db1\u8981\u7de8\u8b6f\u5668\n\\  -catalog            \u6307\u5b9a\u8981\u7528\u4ee5\u89e3\u6790\u5916\u90e8\u500b\u9ad4\u53c3\u7167\u7684\u76ee\u9304\u6a94\u6848\n\\                            \u652f\u63f4 TR9401\u3001XCatalog \u4ee5\u53ca OASIS XML \u76ee\u9304\u683c\u5f0f.\n\\  -d             \u6307\u5b9a\u7f6e\u653e\u7522\u751f\u4e4b\u8f38\u51fa\u6a94\u6848\u7684\u4f4d\u7f6e\n\\  -encoding       \u6307\u5b9a\u4f86\u6e90\u6a94\u6848\u6240\u4f7f\u7528\u7684\u5b57\u5143\u7de8\u78bc\n\\  -extension                \u5141\u8a31\u5ee0\u5546\u64f4\u5145 - \u672a\u7531\u898f\u683c\u6307\u5b9a\n\\                            \u529f\u80fd.  \u4f7f\u7528\u64f4\u5145\u53ef\u80fd\u5c0e\u81f4\n\\                            \u4e0d\u53ef\u651c\u61c9\u7528\u7a0b\u5f0f\u6216\u8005\u53ef\u80fd\u7121\u6cd5\n\\                            \u8207\u5176\u4ed6\u5be6\u884c\u4e92\u52d5\u64cd\u4f5c\n\\  -help                     \u986f\u793a\u8aaa\u660e\n\\  -httpproxy::  \u6307\u5b9a HTTP \u4ee3\u7406\u4e3b\u6a5f\u4f3a\u670d\u5668 (\u9023\u63a5\u57e0\u9810\u8a2d\u70ba 8080)\n\\  -keep                     \u4fdd\u7559\u7522\u751f\u7684\u6a94\u6848\n\\  -p                   \u6307\u5b9a\u76ee\u6a19\u5957\u88dd\u7a0b\u5f0f\n\\  -quiet                    \u6291\u5236 wsimport \u8f38\u51fa\n\\  -s             \u6307\u5b9a\u7f6e\u653e\u7522\u751f\u4e4b\u4f86\u6e90\u6a94\u6848\u7684\u4f4d\u7f6e\n\\  -target          \u6839\u64da\u6307\u5b9a\u7684 JAXWS \u898f\u683c\u7248\u672c\u7522\u751f\u7a0b\u5f0f\u78bc\n\\                            \u9810\u8a2d\u70ba 2.2, \u63a5\u53d7\u7684\u503c\u5305\u62ec 2.0\u30012.1 \u4ee5\u53ca 2.2\n\\                            \u4f8b\u5982, 2.0 \u5c07\u6703\u7522\u751f\u8207 JAXWS 2.0 \u898f\u683c\u76f8\u5bb9\u7684\u7a0b\u5f0f\u78bc\n\\  -verbose                  \u8f38\u51fa\u7de8\u8b6f\u5668\u57f7\u884c\u76f8\u95dc\u8a0a\u606f\n\\  -version                  \u5217\u5370\u7248\u672c\u8cc7\u8a0a\n\\  -wsdllocation   @WebServiceClient.wsdlLocation \u503c\n\\  -clientjar       \u5efa\u7acb\u7522\u751f\u4e4b\u4f7f\u7528\u8005\u81ea\u5efa\u7269\u4ef6\u7684 jar \u6a94\u6848, \u4ee5\u53ca\n\\                            \u547c\u53eb Web \u670d\u52d9\u6240\u9700\u7684 WSDL \u63cf\u8ff0\u8cc7\u6599.\n\\  -generateJWS              \u7522\u751f stub JWS \u5be6\u884c\u6a94\u6848\n\\  -implDestDir   \u6307\u5b9a\u7522\u751f JWS \u5be6\u884c\u6a94\u6848\u7684\u4f4d\u7f6e\n\\  -implServiceName    \u7522\u751f\u4e4b JWS \u5be6\u884c\u7684\u670d\u52d9\u540d\u7a31\u672c\u6a5f\u90e8\u5206\n\\  -implPortName       \u7522\u751f\u4e4b JWS \u5be6\u884c\u7684\u9023\u63a5\u57e0\u540d\u7a31\u672c\u6a5f\u90e8\u5206

wsimport.usage.extensions=\n\\\u64f4\u5145:\n\\  -XadditionalHeaders              \u5c07\u672a\u9023\u7d50\u81f3\u8981\u6c42\u6216\u56de\u61c9\u8a0a\u606f\u7684\u6a19\u982d\u5c0d\u61c9\u81f3 \n\\                                   Java \u65b9\u6cd5\u53c3\u6578\n\\  -Xauthfile                       \u4fdd\u7559\u6388\u6b0a\u8cc7\u8a0a\u7684\u6a94\u6848, \u5176\u683c\u5f0f\u70ba: \n\\                                   http://username:password@example.org/stock?wsdl\n\\  -Xdebug                          \u5217\u5370\u9664\u932f\u8cc7\u8a0a\n\\  -Xno-addressing-databinding      \u555f\u7528\u5c07 W3C EndpointReferenceType \u9023\u7d50\u81f3 Java\n\\  -Xnocompile                      \u4e0d\u7de8\u8b6f\u7522\u751f\u7684 Java \u6a94\u6848\n\\  -XdisableAuthenticator           \u505c\u7528 JAX-WS RI \u6240\u4f7f\u7528\u7684\u300c\u8a8d\u8b49\u7a0b\u5f0f\u300d,\n\\                                   -Xauthfile \u9078\u9805\u5c07\u88ab\u5ffd\u7565, \u5982\u679c\u8a2d\u5b9a\n\\  -XdisableSSLHostnameVerification \u5728\u64f7\u53d6 wsdl \u6642\u505c\u7528 SSL \u4e3b\u6a5f\u540d\u7a31\n\\                                   \u9a57\u8b49


wsimport.usage.examples=\n\\\u7bc4\u4f8b:\n\  wsimport stock.wsdl -b stock.xml -b stock.xjb\n\  wsimport -d generated http://example.org/stock?wsdl\n

wsgen.usage=\u7528\u6cd5: {0} [options] <SEI>\n\n\u4f7f\u7528 "wsgen -help" \u53ef\u53d6\u5f97\u9078\u9805\u7684\u8a73\u7d30\u63cf\u8ff0.

wsgen.help=\n\u7528\u6cd5: {0} [options] <SEI>\n\n\\\u5176\u4e2d [options] \u5305\u62ec:\n\  -classpath           \u6307\u5b9a\u5c0b\u627e\u8f38\u5165\u985e\u5225\u6a94\u6848\u7684\u4f4d\u7f6e\n\  -cp                  \u8207 -classpath  \u76f8\u540c\n\  -d              \u6307\u5b9a\u7f6e\u653e\u7522\u751f\u4e4b\u8f38\u51fa\u6a94\u6848\u7684\u4f4d\u7f6e\n\  -encoding        \u6307\u5b9a\u4f86\u6e90\u6a94\u6848\u6240\u4f7f\u7528\u7684\u5b57\u5143\u7de8\u78bc\n\  -extension                 \u5141\u8a31\u5ee0\u5546\u64f4\u5145 - \u672a\u7531\u898f\u683c\u6307\u5b9a\n\                             \u529f\u80fd.  \u4f7f\u7528\u64f4\u5145\u53ef\u80fd\u5c0e\u81f4\u4e0d\n\                             \u53ef\u651c\u61c9\u7528\u7a0b\u5f0f\u6216\u8005\u53ef\u80fd\u7121\u6cd5\n\                             \u8207\u5176\u4ed6\u5be6\u884c\u4e92\u52d5\u64cd\u4f5c\n\  -help                      \u986f\u793a\u8aaa\u660e\n\  -keep                      \u4fdd\u7559\u7522\u751f\u7684\u6a94\u6848s\n\  -r              \u8cc7\u6e90\u76ee\u7684\u5730\u76ee\u9304, \u6307\u5b9a\u7f6e\u653e\n\                             \u8cc7\u6e90\u6a94\u6848 (\u4f8b\u5982 WSDL) \u7684\u4f4d\u7f6e\n\  -s              \u6307\u5b9a\u7f6e\u653e\u7522\u751f\u4e4b\u4f86\u6e90\u6a94\u6848\u7684\u4f4d\u7f6e\n\  -verbose                   \u8f38\u51fa\u7de8\u8b6f\u5668\u57f7\u884c\u76f8\u95dc\u8a0a\u606f\n\  -version                   \u5217\u5370\u7248\u672c\u8cc7\u8a0a\n\  -wsdl[:protocol]           \u7522\u751f WSDL \u6a94\u6848. \u53ef\u9078\u64c7\u662f\u5426\u6307\u5b9a\u5354\u5b9a.\n\                             \u6709\u6548\u7684\u5354\u5b9a\u70ba {1},\n\                             \u9810\u8a2d\u70ba soap1.1.\n\                             \u975e\u6a19\u6e96\u5354\u5b9a {2}\n\                             \u53ea\u80fd\u642d\u914d -extension \u9078\u9805\n\                             \u4e00\u8d77\u59cb\u7528.\n\  -inlineSchemas             \u7522\u751f\u4e4b wsdl \u4e2d\u7684\u5167\u5d4c\u7db1\u8981. \u5fc5\u9808\n\                             \u642d\u914d -wsdl \u9078\u9805\u4e00\u8d77\u59cb\u7528.\n\  -servicename         \u6307\u5b9a\u7522\u751f\u4e4b WSDL \u4e2d\u6240\u8981\u4f7f\u7528\u7684\u300c\u670d\u52d9\u300d\u540d\u7a31\n\                             \u642d\u914d -wsdl \u9078\u9805\u4e00\u8d77\u59cb\u7528.\n\  -portname            \u6307\u5b9a\u7522\u751f\u4e4b WSDL \u4e2d\u6240\u8981\u4f7f\u7528\u7684\u300c\u9023\u63a5\u57e0\u300d\u540d\u7a31\n\                             \u642d\u914d -wsdl \u9078\u9805\u4e00\u8d77\u59cb\u7528.


wsgen.usage.examples=\n\\\u7bc4\u4f8b:\n\  wsgen -cp . example.Stock\n\  wsgen -cp . example.Stock -wsdl -servicename '{http://mynamespace}MyService'\n
wrapperTask.needEndorsed=\u60a8\u76ee\u524d\u57f7\u884c\u96a8\u9644\u65bc JAX-WS {0} API \u7684 JDK6, \u4f46\u662f\u6b64\u5de5\u5177\u9700\u8981\u4f7f\u7528 JAX-WS {1} API. \u8acb\u4f7f\u7528\u8a8d\u53ef\u7684\u6a19\u6e96\u8986\u5beb\u6a5f\u5236 (http://docs.oracle.com/javase/6/docs/technotes/guides/standards/), \u6216\u8005\u5728 <{2}> \u8a2d\u5b9a xendorsed="true".

# {0}, {2} - version (e.g. 2.1), {1} - absolute class location
wrapperTask.loadingIncorrectApi=\u60a8\u6b63\u5728\u5f9e {1} \u8f09\u5165 JAX-WS {0} API, \u4f46\u662f\u6b64\u5de5\u5177\u9700\u8981\u4f7f\u7528 JAX-WS {2} API.

invoker.needEndorsed=\u60a8\u76ee\u524d\u57f7\u884c\u96a8\u9644\u65bc JAX-WS {0} API \u7684 JDK6, \u4f46\u662f\u6b64\u5de5\u5177\u9700\u8981\u4f7f\u7528 JAX-WS {1} API. \u8acb\u4f7f\u7528\u8a8d\u53ef\u7684\u6a19\u6e96\u8986\u5beb\u6a5f\u5236 (http://docs.oracle.com/javase/6/docs/technotes/guides/standards/), \u6216\u8005\u4f7f\u7528 -Xendorsed \u9078\u9805.


#
# Generic Messages
#
wscompile.invalidOption=\u7121\u6cd5\u8fa8\u8b58\u7684\u53c3\u6578 {0}
wsimport.noSuchJaxbOption=\u6c92\u6709\u6b64 JAXB \u9078\u9805: {0}

wscompile.error=\u932f\u8aa4: {0}
wscompile.warning=\u8b66\u544a: {0}
wscompile.info=\u8cc7\u8a0a: {0}
wscompile.duplicateOption=\u91cd\u8907\u7684\u9078\u9805: {0}
wscompile.noSuchDirectory=\u627e\u4e0d\u5230\u76ee\u9304: {0}
# wscompile.missingOptionArgument
wscompile.missingOptionArgument=\u9078\u9805 \"{0}\" \u5fc5\u9808\u8981\u6709\u4e00\u500b\u5f15\u6578
wscompile.compilationFailed=\u7de8\u8b6f\u5931\u6557, \u5fc5\u9808\u5831\u544a\u932f\u8aa4
wscompile.unsupportedEncoding=\u4e0d\u652f\u63f4\u7684\u7de8\u78bc: {0}

wsimport.missingFile=\u907a\u6f0f WSDL_URI

wsgen.invalid.protocol=\u4e0d\u652f\u63f4 \"{0}\" \u5354\u5b9a.  \u652f\u63f4\u7684\u5354\u5b9a\u5305\u62ec: {1}.
wsgen.invalid.transport=\u4e0d\u652f\u63f4 \"{0}\" \u50b3\u8f38.  \u652f\u63f4\u7684\u50b3\u8f38\u5305\u62ec: {1}.
wsgen.class.not.found=\u627e\u4e0d\u5230\u985e\u5225: \"{0}\"
wsgen.could.not.create.file="\u7121\u6cd5\u5efa\u7acb\u6a94\u6848: "\\{0}\"
wsgen.missingFile=\u907a\u6f0f SEI
wsgen.soap12.without.extension=\u9078\u64c7\u6027\u5354\u5b9a \"Xsoap1.2\" \u5fc5\u9808\u642d\u914d \"-extension\" \u9078\u9805\u4e00\u8d77\u4f7f\u7528.
wsgen.protocol.without.extension=\u9078\u64c7\u6027\u5354\u5b9a \"{0}\" \u5fc5\u9808\u642d\u914d \"-extension\" \u9078\u9805\u4e00\u8d77\u4f7f\u7528.
wsgen.wsdl.arg.no.genwsdl=\"{0}\" \u9078\u9805\u53ea\u80fd\u642d\u914d "-wsdl" \u9078\u9805\u4e00\u8d77\u4f7f\u7528.
wsgen.servicename.missing.namespace=\u670d\u52d9\u540d\u7a31 \"{0}\" \u907a\u6f0f\u547d\u540d\u7a7a\u9593.
wsgen.servicename.missing.localname=\u670d\u52d9\u540d\u7a31 \"{0}\" \u907a\u6f0f\u672c\u6a5f\u540d\u7a31.
wsgen.portname.missing.namespace=\u9023\u63a5\u57e0\u540d\u7a31 \"{0}\" \u907a\u6f0f\u547d\u540d\u7a7a\u9593.
wsgen.portname.missing.localname=\u9023\u63a5\u57e0\u540d\u7a31 \"{0}\" \u907a\u6f0f\u672c\u6a5f\u540d\u7a31.
wsgen.class.must.be.implementation.class=\u985e\u5225 \"{0}\" \u4e0d\u662f\u4e00\u500b\u7aef\u9ede\u5be6\u884c\u985e\u5225.
wsimport.NotAFileNorURL = "{0}" \u4e0d\u662f\u6a94\u6848\u540d\u7a31\u6216 URL

wsgen.cannot.gen.wsdl.for.non.soap.binding=wsgen \u7121\u6cd5\u7522\u751f\u985e\u5225 {1} \u4e4b\u975e SOAP \u9023\u7d50 {0} \u7684 WSDL

wsgen.cannot.gen.wsdl.for.soap12.binding=wsgen \u7121\u6cd5\u7522\u751f\u985e\u5225 {1} \u4e4b SOAP 1.2 \u9023\u7d50 {0} \u7684 WSDL.\n
Please \u6307\u5b9a \"-extension\" \u548c \"-wsdl:protocol XSoap1.2\" \u53c3\u6578. \u4f8b\u5982:\n\n
wsgen -wsdl:protocol XSoap1.2 -extenson {1}
wsgen.inlineSchemas.only.with.wsdl=\"-inlineSchemas\" \u5fc5\u9808\u642d\u914d \"-wsdl\" \u9078\u9805\u4e00\u8d77\u4f7f\u7528

wsgen.no.webservices.class=wsgen \u627e\u4e0d\u5230\u4efb\u4f55\u542b @WebService \u8a3b\u89e3\u7684\u985e\u5225. \u8acb\u5728 {0} \u6307\u5b9a @WebService \u8a3b\u89e3.

wsimport.no.wsdl=\u7121\u6cd5\u8b80\u53d6 WSDL \u6587\u4ef6: {0}, \u56e0\u70ba 1) \u627e\u4e0d\u5230\u6587\u4ef6; /2) \u7121\u6cd5\u8b80\u53d6\u6587\u4ef6; 3) \u6587\u4ef6\u7684\u6839\u5143\u7d20\u4e0d\u662f <wsdl:definitions>.

wsimport.FailedToParse = \u7121\u6cd5\u5256\u6790 "{0}": {1}

wsimport.ParsingWSDL=\u6b63\u5728\u5256\u6790 WSDL...\n\n
wsimport.GeneratingCode=\n\u6b63\u5728\u7522\u751f\u7a0b\u5f0f\u78bc...\n
wsimport.CompilingCode=\n\u6b63\u5728\u7de8\u8b6f\u7a0b\u5f0f\u78bc...\n
wsimport.ILLEGAL_TARGET_VERSION = "{0}" \u4e0d\u662f\u6709\u6548\u7684\u76ee\u6a19\u7248\u672c. \u652f\u63f4 "2.0" \u548c "2.1".

wsimport.ILLEGAL_AUTH_INFO = "{0}" \u4e0d\u662f\u6709\u6548\u7684\u6388\u6b0a\u8cc7\u8a0a\u683c\u5f0f. \u683c\u5f0f\u70ba http[s]://user:password@host:port//<url-path>.

wsimport.readingAuthFile = \u6b63\u5728\u5617\u8a66\u8b80\u53d6\u6388\u6b0a\u6a94\u6848 : "{0}"...

# {0} - path to current authorization file, {1} - path to metro authorization file
wsimport.authFileNotFound = \u627e\u4e0d\u5230\u6388\u6b0a\u6a94\u6848 "{0}". \u5982\u679c WSDL \u5b58\u53d6\u9700\u8981\u300c\u57fa\u672c\u8a8d\u8b49\u300d, \u8acb\u5728 {1} \u63d0\u4f9b\u5177\u6709\u8b80\u53d6\u5b58\u53d6\u6b0a\u7684\u6388\u6b0a\u6a94\u6848, \u6216\u8005\u4f7f\u7528 -Xauthfile \u6307\u5b9a\u6388\u6b0a\u6a94\u6848, \u4e26\u4e14\u5728\u6bcf\u4e00\u884c\u63d0\u4f9b\u6388\u6b0a\u8cc7\u8a0a (\u4f7f\u7528\u4ee5\u4e0b\u683c\u5f0f) : http[s]://user:password@host:port//<url-path>

# {0} - exception message, {1} - systemId (e.g. location of WSDL file) , {2} - path to metro authentication file e.g.: Server returned HTTP response code: 401 for URL: http://localhost:8080/myServer/mywebService?WSDL, "http://localhost:8080/myServer/mywebService?WSDL" needs authorization, please provide authorization file with read access at C:\Documents and Settings\user\.metro\auth or use -Xauthfile to give the authorization file and on each line provide authorization information using this format : http[s]://user:password@host:port//
wsimport.authInfoNeeded = {0},  "{1}" \u9700\u8981\u6388\u6b0a, \u8acb\u5728 {2} \u63d0\u4f9b\u5177\u6709\u8b80\u53d6\u5b58\u53d6\u6b0a\u7684\u6388\u6b0a\u6a94\u6848, \u6216\u8005\u4f7f\u7528 -Xauthfile \u6307\u5b9a\u6388\u6b0a\u6a94\u6848, \u4e26\u4e14\u5728\u6bcf\u4e00\u884c\u63d0\u4f9b\u6388\u6b0a\u8cc7\u8a0a (\u4f7f\u7528\u4ee5\u4e0b\u683c\u5f0f) : http[s]://user:password@host:port//<url-path>

wsimport.AUTH_INFO_LINENO = "{1} \u7684\u7b2c {0} \u884c


wsimport.ErrorMessage = [ERROR] {0}

wsimport.WarningMessage = [WARNING] {0}

wsimport.InfoMessage = [INFO] {0}

wsimport.DebugMessage = [DEBUG] {0}

wsimport.httpRedirect = \u4f3a\u670d\u5668\u50b3\u56de HTTP \u72c0\u614b\u4ee3\u78bc: "{0}", \u4f7f\u7528 "{1}" \u91cd\u8a66

wsimport.maxRedirectAttempt = \u7121\u6cd5\u53d6\u5f97 WSDL, \u5df2\u9054\u91cd\u5c0e\u6b21\u6578\u4e0a\u9650 (5)

wsimport.wsdllocation.clientjar = \u4f7f\u7528 clientJar \u9078\u9805\u6642\u7121\u6cd5\u6307\u5b9a wsdlLocation
# {0} - path to a zip file
wsimport.archivingArtifacts=\n\u6b63\u5728\u5c07\u7522\u751f\u7684\u4f7f\u7528\u8005\u81ea\u5efa\u7269\u4ef6\u5b58\u6a94\u81f3 {0}.\n
wsimport.archiveArtifact=\u6b63\u5728\u5c07 {0} \u52a0\u5230\u5b58\u6a94 {1}
wsimport.fetchingMetadata=\n\u6b63\u5728\u4e0b\u8f09 WSDL \u548c\u95dc\u806f\u7684\u63cf\u8ff0\u8cc7\u6599\n
# {0} - URI, {1} - path to a file
wsimport.document.download=\n\u6b63\u5728\u5c07 {0} \u7684\u63cf\u8ff0\u8cc7\u6599\u6587\u4ef6\u4e0b\u8f09\u81f3 {1}

Other Java examples (source code examples)

Here is a short list of links related to this Java wscompile_zh_TW.properties source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.