Posts Tagged ADF Architecture

#Javaland 2017 wrap up

Yes – I did it again and attend Javaland conference in Phantasialand Brühl.

It was not easy this year to concentrate on the sessions because of the hottest march of the last 100 years. But the quality of the sessions beats the weather. Maybe again my invest in reading the abstracts and filter the sessions before the conference has payed off.

Day 1 Conference

Jens Schauderdocumentation & slides with AsciiDoc, Git, Gradle and Reveal.js

Jens shows in this early morning session how we can version and so diffing and merging our documentation and presentations via text based markup languages. Now I have to puzzle the pieces together for generating my future documents from code. One question remains – what if we have to share the work on the documentation work with non programmers?

Jean-Jacques van Oosten, Chief Digital Officer Rewe Group: The role of the CDO as Chief Product Owner

This presentation shows REWE as on the right way for digitalization. But somehow I did not get rid of the feeling, that this was more a recruiting campaign to get the right people for the job. Have to speak with some of my friends, which are working there in the field. Interesting is the goal to develop all IT itself and do not buy from competitors perhaps. This needs lot of money and resources.

Steffen SchluffSebastian Damm, OIO – Orientation in Objects GmbHMust Feature Branches and Continuous Integration contradict each other?

I know most of the facts already but here these was ordered and coherent derived from literature and practices. Conclusion – with the right tools you can live with the compromise.

Gorge Albrecht, Code Mentor: Readable tests with AssertJ

Unfortunately I come a little bit late, because there is not planned really a big break for lunch. It seems here I have missed the point before: I had hope that the test output is more readable for the tester, not for the programmer. The only disappointing session for me.

Sven Ruppert: Hacking with Mutation Testing

After I have heard Sven’s session for PIT framework last year on Javaland I found not the time till today to work with this. Unfortunately I bring my company laptop which does not allow to download files from maven over the VPN as the company man in the middle webwasher replaces the original certificates. Sven does his best to support me, but I could not solve this in this time. In the evening on my way to home a nameless attendee give me an hint to disable the ssl check in maven locally. So I could test Sven’s solution branch right before midnight successfully!

Carola Lilienthal, WPS – Workplace Solutions GmbH: From Pair Programming to Mob Architecting

A little bit late, I enter this fully packed room. This was announced before via “chili” in the conference planner, so no excuse for me. But as I could not make notes standing on the door in the last row, I think I have here to reread the presentation to give a concrete summary here.

Stefan Schlott, BeOne Stuttgart GmbH: Security in the development team

The presenter gives some hints for small development teams to make it fit for security. Unfortunately most of this are not happened in big companies too. Additional most developers are not interested in this too. In this session first I heard the term required Caretaker on this conference, which should repeated in several sessions.

Mario Mann, Novatec Consulting GmbH: Application Performance Management with Open-Source-Tooling

As session name promises: He show different tools for different purposes of APM including it’s own. Key message: No one tool for all purposes. Interesting some example test of the Javaland homepage.

Martin Thompson, Real Logic: Keynote: Listening to the Design Pressures

The second keynote starts with statement that “non functional requirements” should be changed to “quality attributes”. Further he states that in most cases all new hypes are covers of earlier research. So he recommend to first search for the original ideas. He mapped an example from 1983 and mapped several statements in the content to actual hypes. We have to bring back simplicity and other core techniques, as hardware will not grow anymore as in the past and will not solve our growing requirements. Doing it working and fast together in one step will give other design decisions as doing it separately.

Meet-the-Lib

While most other people try the rides of Phantasialand, I attend this format. Same motto as last year: show me your favorite opensource lib and I show your mine. Not all was interessant for me, but some of this I would never heard, when not here.

  • Lombok: Boilerplate generator, unfortunately not really usable in JDeveloper
  • SPI – Service Provider Interface: interesting, but see no use case at the moment
  • jQAssistant: QA for your code, very interesting open analysis tool, have to read the corresponding missed presentation
  • Form Checker: generic validation and creation of HTML forms for portals, no use case in our framework development
  • Future of Spring: concurrent JEE framework to ADF
  • Jax-RS Hypermedia: maybe later when REST required in our development

After dinner and some drinks I return to cologne.

Day 2 Conference

Elmar Juergens, TU München und CQSE GmbH: How sensible we use our quality analysis?

“From weighing alone the pig will not be fat”. Many analyse it’s code but do little against the results. He shows very entertaining the combination of research and practical steps to wake the interest to change the code. Again you need a Caretaker here. But remember “Management by numbers is not by professionals but by amateurs.

Rustam Mehmandarov, Computas AS: Field Notes of a Command Line Ninja

Lot’s of linux command line tricks, have to attach my notes to every bash call from now. Very entertaining.

Thorsten Maier, Orientation in Objects GmbH: Resilient Software Design Patterns

Good overview, key message: Use it only if you really need it, as it adds new layers to your software stack.

Falk Sippach, Orientation in Objects GmbH: Continous Architecture Documentation

This presentation was a good complement to Jens Schauder from Day 1. Falk shows the “documentation smells” as reasons to use here again markdown based documentation to generate to different target formats and audience. Additional he show some tips and tricks for the used tools.

Stephan Classen, Canoo Engineering AG: Robust, readable Web UI Tests with page object pattern, Geb and Spock

Good presenter, but I’m not really convinced from this wrapper tools (Selenium -> Geb -> Spock) in different technology stacks. Maybe sometime I will try it to be sure?

Frank Pientka, MATERNA GmbH Information & Communications: Load and Performance tests with ‎JMeter or Gatling

The speaker gives a very wide overview of both tools, I have definitely to reread this. Especial interesting is the feature of both tools (and the wrapper Taurus) to reuse selenium tests for load tests. Have to check this out!

Martin Reinhardt, Holisticon AG: Responsive Testing with the Galen Framework 

Presenter shows this interesting framework, but it same a little bit complicated to me. At the moment not usable for me, as it have no IDE Support for JDeveloper.

Thomas Darimont, eurodata AG

I had see some of this in last year “Meet the libs” format. As I had some plans for private application development, this seems the ultimately completest and free AIM solution for me. The speaker had deep understanding of the product and he packed this last presentation full with his knowledge. If you need somebody to set up your system, you should hire him!

Day 3 – Workshops

Gerd AschemannContinuous Delivery of Continuous Delivery

The trainer here has too a deep knowledge of the area and put all of this into this workshop.

We started with the creation of a VirtualBox via Vagrant. The we added script provisioner to install puppet into the box. With another script provisioner we start the installation and configuration of Jenkins via puppet scripts and modules. After that we installed Docker in the VirtualBox via another puppet script. On top of this we automatically create jenkins jobs to start a Docker container containing Maven and building there a simple Java Application. As last step we add an Nexus container to deploy the resulting artefacts.

The trainer provides us with some theory, but most time was practical work. Additional to the described steps we add some configurations for testing the created infrastructure and minimize the creation time of the infrastructure via caching.

The whole time we push our local git repositories to an central instance of the trainer where our environment are build (or not) via a central Jenkins instance.

The extensive workshop scenario, the different operating systems and bugs in the newest version of vagrant make it more difficult to reproduce all steps just in time. But we get all sources and slides to reproduce the scenario later at home.

Despite I have already started an similar scenario at home before, I get a lot of fresh input for my future work here. This workshop was every minute worth.

Conclusion

Same as last year: This was inspiring conference, which gives me a lot of fresh ideas and reminders for some spilled goals for my private and company projects. I think we’ll see us next year!

Improvements for next year

There are some for next year in Phantasialand:

  1. Please deliver stable and fast internet at least for the speakers and the workshops.
  2. Put the labs and commuity workshops out from the exhibition hall to filter the noise from soundchecks and nighthacking.
  3. If you see via the favorites of dukecon, that rooms are full, maybe you can change locations.
  4. For workshops provide big enough tables for comfortable working.

That’s it.

Advertisements

, , , , , , , , , , , , ,

Leave a comment

“Bob the Builder: Build/Deploy of #ADF enterprise applications” – I’m a speaker at #DOAG2015:

csm_2015-Konferenz-Ausstellung-Logo_02_373181671d

Today my presentation is confirmed:  “Bob the Builder: Build/Deploy of ADF enterprise applications”.

I will speak over our experiences with following

  • build tools
  • deployment tools
  • architecture
  • versioning & branching
  • continuous integration
  • hot deployment in development
  • compile & runtime dependencies

If you speak german and you are interested in some of this, you should come and attend DOAG 2015.

, , , , , , , , , ,

Leave a comment

ADF Archtitecture Practice – JDeveloper Silent Install of Extensions

This article describes how to standardize your JDeveloper Installation as requested in Planning & Getting Started – Team, Skills and Development Environments. It is part of the ADF Architecture Practice lessons and describes the installation with examples for windows.


Version 12.1.x

There is a tool ojwebupdate to handle this. It is fully supported but it’s not documented at the moment, documentation is planned for 12.1.4. But you can get a lot of info, if you call:

ojwebupdate /?

The easiest thing is to download your reqired extension from the update centers. The update centers can be updated too, so the best thing is to call “Check for updates” in a manual installation and then look in your JDveloper system directory for a file updatecenters.xml.

Eg. if you want to install the extension “JUnit Integration” for version 12.1.3 in Windows 7 you have to go to the url, which is listed under “Official Oracle Extensions and Updates” by default in file

C:\Users\[Your User]\AppData\Roaming\JDeveloper\system12.1.3.0.41.140521.1008\o.ide\updatecenters.xml

At the moment this is http://www.oracle.com/webfolder/technetwork/jdeveloper/downloads/1213center.xml. Open this link, follow the link to “JUnit Integration” and download the required version. The right version can be determined by checking the requirement against your JDeveloper version or other extensions, you can find this information in the Help – About dialog. Or easier – you look at version, which version the manual installation would be installed and download this.

Then you can call installation with following batch file:

set oracle_home=C:\Oracle\JDev121300
%oracle_home%\jdeveloper\jdev\bin\ojwebupdate -zips=[Path]\junit.zip

Extensions can be depending on another extension, you see this in the requirements section of theurl or when you try to install a single extension in a fresh manual installation. In this case you have to install the extensions in the right order.


 

Version 11.1.1.x
The downloading of the file is similar to above, for version 11.1.1.7 you should download “JUnit Integration” extension at the moment from http://www.oracle.com/ocom/groups/public/@otn/documents/webcontent/131167.xml.

You can simply unzip the extensions into your installation. The target depends from the extension itself. Therefore open the zip file and look into the META-INF\bundle.xml file. If there is a tag , then this is the target. If this tag does not exist, the default target is %oracle_home%\jdeveloper\jdev\extensions.

The following batch will install “JUnit Integration” and “JUnit Integration for JDBC” extensions in the right order (as the second requires the first) in JDeveloper 11.1.1.7.:

set oracle_home=C:\Oracle\JDev111170
unzip -o -q junit_bundle -d %oracle_home%\jdeveloper
unzip -o -q junit-j2ee_bundle.zip -d %oracle_home%\jdeveloper\jdev\extensions
rem housekeeping
rmdir /S /Q %oracle_home%\jdeveloper\META-INF
rmdir /S /Q %oracle_home%\jdeveloper\jdev\extensions\META-INF

That’s it!

, , , , , ,

Leave a comment

ADF Archtitecture Practice – JDeveloper Silent Patch

This article describes how to standardize your JDeveloper Patching as requested in Planning & Getting Started – Team, Skills and Development Environments. It is part of the ADF Architecture Practice lessons and describes the patching with examples for windows.


Version 12.1.x

In this version  the Oracle OPatch is delivered with the silent installation of JDeveloper.

All what you need is the patch file for your platform (e.g. p19591087_121300_Generic.zip for JDEVADF SECURITY PATCH UPDATE 12.1.3.0.0 CPUOCT2014). Unzip this patch file.

Then you call batch file similar to:

set oracle_home=C:\Oracle\JDev121300
pushd [path]\19591087
%oracle_home%\OPatch\opatch apply -silent

Revert the patch is similar, the response should look like

set oracle_home=C:\Oracle\JDev121300
pushd [path]\19591087
%oracle_home%\OPatch\opatch rollback -id 19591087 -silent

In Line 3 you have to enter the patch number, which has to be reverted after -id.


Version 11.1.1.x
In some of this versions Oracle OPatch is not delivered with the silent installation of JDeveloper. Please check if %oracle_home%\oracle_common\OPatch does exist. If not – you can download the latest version of OPatch here. Please select your Platform and Release 11.1.0.0.0  as this correspond to your JDeveloper version. Unzip the downloaded file.

In some versions (at least till 11.1.1.1.5) you need for the first patch a default product.xml file in the right place, as this cannot be created silently. Change the highlighted lines according to your environment:

<?xml version="1.0" encoding="WINDOWS-1252"?>
<product>
	<name value="SA_JDEV"/>
	<version value="11.1.1.5.0"/>
</product>

For older versions of opatch maybe you have to add a response file for opatch, which you can create as described here.

Then you need the patch file for your platform (e.g. p19591065_111170_Generic.zip for JDEVADF SECURITY PATCH UPDATE 11.1.1.7.0 CPUOCT2014). Unzip this patch file.

Then you call batch file similar to:

set oracle_home=C:\Oracle\JDev111170
set java_home=%oracle_home%\jdk160_24
rem opatch_home=[your unzipped OPatch home]
set opatch_home=%oracle_home%\oracle_common\OPatch
rem workaround for BUG 9613778: OPATCH-STAND-ALONE: ERROR "OUI-67124:INVENTORY CHECK FAILED" ON GERMAN WINDOWS
rem set _JAVA_OPTIONS="-Duser.language=en"
rem workaround for silent creation of product.xml till at least version 11.1.1.5
rem if not exist %oracle_home%\product.xml copy product.xml %oracle_home%\product.xml /V /Y
rem if not exist %mw_home%\jdeveloper\product.xml copy product.xml %mw_home%\jdeveloper\product.xml /V /Y
pushd [path]\19591087
rem use switch -ocmrf, if you have an older opatch version, which  requires a response file 
rem use switch -jdk, if you have the downloaded opatch version
rem cmd /c %opatch_home%\opatch apply -silent -ocmrf ocm.rsp -jdk %oracle_home%\jdk160_24
%opatch_home%\opatch apply -silent
rem Workaround for BUB 9613778: OPATCH-STAND-ALONE: ERROR "OUI-67124:INVENTORY CHECK FAILED" ON GERMAN WINDOWS
rem set _JAVA_OPTIONS=
Reverting patches is similar to 12.1.x.
set oracle_home=C:\Oracle\JDev111170
set java_home=%oracle_home%\jdk160_24
rem opatch_home=[your unzipped OPatch home]
set opatch_home=%oracle_home%\oracle_common\OPatch
pushd [path]\19591087
rem use switch -ocmrf, if you have an older opatch version, which  requires a response file 
rem use switch -jdk, if you have the downloaded opatch version
rem cmd /c %opatch_home%\opatch rollback -id 19591087 -silent -ocmrf ocm.rsp -jdk %oracle_home%\jdk160_24
%opatch_home%\opatch rollback -id 19591087 -silent

That's it!

, , , , , ,

3 Comments

ADF Archtitecture Practice – JDeveloper Silent Install

This article describes how to standardize your JDeveloper Installation as requested in Planning & Getting Started – Team, Skills and Development Environments. It is part of the ADF Architecture Practice lessons and describes the installation with examples for windows.


Version 12.1.x

In this version  the Oracle Universal Installer allows the silent installation of JDeveloper. All what you need is the installer file for your platform (e.g. jdev_suite_121300_win64.exe) and a response file. You can create your response file as described in the documentation:

  1. Run your product’s graphical installer or installer, as described in your product installation guide.
  2. For product installation, on the Installation Summary screen, click Save Response File to save your installation parameters to a response file.

The resulting file should be look similar to the following code:

[ENGINE]

#DO NOT CHANGE THIS.
Response File Version=1.0.0.0.0

[GENERIC]

#This will be blank when there is nothing to be de-installed in distribution level
SELECTED_DISTRIBUTION=JDeveloper Integrated Server Suite~12.1.3.0.0

#The oracle home location. This can be an existing Oracle Home or a new Oracle Home
ORACLE_HOME=C:\Oracle\JDev121300\

Then you call a command similar to:

jdev_suite_121300_win64.exe -silent -waitforcompletion -responseFile [complete path]\response.rsp

Deinstallation is similar, the response should look like

[ENGINE]

#DO NOT CHANGE THIS.
Response File Version=1.0.0.0.0

[GENERIC]

#This will be blank when there is nothing to be de-installed in distribution level
SELECTED_DISTRIBUTION=JDeveloper Integrated Server Suite~12.1.3.0.0

#The oracle home location. This can be an existing Oracle Home or a new Oracle Home
ORACLE_HOME=C:\Oracle\JDev121300\

Then you call the deinstallation via following commands:

set oracle_home=C:\Oracle\JDev121300
rem %oracle_home%\oui\bin\deinstall.cmd -noconsole -silent
"%oracle_home%\oui\bin\internal\ilaunch.exe" -noconsole -deinstall -silent ORACLE_HOME="%oracle_home%"

Pay attention that we did not use line 2, as this exits your command shell on windows. But we want to have a return code and maybe doing some post deinstall work (Enhancement Request 19464646 is created). Instead we have looked what command deinstall.cmd generates and put this on line 3.


Version 11.1.1.x
For this version you need the generic installer (eg. jdevstudio11117install.jar) and the 32bit JDK 1.6.0_24 (this is the delivered version for the manual install, 64bit version is not supported but works for most cases but not all). First you have to extract the msi JDK Installer as described here. Then you have to create a file silent.xml which is the equivalent of response.rsp in 12.1.x.

<?xml version="1.0" encoding="UTF-8"?>
<bea-installer>
  <input-fields>
    <data-value name="BEAHOME" value="C:\Oracle\JDev111170" />
    <data-value name="COMPONENT_PATHS" value="JDeveloper and ADF/JDeveloper Studio|JDeveloper and ADF/Application Development Framework Runtime|WebLogic Server/Core Application Server|WebLogic Server/Administration Console|WebLogic Server/Configuration Wizard and Upgrade Framework|WebLogic Server/WebLogic JDBC Drivers|WebLogic Server/WebLogic Server Clients|WebLogic Server/WebLogic SCA|WebLogic Server/UDDI and Xquery Support"/>
    <data-value name="INSTALL_SHORTCUT_IN_ALL_USERS_FOLDER" value="yes"/>
    <data-value name="LOCAL_JVMS" value="C:\Oracle\JDev111170\jdk160_24\"/>
  </input-fields>
</bea-installer>

Then you can call Installation with following batch file:

set mw_home=C:\Oracle\JDev111170
set oracle_home==%mw_home%\oracle_common
set java_home=%mw_home%\jdk160_24
c:\windows\system32\msiexec.exe /i [complete path]\jdk1.6.0_24.msi /quiet ADDLOCAL="ToolsFeature,SourceFeature" INSTALLDIR="%java_home%" REBOOT=Suppress
"%java_home%\bin\java" -jar jdevstudio11117install.jar -mode=silent -log=install.log -silent_xml=silent.xml

You can call the deinstallation with following batch file:

set mw_home=C:\Oracle\JDev111170
set oracle_home==%mw_home%\oracle_common
set java_home=%oracle_home%\jdk160_24
%mw_home%\utils\uninstall\uninstall.exe -mode=silent -log=uninstall.log
c:\windows\system32\msiexec.exe /x [complete path]\jdk1.6.0_24.msi /quiet REBOOT=Suppress

That’s it!

, , , , , ,

Leave a comment

ADF Archtitecture Practice Series

From now on I will create a series of lessons to implement the knowledge of the ADF Architecture Course from Oracle ADF product management. Here you can find the videos and the presentations. This post will be the index of this lessons, so bookmark it for further use!

,

Leave a comment

%d bloggers like this: