Setup a Fusion Middleware environment for testing and development purposes in less than 60 minutes!
Dynamic markets and the constant reaction to changing conditions is a decisive success factor for companies today. All measures taken in the past years in the field of software development were aimed at supporting and facilitating this dynamics technically. Development times had to be drastically reduced and results made available for review earlier than before. IT has achieved a different status in the company today. IT can be used to tap new growth areas and strengthen existing customer relationships. For this reason, it is important to address the question of how quickly a developer can work productively in a new project. In this blog post, tools and procedures are presented to enable a developer to be productive in the project in less than a day. In detail, this means, for example, editing a user story from the backlog.
Experience shows that setting up the development environment in many projects involves many manual steps. Missing or inadequate documentation slows down this process considerably. Sometimes it takes several days to set up. Through the approach presented here, the developer is able to be supplied within a few hours with a development environment. Due to the high level of automation, there is no need for comprehensive documentation. Errors are largely avoided in this way. The figure below shows typical components that belong to a development environment. In this blog post, I focus on using tools in projects using Oracle technologies (SOA / Integration, ADF, Java EE). However in general these guidelines can be applied to Open Source as well.
Afterwards I will explain which tools are needed and how to use it in a way to speed up development.
It makes sense to consider the description and configuration of a development environment as a source code and thus store it in a source code management. Artifact versioning and centralized source code management are the key benefits of this approach. Although any system can be used for this purpose, git offers many advantages in use through a decentralized approach. To build the development environment, the git repository must first be copied with the following command:
git clone https://github.com/markuslohn/vagrant-oracle-soa12213-dev.git
The root folder contains the documentation and main provisioning scripts. The subfolder /provision stores all scripts and configuration files for setting up the development environment. The management of installation files, eg. JDeveloper, however, must be done in other ways. It is not recommended to save them in git when the size exceeds several 100 MB. One possibility is to load the installation files via scripts (wget) from the Internet as needed. The other option is to manually copy the files to a local folder. Furthermore, the automatic download of JDeveloper files via OTN or eDelivery does not work reliably due to the security settings (tokens).
After a successful checkout of the git repository download the Oracle SOA Quickstart 22.214.171.124 files from OTN, extract and copy the files to ./provision/OracleSOA-126.96.36.199.
The development environment is based on a virtual machine (VM). The VM runs on Oracle Virtual Box and is managed by Vagrant. For this reason, Oracle Virtual Box and Vagrant must be preinstalled. Vagrant is a tool to configure virtual machines and manage. In a configuration file (Vagrantfile) the properties of the VM are defined, eg. name, network settings, memory, etc. The file also contains information about the type of provisioning. There are several ways to perform a provisioning, eg. with Ansible or with shell scripts. A VM can be deleted at any time with Vagrant and recreated. There is a repository for boxes on the internet. Boxes are ready-made VM configurations that can be used to create new images. In this example I used the Shell Provisioner. However the same can be easily achieved also with Ansible or other provisioners supported by Vagrant.
Open a shell in the root folder of the git repository and use the following command to start the VM:
When this command runs the first time the VM is created and configured. It means the provisioning scripts will be executed. Use the following command to stop the VM again:
The management of VMs is greatly simplified by Vagrant. For example, shared folders, port forwarding, etc. are set up automatically. Manual configuration of these properties for a VM is eliminated. Furthermore, the entire configuration is saved in a text file and stored in the source code management. Each developer has the same starting point. Developer-specific configurations can be configured and tested in separate branches.
Oracle JDeveloper 12c (SOA Quickstart)
In this example I used Oracle SOA Quickstart 188.8.131.52. This option allows us to use JDeveloper 12c IDE and build a WebLogic domain with SOA Suite, OSB, ADF, etc. The installation files must first be downloaded and copied to the folder ./provision/OracleSOA-184.108.40.206. This step can’t be automated due to the security setting in the OTN or eDelivery (token is generated and is only valid for a certain period of time). The required folders and rights must be created and configured in the image before running the installation program. In order to use the option „silent“ during the installation of the JDeveloper, a so-called response file is also required. With the JDeveloper and SOA plugin, a complete runtime environment with database and WebLogic server can be set up. In this example a soadev_domain consisting of Admin-Server + Servicebus + SOA Suite will be installed against a JavaDB (Apache Derby). This variant is very well suited for development and also allows debugging directly in JDeveloper. The soadev_domain can be automatically created with a WLST script. This process usually takes only a few minutes. Depending on the application, it may be necessary to use an Oracle database in development. In such a case, an Oracle XE database can be used. The installation and configuration of an XE database can also be automated with the presented tools. Integration via a Docker image would also be possible.
With the JDeveloper 12c and SOA plugin, a complete development environment for Oracle can be created in minutes. Thus, Oracle now also offers a lightweight approach to development.
In addition to the basic installation with development and runtime environment, each project also has specific configurations and applications that are required for development:
• Database schemas and tables
• Data sources
• Messaging (queues)
• JCA adapter
• External libraries
Provisioning allows all of these configurations to be automated and repeated at any time. In the area of the database, additional tools, such as Flyway, can be used. Configuration settings on WebLogic Server can be automated via WLST scripts. Thus, it is very easy to put the local development environment in an initial state at any time. An important criterion in particular for test automation. For the provisioning different technologies and frameworks can be used. In any case, Shell scripts, Ansible, Puppet and Docker are supported. Other alternatives can be found on the Vagrant homepage. In this talk, only the possibilities with shell scripts were shown.
At the beginning, of course, an increased effort in the creation of the scripts for automation can be expected. On the Internet, there are many good examples for the respective techniques, which can be used and thus reduce the effort. In the future, this investment will more than pay off, as developers can start much faster in a project and the starting point for all developers is always the same. Thus, the development can be faster and more coordinated. Also, the test process is considerably simplified and thus promotes the overall quality. Especially when using Ansible, the provisioning can be organized in modules, whereby new image variants can be put together very easily and quickly. Oracle has steadily improved its tools over the past few years, making integration with current automation tools much easier.
- The github project used to show the general procedure in this blog post: https://github.com/markuslohn/vagrant-oracle-soa12213-dev
Obtain and install the following patches from Oracle Support regardings the release Fusion Middleware Release 220.127.116.11:
27235959: OSB 18.104.22.168 Failure in binding-layer while processing outbound response
26851310: OSB – „Failed to generate business service“ when using DB Adapter Wizard