#
# Copyright (c) 1997, 2017, 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.
#

# Wrapped into an Exception. {0} - localizable exception message of another exception
nestedModelerError=\uB7F0\uD0C0\uC784 \uBAA8\uB378\uB7EC \uC624\uB958: {0}

runtime.modeler.no.webservice.annotation=WebService \uC8FC\uC11D\uC774 \uD074\uB798\uC2A4\uC5D0 \uC5C6\uC74C: {0}
runtime.modeler.endpoint.interface.no.webservice=\uB05D\uC810 \uC778\uD130\uD398\uC774\uC2A4 {0}\uC5D0 WebService \uC8FC\uC11D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
# Wrapped into an Exception. Not concatenated with any other string.
runtime.modeler.class.not.found={0} \uD074\uB798\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
# APT - Annotation Processing Tool. Should not be translated.
runtime.modeler.wrapper.not.found=\uB798\uD37C \uD074\uB798\uC2A4 {0}\uC744(\uB97C) \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC8FC\uC11D \uCC98\uB9AC\uB97C \uC2E4\uD589\uD558\uC5EC \uC0DD\uC131\uD588\uC2B5\uB2C8\uAE4C?
# Wrapped into an Exception. Not concatenated with any other string.
runtime.modeler.method.not.found={0} \uBA54\uC18C\uB4DC\uB97C \uD074\uB798\uC2A4\uC5D0\uC11C \uCC3E\uC744 \uC218 \uC5C6\uC74C: {1}
runtime.modeler.webmethod.must.be.public=@WebMethod\uB294 non-public \uBA54\uC18C\uB4DC {0}\uC5D0\uC11C \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
runtime.modeler.webmethod.must.be.nonstatic=@WebMethod\uB294 static \uBA54\uC18C\uB4DC {0}\uC5D0\uC11C \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
runtime.modeler.webmethod.must.be.nonstaticfinal=@WebMethod\uB294 static \uB610\uB294 final \uBA54\uC18C\uB4DC {0}\uC5D0\uC11C \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
runtime.modeler.oneway.operation.no.out.parameters=\uB2E8\uBC29\uD5A5 \uC791\uC5C5\uC5D0\uB294 OUT \uB9E4\uAC1C\uBCC0\uC218\uAC00 \uC5C6\uC5B4\uC57C \uD569\uB2C8\uB2E4. \uD074\uB798\uC2A4: {0}, \uBA54\uC18C\uB4DC: {1}
runtime.modeler.oneway.operation.no.checked.exceptions=\uB2E8\uBC29\uD5A5 \uC791\uC5C5\uC774 \uD655\uC778\uB41C \uC608\uC678 \uC0AC\uD56D\uC744 throw\uD558\uC9C0 \uC54A\uC544\uC57C \uD569\uB2C8\uB2E4. \uD074\uB798\uC2A4: {0}, \uBA54\uC18C\uB4DC: {1}, throw: {2}
runtime.modeler.cannot.get.serviceName.from.interface=\uC778\uD130\uD398\uC774\uC2A4\uC5D0\uC11C serviceName\uC744 \uAC80\uC0C9\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uD074\uB798\uC2A4: {0}
runtime.modeler.portname.servicename.namespace.mismatch=serviceName \"{0}\"\uC758 \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC640 portName \"{1}\"\uC758 \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uAC00 \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4.
runtime.modeler.no.package=\uD328\uD0A4\uC9C0\uAC00 \uC5C6\uB294 \uD074\uB798\uC2A4\uC5D0 \uB300\uD574 @WebService.targetNamespace\uB97C \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4. \uD074\uB798\uC2A4: {0}
runtime.modeler.no.operations={0} \uD074\uB798\uC2A4\uAC00 \uC815\uC758\uD55C \uC6F9 \uC11C\uBE44\uC2A4\uC5D0 \uC801\uD569\uD55C WebMethods\uAC00 \uD3EC\uD568\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
runtime.modeler.mtom.conflict = @BindingType\uC5D0 \uC624\uB958 \uBC1C\uC0DD: \uBC14\uC778\uB529 \uC2DD\uBCC4\uC790 {0}\uC758 MTOM \uAD6C\uC131\uC774 @MTOM {1} \uAE30\uB2A5\uACFC \uCDA9\uB3CC\uD569\uB2C8\uB2E4.
# {0} - feature class name, {1} - feature class name
runtime.modeler.feature.conflict= \uAD6C\uD604\uC758 {0} \uAE30\uB2A5\uC774 WSDL \uAD6C\uC131\uC758 {1}\uACFC(\uC640) \uCDA9\uB3CC\uD569\uB2C8\uB2E4.
# {0} - absolute class location
runtime.modeler.addressing.responses.nosuchmethod = JAX-WS 2.1 API\uAC00 {0}\uC5D0\uC11C \uB85C\uB4DC\uB418\uC5C8\uC9C0\uB9CC JAX-WS \uB7F0\uD0C0\uC784\uC5D0 JAX-WS 2.2 \uC774\uC0C1 API\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4. \uD45C\uC900 \uBB34\uD6A8\uD654 \uBC29\uC2DD\uC744 \uC0AC\uC6A9\uD558\uC5EC JAX-WS 2.2 \uC774\uC0C1 API\uB97C \uB85C\uB4DC\uD558\uC2ED\uC2DC\uC624.
runtime.modeler.wsfeature.no.ftrconstructor={0} \uC8FC\uC11D\uC744 \uC778\uC2DD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uD558\uB098 \uC774\uC0C1\uC758 {1} \uC0DD\uC131\uC790\uAC00 @FeatureConstructor\uB85C \uD45C\uC2DC\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
runtime.modeler.wsfeature.morethanone.ftrconstructor={0} \uC8FC\uC11D\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uD558\uB098\uC758 {1} \uC0DD\uC131\uC790\uB9CC @FeatureConstructor\uB85C \uD45C\uC2DC\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
runtime.modeler.wsfeature.illegal.ftrconstructor={0} \uC8FC\uC11D\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4. {1}\uC5D0\uC11C @FeatureConstructor \uAC12\uC774 \uC0DD\uC131\uC790 \uB9E4\uAC1C\uBCC0\uC218\uC640 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
# WRAPPED is a member of enumeration and should not be translated. {0} - SoapBinding annotation, {1} - class name
runtime.modeler.invalid.soapbinding.parameterstyle= {1}\uC5D0 {0} \uC8FC\uC11D\uC774 \uC798\uBABB \uC0AC\uC6A9\uB418\uC5C8\uC2B5\uB2C8\uB2E4. ParameterStyle\uC740 RPC \uC2A4\uD0C0\uC77C \uC6F9 \uC11C\uBE44\uC2A4\uB85C\uB9CC WRAPPED\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
runtime.modeler.soapbinding.conflict= {1} \uBA54\uC18C\uB4DC\uC5D0 \uB300\uD55C SOAPBinding \uC2A4\uD0C0\uC77C {0}\uC774(\uAC00) \uC804\uC5ED SOAPBinding \uC2A4\uD0C0\uC77C {2}\uACFC(\uC640) \uCDA9\uB3CC\uD569\uB2C8\uB2E4.
runtimemodeler.invalid.soapbindingOnMethod={2} \uD074\uB798\uC2A4\uC758 {1} \uBA54\uC18C\uB4DC\uC5D0 \uBD80\uC801\uD569\uD55C \uC8FC\uC11D {0}\uC774(\uAC00) \uC788\uC2B5\uB2C8\uB2E4. \uBA54\uC18C\uB4DC\uB294 \"RPC\" \uC2A4\uD0C0\uC77C\uC758 @SOAPBinding\uC73C\uB85C \uC8FC\uC11D \uCC98\uB9AC\uB420 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
unable.to.create.JAXBContext=JAXBContext\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
# BARE is a member of enumeration and should not be translated.
not.a.valid.bare.method=SEI {0}\uC758 {1} \uBA54\uC18C\uB4DC\uAC00 BARE\uB85C \uC8FC\uC11D \uCC98\uB9AC\uB418\uC5C8\uC9C0\uB9CC \uB450 \uAC1C \uC774\uC0C1\uC758 \uB9E4\uAC1C\uBCC0\uC218\uAC00 \uBCF8\uBB38\uC5D0 \uBC14\uC778\uB4DC\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4. \uC774\uB294 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. \uBA54\uC18C\uB4DC\uB97C @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.WRAPPED \uC8FC\uC11D\uC73C\uB85C \uC8FC\uC11D \uCC98\uB9AC\uD558\uC2ED\uC2DC\uC624.
