###############################################################################
# Copyright (c) 2001, 2004 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
# 
# Contributors:
# IBM Corporation - initial API and implementation
###############################################################################
#This properties file hold all the externalised strings for eTools J2EE Validation project
# Validation project
#
# Messages should be according to the format at:
#     http://hany.austin.ibm.com/messages/index.html
#
# Briefly:
#     MESSAGE_ID=<ComponentPrefix><MessageNumber><TypeCode>: <MessageText>
#
# The prefix for this component is:
#     CHKJ (IBM WebSphere Validation)
#
# Note the ": " that appears between the type code and the message text.
#
# :Begin: WebSphere Quality Validation Information :Begin:
#COMPONENTPREFIX CHKJ
#COMPONENTNAMEFOR CHKJ IBM WebSphere Validation
#CMVCPATHNAME ncf/src/java/com/ibm/websphere/validation/erefvalidation.properties
# :End: WebSphere Quality Validation Information :End:
#
# 14-October-2001:
#

# --------------------------------
ERROR_EAR_MISSING_EREFNAME=CHKJ3009E: {1} \ubaa8\ub4c8\uc5d0\uc11c ejb-ref: {0}\uc5d0 \uc788\ub294 ''ejb-ref-name'' \uc694\uc18c\uac00 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_INVALID_EREFTYPE=CHKJ3010E: {1} \ubaa8\ub4c8\uc5d0\uc11c ejb-ref: {0}\uc5d0 \uc788\ub294 ''ejb-ref-type'' \uc694\uc18c\uac00 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
#EXPLANATION None.
#USERACTION None.

ERROR_EAR_MISSING_EREFTYPE=CHKJ3014E: {1} \ubaa8\ub4c8\uc5d0\uc11c ''ejb-ref-type'' \uc694\uc18c\uac00 ejb-ref: {0}\uc5d0\uc11c \ub204\ub77d\ub418\uc5c8\uc2b5\ub2c8\ub2e4.


# --------------------------------
ERROR_EAR_MISSING_EREFHOME=CHKJ3011E: {1} \ubaa8\ub4c8\uc5d0\uc11c \ud648 \uc778\ud130\ud398\uc774\uc2a4\uac00 ejb-ref: {0} \uc694\uc18c\uc5d0\uc11c \ub204\ub77d\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_MISSING_EREFREMOTE=CHKJ3012E: {1} \ubaa8\ub4c8\uc5d0\uc11c \uc6d0\uaca9 \uc778\ud130\ud398\uc774\uc2a4\uac00 ejb-ref: {0} \uc694\uc18c\uc5d0\uc11c \ub204\ub77d\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_MISSING_EJB_ROLE=CHKJ2827W: ''security-role-ref'' \uc694\uc18c({0})\uac00 ''role-link'' \uc694\uc18c\ub97c \uc815\uc758\ud558\uc9c0\ub9cc \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc124\uba85\uc790\uc5d0 ''security-role'' \uc694\uc18c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_DUPLICATE_RESREF=CHKJ3013E: ''resource-ref'' \uc694\uc18c \uc774\ub984({0})\uc774 \uc911\ubcf5\ub429\ub2c8\ub2e4.
#EXPLANATION None.
#USERACTION None.

# new string added for version 5 WSAD
UNRESOLVED_EJB_REF_WARN_=IWAE0034W EJB \ub9c1\ud06c \uc694\uc18c {0}\uc774(\uac00) {1} \ubaa8\ub4c8\uacfc EAR {2}\uc5d0\uc11c \ubd84\ub9ac\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.

ERROR_EAR_DUPLICATE_SERVICEREF=CHKJ3015E: ''service-ref'' \uc694\uc18c \uc774\ub984({0})\uc774 \uc911\ubcf5\ub429\ub2c8\ub2e4.
ERROR_EAR_DUPLICATE_SECURITYROLEREF=CHKJ3016E: ''security role-ref'' \uc694\uc18c \uc774\ub984({0})\uc774 \uc911\ubcf5\ub429\ub2c8\ub2e4.
ERROR_EAR_DUPLICATE_EJBREF=CHKJ3017E: ''ejb-ref'' \uc694\uc18c \uc774\ub984({0})\uc774 \uc911\ubcf5\ub429\ub2c8\ub2e4.
ERROR_EAR_DUPLICATE_RESENVREF=CHKJ3018E: ''resource environment-ref'' \uc694\uc18c \uc774\ub984({0})\uc774 \uc911\ubcf5\ub429\ub2c8\ub2e4.
ERROR_EAR_DUPLICATE_MESSSAGEDESTINATIONREF=CHKJ3019E: ''message destination-ref'' \uc694\uc18c \uc774\ub984({0})\uc774 \uc911\ubcf5\ub429\ub2c8\ub2e4.




