Archive for category Deploying

“Regulatorics: Offside is when the referee whistles” – I’m a speaker at #DOAG2018

Today my presentation is confirmed: “Regulatorics: Offside is when the referee whistles”. Maybe the German title will be  better understood: “Regulatorik: Abseits ist, wenn der Schiedsrichter pfeift”

The regulatory system has more and more influence on our software development.

Regulatory authorities, external and internal Auditors are increasingly examining our IT and not longer only our business processes and balance sheets.
Some of them have better trained IT experts as we can find on the free market.

General standards such as ISO/IEC 2700X but also banking-specific standards such as BAIT and MaRisk now pose challenges that generally only large software manufacturers know.
Approximately 40 % of our projects are now regulatory-driven.

Therefore, we are currently redefining our development process in order to implement the following requirements, among others
– Unchangeability of the tested artefacts after the test
– Functional segregation
– Detection of accidental changes or intentional manipulations of the application

The lecture shows the vision of such a safe process. It shows the current status of implementation in SOA and ADF development, for example

– Migration of version management to GIT in Atlassian BitBucket
– Application and selection criteria for a branching model
– Mandatory code reviews in Atlassian BitBucket
– Build and Deployment Pipelines in Jenkins
– Automatic documentation in JIRA Issue via Bitbucket and Jenkins.

Maybe you too can minimize the additional work and continue to work agile to meet such requirements.

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

Advertisements

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

Leave a comment

#DOAG2017 wrap up

doag_wegweiser

Another DOAG is over and here are my summary.

Day 1

As my presentation is planned for noon I arrived this year on the evening before, so I could attend the early sessions on 8:30.

Sten Vesterli: APEX, ADF, or ABCS? A real-life application built in 3 tools

He compares the development of a real application in APEX, ADF and ABCS. He don’t believe that ABCS is usable from end users and shows interesting problems with the date pickers in APEX and ADF.

Welcome by DOAG and Oracle

Stefan Kinnen from DOAG welcomes the attendees and gives an short overview for the conference. The part of the Kenneth Johansen from Oracle was very dry in the contrast.

Keynote: Neil SholayTracking the Inevitable (How to plan for likely and disruptive business scenarios.)

Quite the reverse the colleague of Kenneth Johansen. He present interesting views about the ongoing disruption in every business and how to prepare for this. Unfortunately the presentation is not available for download.

Markus Lohn: Road to the (Oracle) Cloud

The next title was pure understatement. As I know Markus expanded his talk to the details of a complex SOA & ESB migration report, which most of the attendees sure does not expect. I think at least my boss not :-). I left this a little earlier as now I had to go to stage.

Torsten Kleiber: PL/SQL: Therefore test automation for those who bind themselves forever!

After several presentations about ADF and the related development life cycle I decided this year to speak about the selection process of a PL/SQL testing tool. Additional I promised to do some of this last year. The room was packed with round about 100 people, which I unfortunately never reached with ADF in the past. Despite some technical problems when starting and in the demo’s all went fine and I will thank again all my attendees. You find my presentation additional here:

Because of some discussion with my attendees and lunch I skipped the next slot.

Sabine Heimsath, Jan Karremans: #DBADev – Like dog and cat? It doesn’t have to be!

This was a “lightweight” simulated battle between DBA and > as DB developers. I little bit oversimplified, but ok, unfortunately I seen none of our DBA’s in the audience.

Alexander Weber: Cloud service – heaven and hell (application and data away)

This was report> from a real world oracle database cloud customer with an APEX app. Maybe I will remind me to look at his experience, when we will ever go the cloud.

Bryn Llewellyn: Ten Rules for Doing a PL/SQL Performance Experiment

Bryn shows how to best analyze and broke down a performance problem and the idea’s are often not restricted to PL/SQL. Lession learned “Don’t use SET TIMING ON”, as this includes additional network roundtrips.

Elmar Juergens: The sow does not get fat from weighing: PL/SQL quality analysis

I see already a similar presentation from Elmar Juergens at Javaland 2017. Same message this time. Additional he recommend to measure at first only the changed source code via a diffing algorithm to only identifying the changed lines. Most tools can’t this. Will have a look at his own tool sometime. Additional our bosses want Elmar Juergens for a presentation for our developers. Will look if this will change their minds an they will look a least a bit more at the existing measured violation.

Day 2

Markus Klenke: Better, more beautiful, more modern: barely used beads in ADF

Markus likes ADF and show this. Fine that he is at our company site to help us with this.

Daniel Hillinger, Tobias Deml: Battle: Database Virtualization

First at the beginning the decision was made, who of the both is pro and who is contra. Nice format to find the arguments for this. I’ve learned that all databases in the same virtualization farm has to be the same license and options, if you want not to pay to much. Additional it’s not usual to begin if you have fewer than 100 database instances.

Thorsten Wussow: Let the orchestra play –- Docker orchestration and visualization

Unfortunately, my expectations were disappointed here because most demos didn’t work. Not a good start to use the technology.

Dominic Weiser: Continuous integration in database development

This was another nice database CI presentation which contains utPLSQL, and the presenter had enough time to show the CI part on Jenkins too. Similar you can find in my upload too, but I had enough time in my talk to present.

Duncan Mills: Web Components, the Oracle Way

Duncan describes how to define and use own components in Oracle Jet as professional as ever. Unfortunatly I see that he has moved from ADF product management to JET architecture team now.

Michael Schulze: Tools for diagnosing Weblogic (FMW) performance problems 

A surprice for me – lot of new tools and information for my toolchain.

Markus Lohn: Quo Vadis Agile Software Development

Again Markus on the stage. He shows his Agile project experiences on several customers and I’m not sure  if he mentioned us or not.

Bryn Llewellyn: Guarding your Data Behind a Hard Shell PL/SQL API – the Detail

Bryn shows here a security model for how accessing the data via an secure API which contains of 4 schema layers: data, code, implementation, API. Unfortunatly this is not really good handled by some of Oracle own development frameworks like ADF despite you develop only on the rest API on top. But definitely give it a try.

Roland Dürre, Knud Johannsen, Christian Botta: Creative communication

The paintings was good but the rest was very esoteric presentation of philosophic messages. I think I was to inspired by the vita of mr. Botta when selected this slot, this was what I had expected.

Before the evening keynote Ulrike Schwinn was awarded, congratulations! Over my career I heard a lot of presentations from her, which was impressive, none where I’m not learned something new.

Keynote – Karl-Heinz Land: Digital Darwinism: The Silent Attack on your Business Model and Brand

Good and provocative but unfortunately in my opinion also with some mistakes. The law of moore does not apply anymore, and as this was his main explanation, why all will be automated in the near future. Yes automation will happen, but only where a real business case is. If you see that over 50% of internet traffic is eaten by video streaming already, than I think this will hamper this process. Blockchain is not an oprating system, it is an distributed secure database. But it comes with cost, which actually is not paid, for example: A Bitcoin transaction consumes more electricity than a one-person household per month. And the verification of security need to many time. This has to be solved or Blockchain will only be used productive in edge case. Generally  I’m more a fan of WildDueck.

ADF Community Meeting

Unfortunately this was greatest disappointment of the whole DOAG conference for me. Once again we discussed several things

  • ADF is not visible from Oracle because not actually marketed
  • Errors in JDeveloper: the IDE for ADF and lack of support for this
  • Provide an Virtual Machine for ADF development. This is ok for trying out, but will not supported in restricted environment at customers as at my company – a bank. At least this should not be an replacement of support for JDeveloper
  • Should we open the community to other technologies like SOA, JET, ABCS an so on. My opinion: definitely no, as this is the final dead of ADF in the community.
  • We see that some of the important product managers move to JET and does not support us anymore.

In this atmosphere this year no common dinner happens after the meeting.

After that I spent the time with some colleagues at the evening party. This year I see early clearing the rooms of the NCC. I don’t know if the starting Scope alliance party was the cause, but maybe they will do this next year on the first day instead?

Day 3

Hans Eichenberger: DBaaS with APEX 5.1 Frontend and Oracle Multitenant Option 

Will repeat my tweet here: The developer dreams come true – getting an inhouse sandbox database in minutes from the DBA! Whoops – unfortunately not my company!

Adam Lukaszewski: Boost your Forms Development with GIT and Forms API Master

At the moment I define a future proof build and deployment process at my company for the loan platform. Part of this is security and mandatory review. So the presented Forms API Master tool is the perfect tool for handling the review and merge process of branches for our legacy Forms and Reports development. Will look how to implement this in Atlassian BitBucket.

Keynote – Robert Schröder: The Difference between Errors and Failures – Experiences in Aviation 

Key message are for me: Accept that failures happen, learn from failures and change your processes accordingly. Define a clear language for your business.

Marcus Hammer: Die Hürden großer ADF-Anwendungen

Not really new for us, but as we speak a lot with other colleagues from his company the solutions are mostly known for us – and for the whole ADF community in Germany. Interesting is the decision to implement batch processing in Java too, seems that it is problematic to get PL/SQL staff right now. I’m not understanding the decision to write an own framework for database deployment, but as this was not his own topic, he could not answer why Liquibase or Flyway does not fulfill their requirements.

Frank Munz: WebLogic 12c and Java Cloud Service

I missed Franks sessions last years, but often look at his slides in the web. This was a very good entry in differentiating the different Oracle Cloud Servives, which I could use for Java Develoment. Oracle Java Cloud Service is only one of it and should correctly named Oracle WebLogic Cloud Service. Great another naming dropping: Application Container Cloud should better by named as Language as a Service. Look at the slides to get the whole picture.

Alex Nuijten: Regular Expressions: Say What?

The best example that you can learn ever something new from a good presenter, despite you think you know all about a topic and you have already read the presentation before. For an example: a regular expression looks already for the longest possible match, which could be the whole string instead of the searched pattern. Interesting too the connect by regexp_count for splitting a string into rows. And look at the standard patterns in dbms_redact before you write your own, if it is not there write it in your own package for reuse.

Frank MunzMicroservices Runtimes

The second presentation of Frank I attend compares the actual available Runtimes on the market. But special interesting was the intro into micro services: are you sure you need this and do you know, what nobody tells you about latency and so on? Or do you know that accessing another micro service can need 100000 times more than accessing a functionality in the same monolith?

Conclusion

Again this year I attend colorful bouquet of presentations and again it pay’s off to look at the whole conference program and some abstracts and presentations before to minimize disappointments.

Generally I attend to few development sessions, maybe because I use other technologies or know already the presented topic.  But my feeling is that are really fewer development presentations.

Interesting is that finally many Development, Deployment, QA, TDD and CI/CD technologies used in other development languages find it’s way into classic Oracle development technologies like Oracle PL/SQL, Forms and Reports.

For the event organization I see a little degradation of service this year, for example the quality of the food or the cleaning of toilets and rooms. And a no go: Missing water for presenters in some rooms!

That’s it!

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

Leave a comment

“#PL/SQL: Therefore, whoever binds forever: automate your tests” – I’m a speaker at #DOAG2017

 

Today my presentation is confirmed: “Therefore, whoever binds forever: automate your tests”. Maybe the German title will be the better understood: “PL/SQL: Drum test-automatisiere, wer sich sich ewig bindet!”

I will speak over my experiences with following

  • several PL/SQL testing tools like at least
  • I will give you a demo of this tools and compare their capabilities for
    • architecture
    • branching
    • continuous integration
    • code coverage

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

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

Leave a comment

#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.

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

1 Comment

Fix “BEA-000394: Deadlock detected” for Weblogic with ADF Applications 12.2.1.2

If you try the newest version 12.2.1.2 (or maybe earlier versions too) you see, that your managed server does not restart, when

  • you have deployed your ADF application(s)
  • you try to restart the managed server with ADF
  • you use intentionally or not shared libraries in your weblogic-application.xml (see example below)
<?xml version = '1.0' encoding = 'UTF-8'?>
<weblogic-application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-application http://www.bea.com/ns/weblogic/weblogic-application/1.0/weblogic-application.xsd"
                      xmlns="http://www.bea.com/ns/weblogic/weblogic-application">
  <listener>
    <listener-class>oracle.adf.share.weblogic.listeners.ADFApplicationLifecycleListener</listener-class>
  </listener>
  <listener>
    <listener-class>oracle.mds.lcm.weblogic.WLLifecycleListener</listener-class>
  </listener>
  <library-ref>
    <library-name>adf.oracle.domain</library-name>
  </library-ref>
</weblogic-application>

You run into unpublished Bug 24490566: INTERMITTENT DEADLOCK IN WLS STARTUP DURING ADF-SHARE-DEPLOYED-TESTS.

But no problem, Oracle has created Patch 24490566: INTERMITTENT DEADLOCK IN WLS STARTUP DURING ADF-SHARE-DEPLOYED-TESTS for us for version 12.2.1.2.

Remember to install the patches for all of your developers too!

Remember too, if you want to install more than one patch, there can be conflicts. Please test carefully, if all of your problems are solved for all patches after adding one more patch. Maybe you have to create a merge request in Oracle My Support.

That’s it!

, , , , , ,

5 Comments

“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

Deploy your ADF Mobile App to a virtual Android device from JDeveloper IDE

If you tired from the android emulator speed you may have read Chris Muir’s article ADF Mobile: Avoiding the Android Emulator with AndroVM.

In the meantime the successor of AndroVM is GENYMOTION.

If you have configured the port forwarding section from the AndroVM or use GENYMOTION, then you have to deploy your ADF Mobile app first to apk-File and manually install this into to the virtual android image via the android sdk command adb. The virtual Android device must be started to do this.

To do the last step from JDeveloper IDE directly with 1 click following steps help to reach this:

  1. Convention over configuration: Name all of your deployment profiles for android with the same name, eg. all adf mobile samples use the name “ANDROID_MOBILE_NATIVE_archive1”
  2. Create in JDeveloper an external tool
    1. Select from the menu Tools -> External Tools … -> New
    2. Select Tool Type: External Program

    3. Select Program Executable: adb.exe from your Android SDK
      Enter Arguments: install ${workspace.dir}\deploy\ANDROID_MOBILE_NATIVE_archive1\${file.name.no.ext}.apk

    4. Enter Caption for Menu Items, eg.: Install apk file to virtual Android device

    5. Select Add Items to Menus: Navigator Context Menu

    6. Select Enabled When Specific File Types are selected: Application

Now you first deploy your Application to an Android package:

Then you can install this via application context menu directly to your virtual android devive:

Now you can test your app in the virtual Android device:

That’s it!

Chrysanth WebStory Published by WebStory

, , , , ,

11 Comments

Oracle Forms 11 running as application in Java Webstart

According to my last post today I will show you the basic configuration for forms 11g.

Unfortunatly webstart in forms 11g it is not as easy as in 10g, but it works too!

As first you need an additional unique identifier “ifsessid” in parameter “serverURL” for forms. This prevents the use of a static jnlp in this case. Maybe it is possible to branch out the build of this unique identifier from the jnlp. I have decided instead to create the the jnlp from a java server page. This helps me additional to use forms parameters, which I will describe in a later post. Sure there maybe exist other ways to build the jnlp.

Let’s start:

Again I assume you have an running unix or linux application server with forms 11g.

As first you need the webstart_11g.jsp in folder public_html under a JDeveloper project. The marked lines provides the identifier:

<%@ page contentType="application/x-java-jnlp-file" language="java" import="java.sql.*"%>
<%@ page session="true"%>
<%response.setDateHeader ("Expires", 0); //prevents caching at the proxy server%>
<%
  long time = System.currentTimeMillis();
  String sessid = String.valueOf(time);
%>
<jnlp codebase="http://localhost.localdomain:9001/forms/java/">
  <information>
    <title>Webstart Test Oracle Forms 11g</title>
    <vendor>develishdevelopment.wordpress.com</vendor>
    <description>Webstart Test Oracle Forms 11g</description>
  </information>
  <security>
    <all-permissions/>
  </security>
  <update check="timeout" policy="always"/>
  <resources>
    <j2se version="1.6.0"/>
    <jar href="frmall.jar" download="eager" main="true"/>
  </resources>
  <applet-desc name="Webstart Test Oracle Forms 11g" main-class="oracle.forms.engine.Main" width="990" height="640">
    <param name="background" value="no"/>
    <param name="logo" value="no"/>
    <param name="serverApp" value="default"/>
    <param name="lookAndFeel" value="oracle"/>
    <param name="allow_debug" value="true"/>
    <param name="separateFrame" value="false"/>
    <param name="em_mode" value="1"/>
    <param name="latencyCheck" value="true"/>
    <param name="networkRetries" value="240"/>
    <param name="serverArgs" value="module=test.fmx useSDI=yes"/>
    <param name="serverURL" value="http://localhost.localdomain:9001/forms/lservlet?ifcfs=http://localhost.localdomain:9001/forms/frmservlet?config=jpi&ifsessid=formsapp.<%=sessid%>"/>
    <param name="colorScheme" value="teal"/>
    <param name="splashScreen" value="no"/>
    <param name="dontTruncateTabs" value="true"/>
  </applet-desc>
</jnlp>

Now you need to deploy this jsp. First create a application server connection in JDeveloper version corresponding to your forms weblogic server. I have forms 11.1.1.2.0, which runs on weblogic 10.3.2. So I have to use JDeveloper 11.1.1.2.0. See oracle support information for supported JDeveloper version for your environment. Right click on you Jdeveloper project with the jsp an select deploy. Following are the steps in the deploy wizard:

  • Deployment Action
    • Deploy to application server
  • Select Servers
    • Application Servers: your application server
    • Overwrite modules of the same name: select
    • Deploy to all server instances in the domain: unselect
    • Deploy as a standanlone Application: select
  • Server instances
    • List Standalone Servers and Cluster: select your forms cluster or your forms server (WLS_FORMS)
  • Summary: finish

In the project properties change the deployment properties to set your context root, which will be later part of your url:

Set context root.

If you redeploy this jsp, you may wonder that your change is not immediatly shown. You can solve this by dropping the former deployment before redeploying or you add following files to your JDeveloper Project under folder public_html\WEB-INF:

weblogic.xml:

<weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd" xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app">
  <jsp-descriptor>
    <page-check-seconds>0</page-check-seconds>
  </jsp-descriptor>
  <container-descriptor>
    <servlet-reload-check-secs>0</servlet-reload-check-secs>
    <resource-reload-check-secs>0</resource-reload-check-secs>
  </container-descriptor>
  <context-root>webstart_11g</context-root>
  <fast-swap>
    <enabled>true</enabled>
    <refresh-interval>1</refresh-interval>
  </fast-swap>
</weblogic-web-app>

web.xml:

<?xml version = '1.0' encoding = 'windows-1252'?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"></web-app>

Complete workspace you can found here: webstart_11g.zip

Now start java webstart with your jnlp url, here is an example in linux:

./javaws http://localhost.localdomain:9001/webstart_11g/webstart_11g.jsp

Java webstart comes up with the standard test.fmx from the forms services installation:

webstart_11g_succesful

That’s all!

, , , ,

65 Comments

Oracle Forms 10 running as application in Java Webstart

Many people miss in webforms the possibility to run forms as a separate application. They have a lot of problems to handle browser back button an so on.

The good news – there is way to do this with Java Webstart.

The bad news – it is not supported by Oracle. But we run this since four years now and is very stable.

Following I show you the basic configuration for forms 10g. In later posts I will show you examples for forms 11g, how to handle forms parameters and further more.

Let’s start:

I assume you have an running unix or linux application server with forms 10.1.2.
Put following code as webstart_10g.jnlp to directory <Oracle Home>/j2ee/home/default-web-app

<jnlp spec="1.0+" codebase="http://localhost.localdomain:7778/forms/java/">
  <information>
    <title>Webstart Test Oracle Forms 10g</title>
    <vendor>develishdevelopment.wordpress.com</vendor>
    <homepage href="null"/>
    <description>Webstart Test Oracle Forms 10g</description>
  </information>
  <security>
    <all-permissions/>
  </security>
  <update check="timeout" policy="always"/>
  <resources>
    <java version="1.6.0"/>
    <jar href="frmall.jar" download="eager" main="true"/>
  </resources>
  <applet-desc name="Webstart Test Oracle Forms 10g" main-class="oracle.forms.engine.Main" width="990" height="660">
    <param name="background" value="no"/>
    <param name="logo" value="no"/>
    <param name="serverApp" value="default"/>
    <param name="lookAndFeel" value="oracle"/>
    <param name="allow_debug" value="true"/>
    <param name="separateFrame" value="false"/>
    <param name="em_mode" value="1"/>
    <param name="latencyCheck" value="true"/>
    <param name="networkRetries" value="240"/>
    <param name="serverArgs" value="module=test.fmx useSDI=yes"/>
    <param name="serverURL" value="http://localhost.localdomain:7778/forms/lservlet?ifcfs=http://localhost.localdomain:7778/forms/frmservlet?config=jpi"/>
    <param name="colorScheme" value="teal"/>
    <param name="splashScreen" value="no"/>
    <param name="dontTruncateTabs" value="true"/>
  </applet-desc>
</jnlp>

Start java webstart with your jnlp url, here is an example in linux:

./javaws http://localhost.localdomain:7778/j2ee/webstart_10g.jnlp

Java webstart comes up with the standard test.fmx from the forms services installation:

Screenshot show the succesful start of test.fmx in java webstart

Isn’t it easy?

, , , ,

15 Comments

%d bloggers like this: