#
# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v. 2.0 which is available at
# http://www.eclipse.org/legal/epl-2.0,
# or the Eclipse Distribution License v. 1.0 which is available at
# http://www.eclipse.org/org/documents/edl-v10.php.
#
# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
#


# OC4J Server Testing Environment Properties.

# Standard server properties.
server.user=oc4jadmin
server.pwd=welcome1
server.url=ormi://localhost:23791/
server.testrunner=java:comp/env/ejb/TestRunner
server.lib=../../../oc4j/j2ee/home
server.depend=oc4jclient.jar,oc4j.jar
server.platform=OC4J
server.platform.class=oc4j-1013-platform
server.factory=com.evermind.server.ApplicationClientInitialContextFactory

# OC4J specific properties.
oc4j.home=../../../oc4j
oc4j.rmiport=23791
oc4j.jmsport=9127
oc4j.httpport=8888
oc4j.iiopport=5555
oc4j.sslport=23943
oc4j.httphost=localhost

oc4j.extended.zip=../../../extension.oracle.lib.external/oc4j_extended.zip
system-jazn-data.xml=./resource/oc4j/system-jazn-data.xml

junit.lib=../../../extension.lib.external/junit.jar
xmltask.lib=../../../extension.lib.external/xmltask.jar
eclipselink.jar=eclipselink.jar
