# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# JaxWsServiceCreator
TXT_WebServiceGeneration=Create web service
MSG_GEN_WS=Generating new web service...
MSG_GEN_SEI_AND_IMPL=Generating SEI and implementation bean classes...
MSG_EJB_NOT_ON_CLASSPATH=Please, copy the EJB interface class "{0}" to your project to make web service compilable.\n\nAlso, for the local interface, make sure that {1} class is in the same J2EE Application as EJB.
TXT_CannotGenerateArtifacts=Web Service can not be created by JAXWS:wsimport utility.\nReason: {0}\n\n\
There might be a problem during Java artifacts creation: for example a name conflict in generated classes.\n\
You may be able to fix the problem by manually editing the local wsdl or schema files,\n\
or by using the JAXB customization.\n\n\
After you fix the problem try to call the wizard again.

# JaxWsClientCreator
ERR_IncorrectURI=URI Syntax Error: {0}
ERR_UnknownHost=Unknown Host: {0}
ERR_WsdlRetrieverFailure=Problem with downloading wsdl or schema file.\nCheck the URL, proxy settings or whether the server is running.\n\nURL: {0}.
LBL_GenWsClass=Generate Web Service Java Class
LBL_GenDelegateMethods=Generate Web Service Methods

LBL_RetrieveWSDL=Download WSDL file
