# jUDDI Registry Properties (used by RegistryServer)
# see http://www.juddi.org for more information

# The UDDI Operator Name
juddi.operatorName = jUDDI.org

# The i18n locale default codes
juddi.i18n.languageCode = en
juddi.i18n.countryCode = US

# The UDDI DiscoveryURL Prefix
juddi.discoveryURL = http://localhost:8080/juddi/uddiget.jsp?

# The UDDI Operator Contact Email Address
juddi.operatorEmailAddress = admin@juddi.org

# The maximum name size and maximum number
# of name elements allows in several of the
# FindXxxx and SaveXxxx UDDI functions.
juddi.maxNameLength=255
juddi.maxNameElementsAllowed=5

# The maximum number of UDDI artifacts allowed
# per publisher. A value of '-1' indicates any 
# number of artifacts is valid (These values can be
# overridden at the individual publisher level).
juddi.maxBusinessesPerPublisher=25
juddi.maxServicesPerBusiness=20
juddi.maxBindingsPerService=10
juddi.maxTModelsPerPublisher=100

# jUDDI Authentication module to use
juddi.auth = org.apache.juddi.auth.DefaultAuthenticator

# jUDDI DataStore module currently to use
juddi.dataStore = org.apache.juddi.datastore.jdbc.JDBCDataStore
# use a dataSource (if set to false a direct 
# jdbc connection will be used.
juddi.isUseDataSource=false
juddi.jdbcDriver=org.apache.derby.jdbc.EmbeddedDriver
juddi.jdbcUrl=jdbc:derby:target/juddi-derby-test-db;create=true
juddi.jdbcUsername=
juddi.jdbcPassword=

#juddi.jdbcDriver=com.mysql.jdbc.Driver
#juddi.jdbcUrl=jdbc:mysql://localhost/juddi
#juddi.jdbcUsername=juddi
#juddi.jdbcPassword=juddi

# jUDDI DataSource to use
juddi.dataSource=java:comp/env/jdbc/juddiDB
# jUDDI database creation 
juddi.isCreateDatabase=true
juddi.databaseExistsSql=select * from BUSINESS_ENTITY
juddi.sqlFiles=juddi-sql/derby/create_database.sql,juddi-sql/insert_publishers.sql

# jUDDI UUIDGen implementation to use
juddi.uuidgen = org.apache.juddi.uuidgen.DefaultUUIDGen

# jUDDI Cryptor implementation to use
juddi.cryptor = org.apache.juddi.cryptor.DefaultCryptor
 
# jUDDI Validator to use
juddi.validator=org.apache.juddi.validator.DefaultValidator

# jUDDI Proxy Properties (used by RegistryProxy)
juddi.proxy.adminURL = http://localhost:8080/juddi/admin
juddi.proxy.inquiryURL = http://localhost:8080/juddi/inquiry
juddi.proxy.publishURL = http://localhost:8080/juddi/publish
juddi.proxy.transportClass = org.apache.juddi.proxy.AxisTransport
juddi.proxy.securityProvider = com.sun.net.ssl.internal.ssl.Provider
juddi.proxy.protocolHandler = com.sun.net.ssl.internal.www.protocol

# JNDI settings (used by RMITransport)
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=jnp://localhost:1099
java.naming.factory.url.pkgs=org.jboss.naming
  
