#
# 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=Runtime Modeler-Fehler: {0}

runtime.modeler.no.webservice.annotation=Eine WebService-Annotation ist in Klasse nicht vorhanden: {0}
runtime.modeler.endpoint.interface.no.webservice=Die End Point-Schnittstelle: {0} hat keine WebService-Annotation
# Wrapped into an Exception. Not concatenated with any other string.
runtime.modeler.class.not.found=Klasse: {0} konnte nicht gefunden werden
# APT - Annotation Processing Tool. Should not be translated.
runtime.modeler.wrapper.not.found=Wrapper-Klasse {0} wurde nicht gefunden. Haben Sie eine Annotationsverarbeitung ausgef\u00FChrt, um sie zu generieren?
# Wrapped into an Exception. Not concatenated with any other string.
runtime.modeler.method.not.found=Methode: {0} konnte in Klasse nicht gefunden werden: {1}
runtime.modeler.webmethod.must.be.public=@WebMethod ist bei einer nicht \u00F6ffentlichen Methode {0} nicht zul\u00E4ssig
runtime.modeler.webmethod.must.be.nonstatic=@WebMethod ist bei einer statischen Methode {0} nicht zul\u00E4ssig
runtime.modeler.webmethod.must.be.nonstaticfinal=@WebMethod ist bei einer statischen oder finalen Methode {0} nicht zul\u00E4ssig
runtime.modeler.oneway.operation.no.out.parameters=Unidirektionaler Vorgang darf keine OUT-Parameterklasse enthalten: {0} Methode: {1}
runtime.modeler.oneway.operation.no.checked.exceptions=Unidirektionaler Vorgang darf keine gepr\u00FCfte Ausnahmeklasse ausl\u00F6sen: {0}-Methode: {1} l\u00F6st {2} aus
runtime.modeler.cannot.get.serviceName.from.interface=Der serviceName darf nicht aus einer Schnittstelle abgerufen werden. Klasse {0}
runtime.modeler.portname.servicename.namespace.mismatch=Der Namespace von serviceName \\"{0}\\" und der Namespace von portName \\"{1}\\" m\u00FCssen \u00FCbereinstimmen
runtime.modeler.no.package=Ein @WebService.targetNamespace muss f\u00FCr Klassen ohne Package angegeben werden. Klasse: {0}
runtime.modeler.no.operations=Der Webservice, der von der Klasse {0} definiert wird, enth\u00E4lt keine g\u00FCltigen WebMethods.
runtime.modeler.mtom.conflict = Fehler bei @BindingType: MTOM-Konfiguration in Binding-ID {0} ist nicht mit Feature @MTOM {1} vereinbar
# {0} - feature class name, {1} - feature class name
runtime.modeler.feature.conflict= Feature {0} in Implementierung ist nicht mit {1} in WSDL-Konfiguration vereinbar
# {0} - absolute class location
runtime.modeler.addressing.responses.nosuchmethod = JAX-WS 2.1-API wird aus {0} geladen, die JAX-WS-Laufzeit erfordert jedoch JAX-WS 2.2 oder eine neuere API. Verwenden Sie das Standard-Override-Verfahren, um JAX-WS 2.2 oder eine neuere API zu laden.
runtime.modeler.wsfeature.no.ftrconstructor=Annotation {0} kann nicht erkannt werden, mindestens ein Konstruktor von {1} muss mit @FeatureConstructor markiert werden
runtime.modeler.wsfeature.morethanone.ftrconstructor=Annotation {0} ist unzul\u00E4ssig. Nur ein Konstruktor von {1} kann als @FeatureConstructor markiert werden
runtime.modeler.wsfeature.illegal.ftrconstructor=Annotation {0} ist unzul\u00E4ssig. In {1} stimmt der @FeatureConstructor-Wert nicht mit den Konstruktorparametern \u00FCberein
# WRAPPED is a member of enumeration and should not be translated. {0} - SoapBinding annotation, {1} - class name
runtime.modeler.invalid.soapbinding.parameterstyle= Ung\u00FCltige Verwendung von Annotation {0} in {1}, ParameterStyle kann nur WRAPPED bei RPC-Webservice sein.
runtime.modeler.soapbinding.conflict= SOAPBinding-Stil {0} f\u00FCr Methode {1} ist nicht mit globalem SOAPBinding-Stil {2} vereinbar
runtimemodeler.invalid.soapbindingOnMethod=Ung\u00FCltige Annotation: {0} in Methode {1} in Klasse {2}. Eine Methode kann nicht mit @SOAPBinding-Annotation mit \\"RPC\\"-Stil versehen werden
unable.to.create.JAXBContext=JAXBContext kann nicht erstellt werden
# BARE is a member of enumeration and should not be translated.
not.a.valid.bare.method=SEI {0} enth\u00E4lt Methode {1} mit Annotation BARE, enth\u00E4lt jedoch mehr als einen Parameter, der an den Nachrichtentext gebunden ist. Dies ist ung\u00FCltig. Versehen Sie die Methode mit folgender Annotation: @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
