AMIS Technology Blog » Aino Andriessen http://technology.amis.nl Friends of Oracle and Java Wed, 01 Oct 2014 11:09:07 +0000 en-US hourly 1 http://wordpress.org/?v=4.0 OOW13: Racing Oracle Open World http://technology.amis.nl/2013/10/04/oow13-racing-oracles-open-world/ http://technology.amis.nl/2013/10/04/oow13-racing-oracles-open-world/#comments Fri, 04 Oct 2013 12:46:51 +0000 http://technology.amis.nl/?p=24783 For me this year’s Open World has three main themes: Community, Cloud and Mobile. Although actually it included a fourth theme: the America’s Cup. The fabulous comeback of Team America and the spectacular sailing lead to an extra vibe during the conference. And although the media footage provided the best way to view the races, [...]

The post OOW13: Racing Oracle Open World appeared first on AMIS Technology Blog.

]]>
For me this year’s Open World has three main themes: Community, Cloud and Mobile.

ImageAlthough actually it included a fourth theme: the America’s Cup. The fabulous comeback of Team America and the spectacular sailing lead to an extra vibe during the conference. And although the media footage provided the best way to view the races, nothing beats the experience of standing ashore and watching the boats ‘fly by’ in real life.

Unfortunately the sailing also disrupted Larry’s keynote about the cloud but fortunately Thomas Kurian did an excellent job on that one. For me that keynote was one of the most interesting of the conference because it provided an overview of the big ambitions of Oracle for the clouds. A bit to my surprise, it also included an announcement by Microsoft about the availability of the Oracle Database, Oracle Weblogic and Java (either on Windows or Linux) in the Microsoft Azure cloud.

 

The cloud offerings are still increasing and now encompass a clear SAAS, PAAS and IAAS strategy. Fusion Applications modules like Human Capital Management, CRM and ERP and others are (or will become) available as Software Services, supplemented with social services. The database, weblogic, documents, mobile and others are the platform services that also includes development services like source control, wiki, incident management and build and deploy. Infrastructure services include (amongs others) storage, backup, identity, cache and messaging.

I’ve took the advantage to experience the java (weblogic) cloud in one of the many hands-on labs. This was an excellent lab that demonstrated much of the aspects on developing and deploying and managing Java / ADF applications in the cloud using OEPE, Maven and the cloud SDK. By the way, you can try it yourself on cloud.oracle.com; it takes only one day for activation ;-).

The community aspect is always a great part of Oracle Open World (actually of most conferences). The ADF community is very active and still growing. It’s therefore more then deserved that they have their own User Group Sunday. We were treated by excellent presentations on Performance, best, actually worst, practices, Security and Mobile user experience. The meetup on Saturday was an great way to meet everybody again and enjoy good food and drinks and have interesting discussions. Looking forward to next year. And off course, the many ADF (and other) sessions during the week provided lots of valuable information and good discussions, for example at the ‘Lessons Learned’ session on Wednesday by (amongs others) the guys from TIA. I also got great feedback on my own session ‘Oracle ADF Fusion Architecture: Manage the Modular Approach’.

On the demogrounds I got an great overview of the current state of the Developer Cloud (see earlier). It has been much improved and seems to perform much better and includes more features than before. But since it’s a fully managed environment with limited flexibility that’s aimed at cloud deployed applications I’m not sure if it’s a option for many of my customers. I’m looking forward to evaluate it (again) and see if and how we could integrate it in our development processes.

With all the great sessions, meetings, hands-on labs, keynotes, America’s cup, breakfast together, cycling around town etc. etc. it was again a great and valuable week at Oracle Open World. I’d like to thank everybody and I hope to be there next year.

The post OOW13: Racing Oracle Open World appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2013/10/04/oow13-racing-oracles-open-world/feed/ 0
OOW13: Looking forward at this year’s Oracle Open World http://technology.amis.nl/2013/09/20/oow13-looking-forward-at-this-years-oracle-open-world/ http://technology.amis.nl/2013/09/20/oow13-looking-forward-at-this-years-oracle-open-world/#comments Fri, 20 Sep 2013 10:28:51 +0000 http://technology.amis.nl/?p=24490 As every year, Open World is again packed with sessions, meetings, announcements, Demo grounds, Hands-on labs, events, music. My calendar is rapidly filling up but I keep on discovering other interesting sessions and it’s a constant challenge to plan everything and to have a good overview of all alternatives. In addition to the schedule builder [...]

The post OOW13: Looking forward at this year’s Oracle Open World appeared first on AMIS Technology Blog.

]]>
As every year, Open World is again packed with sessions, meetings, announcements, Demo grounds, Hands-on labs, events, music. My calendar is rapidly filling up but I keep on discovering other interesting sessions and it’s a constant challenge to plan everything and to have a good overview of all alternatives. In addition to the schedule builder and electronic agenda, I’m actually looking forward to the print-out ;-).

With so many subjects it’s always a challenge to make a selection. My main subjects will be:

  • ADF development and architecture
  • Service Oriented Architecture
  • Application Lifecycle Management
  • Cloud
  • Oracle Fusion Applications

I hope to get some answers to the following questions:

  • What are best practices to manage build, delivery, test and deployment of ADF and SOA applications / components?
  • How does the cloud influence the daily practice for developers?
  • How does the cloud influence application and enterprise architecture?
  • How does mobile influence the daily practice of developers?
  • What does Oracle Fusion Applications offer ADF and SOA developers? Is it an interesting environment in which they can apply their knowlegde and skills?
  • What are best practices for developing multi-channel applications, e.g. ADF, Mobile and SOA?
  • What is the current state of Service governance, especially in the light of continuous integration and delivery and in what direction does move?
  • How to implement Fusion Middleware infrastucture provisioning to fully support rapid development and delivery?
  • How will JEE 6, 7 and 8 influence ADF?

This is definitely not an exhaustive list and fortunately OOW provides lots of opportunities to ‘shop around’. It’ll be an interesting conference and I’m ready to dive in.

The post OOW13: Looking forward at this year’s Oracle Open World appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2013/09/20/oow13-looking-forward-at-this-years-oracle-open-world/feed/ 0
ADF @ UKOUG 2012 Conference http://technology.amis.nl/2012/12/03/adf-ukoug-2012-conference/ http://technology.amis.nl/2012/12/03/adf-ukoug-2012-conference/#comments Mon, 03 Dec 2012 08:37:24 +0000 http://technology.amis.nl/?p=20340 Next three days the annual UKOUG conference hits the town of Birmingham. It’ll be three full days packed with Oracle content on a broad range of subjects on Database, Middleware, Development, Fusion, APEX, MySQL, Business and Strategy all divided in 17 tracks. My interest will (off course) focus on ADF. I’m looking forward to almost [...]

The post ADF @ UKOUG 2012 Conference appeared first on AMIS Technology Blog.

]]>
Next three days the annual UKOUG conference hits the town of Birmingham. It’ll be three full days packed with Oracle content on a broad range of subjects on Database, Middleware, Development, Fusion, APEX, MySQL, Business and Strategy all divided in 17 tracks. My interest will (off course) focus on ADF.

I’m looking forward to almost all presentations but I’m especially eager to hear about the future of Fusion. Duncan Mills will gives a keynote on this subject on Monday and Frank Nimphius will then provide us with an overview of the next 12c release of ADF and JDeveloper. Then my colleague Luc Bors will present on ADF Mobile (‘Providing a Multi-Platform Mobile Solution with Oracle ADF Mobile’). I expect a great session with lots of demos. He’ll also have a session on Forms modernization. Then a sesison by Grant Ronald about design patterns, always a great subject. The day will finish with a very interesting technical session on animations with HTML5 and CSS3.

On Tuesday there will be more great ADF sessions by Steven Davelaar, Chris Muir and Frank Nimphius. Steven masters the art to present complex subjects in a simple and enthusiastic manner, definitely worthwhile to attend. I also expect a good and session on the UIShell by Chris and an entertaining presentation on classic ADF mistakes by Frank. Don’t miss Frank Houwelings session ‘Improve Your ADF Fusion Application’s Response Time by as Much as 70%’ on ADF performance and metrics. I’ve never seen sexier graphs about my application before.

And off course, don’t miss own sessions: ‘Deploy with Joy: Using Hudson to Build and Deploy your ADF Fusion Application’ and ‘ADF Development from the Trenches’.

Then on Wednesday it’s a half day masterclass by Chris Muir on ADF Architecture Fundamentals, a not-to-be-missed session on application design and architecture and the decision to be made early in the development cycle. And the whole afternoon there’s time to get experience in the ‘Mobile Development Hands-on Lab’.

All in all, the UKOUG conference promises great sessions and the opportunity to meet nice and great people. It’ll definitely be three very intense but worthwhile days.

The post ADF @ UKOUG 2012 Conference appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2012/12/03/adf-ukoug-2012-conference/feed/ 0
ADF table filtering on MySQL is failing http://technology.amis.nl/2011/10/24/adf-table-filtering-on-mysql-is-failing/ http://technology.amis.nl/2011/10/24/adf-table-filtering-on-mysql-is-failing/#comments Mon, 24 Oct 2011 13:52:24 +0000 http://technology.amis.nl/blog/?p=13855 Table filtering, aka Query by example, is a great feature of ADF tables. This feature provides filterboxes on top of a column(es). and filters the data based on the values in the filterbox: This works like a charm on an Oracle database, but when you use MySQL the filtering doesn’t work and actually doesn’t retrieve [...]

The post ADF table filtering on MySQL is failing appeared first on AMIS Technology Blog.

]]>
Table filtering, aka Query by example, is a great feature of ADF tables. This feature provides filterboxes on top of a column(es).

Image

and filters the data based on the values in the filterbox:

Image

This works like a charm on an Oracle database, but when you use MySQL the filtering doesn’t work and actually doesn’t retrieve any data at all. As you can understand, this is not expected and definitely not wanted behaviour.

The first step in solving this behaviour was to enable logging (either via the weblogic diagnostic console or by adding -Djbo.debugoutput=console to the Java Options in the project properties Run configuration). In the log console we see that the SQL statement for this table collection / ViewObject now includes a where clause that includes the table filter value(s): ‘WHERE ( ( (EmployeesEo.FIRST_NAME LIKE ( :vc_temp_1 || ‘%’) ) ) )‘. This where clause with the % appended to the variable is automatically performed by the ADF framework.

As it turned out, this concatenation of the value with the % (:vc_temp || ‘%’) was the cause of our problem. This concatenation with a double pipe is a SQL92 standard. However with MySQL the concatenation is done with the concat function and not the double pipe. Thus this statement causes an exception somewhere in MySQL, and the result is that no data is returned.

The solution is actually quite easy because you can configure the ‘strictness’ of MySQL to the SQL standard via the SQL mode. In this case: SET sql_mode = ‘PIPES_AS_CONCAT’. This value can also be set in the my.cnf or my.ini files or provided at startup via the: –sql-mode=”PIPES_AS_CONCAT” option. Now the filtering works as expected.

The post ADF table filtering on MySQL is failing appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2011/10/24/adf-table-filtering-on-mysql-is-failing/feed/ 0
The year of the ADF developer @ Oracle Open World http://technology.amis.nl/2011/10/18/the-year-of-the-adf-developer-open-world/ http://technology.amis.nl/2011/10/18/the-year-of-the-adf-developer-open-world/#comments Tue, 18 Oct 2011 07:19:39 +0000 http://technology.amis.nl/blog/?p=13763 Open World made it clear: 2011 is the year of the ADF developer. Not only were there a lot of sessions about ADF, but also because ADF screens could be found in many sessions like the ones on the new Enterprise Manager 12c and on Oracle Fusion Applications. Not only were the number of sessions [...]

The post The year of the ADF developer @ Oracle Open World appeared first on AMIS Technology Blog.

]]>
Open World made it clear: 2011 is the year of the ADF developer. Not only were there a lot of sessions about ADF, but also because ADF screens could be found in many sessions like the ones on the new Enterprise Manager 12c and on Oracle Fusion Applications. Not only were the number of sessions higher than in other years, also the number of participants per session was significantly higher. Sunday was ADF EMG day, organized by the ADF usergroup, with great sessions on a variety of a little bit more advanced subjects by leading figures in the ADF community.The rest of the week had a choice of more than 60 sessions from introduction to advanced, from low-level technical to more architectural ones and from real-world implement experiences to related to Fusion Apps. Open World 2011 has been of great value for the ADF developer.

The most important ADF annnouncement concerned ADF Mobile.The strategy has been changed dramatically and we can soon expect the tools to create native iOS and Android apps (other OS’s will probably follow later). We can expect the full and familiar ADF development experience in JDeveloper and one-click deployment to a native app (i.e. one per platform) that consists of the ADF webapplication that renders as HTML 5, an embedded JVM and PhoneGap for access to the mobile OS, (Ok, this is actually what you may call an hybrid app).

adfmobile-architecture

Application development is done with taskflows, a special set of ADF Faces and datacontrols to access the local database, webservices and the device capabilities like GPS, contacts, email etc. Note that is doesn’t allow for direct access to the enterprise database. That must be organized via webservices, e.g. ADF Services on top of the ADF Business Components. Maybe later, some kind of of synchronization between the app and the enterprise database may became available. But this is not the recommended way as it was in the past. The product managers were a bit vague when we can expect ADF Mobile. They showed live demo’s so it could be available soon, maybe already with JDeveloper 11.1.2.2. We have to wait and see what mobile support we’ll get with 11gR1. At least what we can expect soon is support for a better mobile browsing experience of normal ADF applications. This includes HTML5, a simple table component, gesture support and a flowing layout.

Life demo of an ADF mobile application on the iPad.

By the way, the ADF / JDeveloper release cycle and version numbering is a highly protected secret of Oracle. The productmanagers never provide exact details and all their statements were always accompanied by a disclaimer. But at many sessions we got some glimpses of the future.

Currently we have three lines: 11gR1, 11gR2 and the future 12c.11gR1 is the stable version. It’s the foundation of Fusion Apps and the whole Fusion Middleware stack. It is the most stable line and I don’t expect many new features. The 11gR2 line gets the new features, like JSF 2.x with Facelets, better Maven support and others. For both lines we can expect soon (this year) a new version with (amongst others) Oracle Cloud Support. It will provide access to the cloud database in the way you’re used to and will provide deployment of applications to the Java cloud all from JDeveloper.

12c is expected in 2012 (probably the end of the year, but you’ll never know) and will be the main line again, also for Fusion Apps and the whole Middleware stack. It includes full support for Java7, JEE6, HTML5 and CSS3. Amongst other we’ll get much more REST support, a Groovy editor and debugger, new DVT’s (like the Sunburst, Network and Timeline ‘charts’), Git support, easier ADF layout management and improvement of public facing websites, e.g. for searchbot support. The JDeveloper development experience will be improved on speed, stability, performance and window management and we’ll finally get tab reorganization ;-). This is the result of an collaboration with the NetBeans team. We can also expect mature Maven support with a solution for the ADF and FMW library (dependency) management, ojdeploy plugin, archetypes, Maven 3, repository authentication and much more. I have the impression that Oracle is really very serious with their Maven support.

An example of the new network DVT.

It also seems that with 12c we might get a slimmed down, free?, ADF community edition that should run on other platforms like GlassFish and Tomcat, but will not contain DVT’s, Mobile and ADF Desktop/Office.

More support for ADF can also be found in the next version of Oracle Enterprise Pack for Eclipse (OEPE, 11.1.1.8). This version contains support for ADF taskflows and will be compatible with ADF 11.1.1.6. After that, the next priority are datacontrols and then in the far future we might expect full ADF Business Components (ADF BC) support. Note that the next version should be able to run ADF BC application (although you cannot develop them). In addition will this version will also contain WLST (WebLogic Scripting Tool) support and I expect that it will also contain the Oracle cloud support.

Most of the presentations can be downloaded from the OOW content site. I’d recommend the great sessions from Chris Muir, Angels in the sky, about ADF architecture and from Steven Davelaar about Dynamic Tabs (aka the ADF UI Powerhouse) and highly reusable taskflows . Highly recommendable for any ADF developer.

With such a successfull and interesting Open World I’ll definitely be there next year.

The post The year of the ADF developer @ Oracle Open World appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2011/10/18/the-year-of-the-adf-developer-open-world/feed/ 0
Weblogic deployment using the Oracle weblogic maven plugin http://technology.amis.nl/2011/01/26/weblogic-deployment-using-the-oracle-weblogic-maven-plugin/ http://technology.amis.nl/2011/01/26/weblogic-deployment-using-the-oracle-weblogic-maven-plugin/#comments Wed, 26 Jan 2011 21:05:37 +0000 http://technology.amis.nl/blog/?p=10692 With the PS3 release of the SOA Suite a new version, 10.3.4, of Weblogic has been released. Amongst others, this release also includes a new Weblogic Maven plugin (weblogic-maven-plugin) that allows interaction with Weblogic from within a Maven environment. As far as I know, this plugin is the successor of the Codehaus Weblogic plugin. That [...]

The post Weblogic deployment using the Oracle weblogic maven plugin appeared first on AMIS Technology Blog.

]]>
With the PS3 release of the SOA Suite a new version, 10.3.4, of Weblogic has been released. Amongst others, this release also includes a new Weblogic Maven plugin (weblogic-maven-plugin) that allows interaction with Weblogic from within a Maven environment. As far as I know, this plugin is the successor of the Codehaus Weblogic plugin. That one was a bit difficult to use because it required some other not publicly available Weblogic dependencies which have now been included with the new plugin. Unfortunately, this plugin is not (yet?!) available in any of the public Maven repositories so you have to put it in your own repository. Because of the size (more than 50 MB) the plugin is not included with Weblogic as-is but must be created first just as other weblogic client utilities. The documentation of the new plugin describes in detail how to create and use the plugin. In this blog I’ll summarize them (NB, I assume you’re a little bit familiar Maven).

In summary:

  1. Create the plugin.
  2. Deploy it to an artifact repository.
  3. Use the plugin in your project.

Create the plugin

The Weblogic JarBuilder is a utility to create a variety of client jars, now including the maven plugin.

Go to MW_HOME/wlserver_10.3/server/lib/ and issue the command:

<em>java -jar wljarbuilder.jar -profile weblogic-maven-plugin</em>.

This creates the plugin file weblogic-maven-plugin.jar.

Deploy the generated jar file to your Maven artifact repository.

You can install it in your local repository only, but it’s better to deploy it to your company repository and make it easily available for others to use too. Use the pom.xml file that’s included in the generated jar file (META-INF/maven/com.oracle.weblogic/weblogic-maven-plugin/pom.xml) because it includes the identification of the plugin and its dependencies. Extract the pom file and issue the following command:

mvn deploy:deploy-file -Dfile=weblogic-maven-plugin.jar
                       -DpomFile=pom.xml
                       -DrepositoryId=amisrepo-third-party
                       -Durl=http://reposerver/nexus/content/repositories/thirdparty/

(NB use your own url and repositoryId) or use the webinterface of the repository (e.g. Nexus) as you can see in this picture.

upload-maven-weblogic-plugin

Use the plugin in a project.

For this you need a maven enabled project. Since JDeveloper provides very limited support for Maven I assume that most ADF projects are not Maven enabled and that ant and / or the standard JDeveloper deploy deploy profile is used to build the war and ear file. This example expects the ear file to be present in the application’s deploy directory. Add the following pom.xml file to the application’s root directory (NB Use where your own identification and file name):

&lt;?xml	version="1.0"	encoding="UTF-8" ?&gt;
&lt;project xmlns="http://maven.apache.org/POM/4.0.0"&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;nl.amis.demo.xyz&lt;/groupId&gt;
  &lt;artifactId&gt;mysimpleapp&lt;/artifactId&gt;
  &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
  &lt;name&gt;mysimpleapp example application&lt;/name&gt;
  &lt;packaging&gt;pom&lt;/packaging&gt;
  &lt;build&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;com.oracle.weblogic&lt;/groupId&gt;
        &lt;artifactId&gt;weblogic-maven-plugin&lt;/artifactId&gt;
        &lt;version&gt;10.3.4&lt;/version&gt;
        &lt;configuration&gt;
          &lt;adminurl&gt;t3://localhost:7101&lt;/adminurl&gt;
          &lt;user&gt;weblogic&lt;/user&gt;
          &lt;password&gt;weblogic1&lt;/password&gt;
          &lt;upload&gt;true&lt;/upload&gt;
          &lt;action&gt;deploy&lt;/action&gt;
          &lt;remote&gt;false&lt;/remote&gt;
          &lt;verbose&gt;true&lt;/verbose&gt;
          &lt;source&gt;deploy/mysimpleapp.ear&lt;/source&gt;
          &lt;name&gt;mysimpleapp&lt;/name&gt;
        &lt;/configuration&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;
&lt;/project&gt;

You can now use Maven from the command line to deploy the earfile to weblogic:

mvn com.oracle.weblogic:weblogic-maven-plugin:deploy

Other commands that are available are: undeploy, redeploy, start-app, stop-app, list-app, update-app and help. These commands are similar to those supported by the command-line utility, weblogic.Deployer, which is actually not surprising because the Maven plugin is actually a wrapper around this weblogic.Deployer. Each command allows different parameters, as described in the weblogic-Maven-plugin documentation (by the way, the documentation also describes how to shorten the usage to mvn weblogic:deploy). Unfortunately, the plugin passes all arguments as-is to weblogic.Deployer and when an argument is not allowed, it raises an error and the process results in a build failure. This occurs for example with the source argument and the commands undeploy, start-app and stop-app. This means that you cannot use one configuration for all the commands (e.g. deploy and undeploy) and must use a workaround. Probably the easiest one is to provide the source argument as a command-line parameter like -Dsource=deploy/mysimpleapp.ear. Another option could be to use multiple profiles with different configurations for deploy and undeploy. I hope this will be fixed soon.

By the way, deployment to an earlier Weblogic, e.g. 10.3.3.0, works too and also to the JDeveloper embedded Weblogic.

Use the plugin in a Maven enabled project

Now, when your application is maven enabled I would recommend a slightly different approach and to use a separate deployment project that is solely aimed at deploying the application. Use the maven dependency plugin to retrieve the ear file from your company repository and define profiles for different servers. This provides better control of the deployment and allows different versions to be deployed to different servers. An ideal situation for a build server like Hudson. This is an example:

&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;project xmlns="http://maven.apache.org/POM/4.0.0"&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;parent&gt;
    &lt;groupId&gt;nl.amis.demo.xyz&lt;/groupId&gt;
    &lt;artifactId&gt;mysimpleapp&lt;/artifactId&gt;
    &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
  &lt;/parent&gt;
  &lt;artifactId&gt;mysimpleapp-deploy&lt;/artifactId&gt;
  &lt;name&gt;mysimpleapp deployment&lt;/name&gt;
  &lt;packaging&gt;pom&lt;/packaging&gt;
  &lt;properties&gt;
    &lt;app.deploy.version&gt;${project.version}&lt;/app.deploy.version&gt;
    &lt;ear.filename&gt;${project.build.directory}\mysimpleapp-ear-${app.deploy.version}.ear&lt;/ear.filename&gt;
  &lt;/properties&gt;
  &lt;profiles&gt;
    &lt;profile&gt;
      &lt;id&gt;local&lt;/id&gt;
      &lt;activation&gt;
        &lt;activeByDefault&gt;false&lt;/activeByDefault&gt;
      &lt;/activation&gt;
      &lt;properties&gt;
        &lt;wls.admin.url&gt;t3://localhost:7101&lt;/wls.admin.url&gt;
        &lt;wls.admin.username&gt;weblogic&lt;/wls.admin.username&gt;
        &lt;wls.admin.password&gt;weblogic1&lt;/wls.admin.password&gt;
      &lt;/properties&gt;
    &lt;/profile&gt;
  &lt;/profiles&gt;
  &lt;build&gt;
     &lt;plugins&gt;
       &lt;plugin&gt;
        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
        &lt;artifactId&gt;maven-deploy-plugin&lt;/artifactId&gt;
        &lt;version&gt;2.5&lt;/version&gt;
        &lt;configuration&gt;
          &lt;skip&gt;true&lt;/skip&gt;
        &lt;/configuration&gt;
      &lt;/plugin&gt;
      &lt;plugin&gt;
         &lt;groupId&gt;com.oracle.weblogic&lt;/groupId&gt;
         &lt;artifactId&gt;weblogic-maven-plugin&lt;/artifactId&gt;
         &lt;version&gt;10.3.4&lt;/version&gt;
         &lt;configuration&gt;
           &lt;adminurl&gt;${wls.admin.url}&lt;/adminurl&gt;
          &lt;user&gt;${wls.admin.username}&lt;/user&gt;
           &lt;password&gt;${wls.admin.password}&lt;/password&gt;
           &lt;upload&gt;true&lt;/upload&gt;
           &lt;action&gt;deploy&lt;/action&gt;
           &lt;remote&gt;false&lt;/remote&gt;
           &lt;verbose&gt;true&lt;/verbose&gt;
           &lt;source&gt;${ear.filename}&lt;/source&gt;
           &lt;name&gt;mysimpleapp&lt;/name&gt;
         &lt;/configuration&gt;
       &lt;/plugin&gt;
       &lt;plugin&gt;
        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
        &lt;artifactId&gt;maven-dependency-plugin&lt;/artifactId&gt;
        &lt;version&gt;2.1&lt;/version&gt;
        &lt;executions&gt;
          &lt;execution&gt;
            &lt;id&gt;copy-ear&lt;/id&gt;
            &lt;phase&gt;package&lt;/phase&gt;
            &lt;goals&gt;
              &lt;goal&gt;copy&lt;/goal&gt;
            &lt;/goals&gt;
            &lt;configuration&gt;
              &lt;artifactItems&gt;
                &lt;artifactItem&gt;
                  &lt;groupId&gt;nl.amis.demo.xyz&lt;/groupId&gt;
                  &lt;artifactId&gt;mysimpleapp-ear&lt;/artifactId&gt;
                  &lt;version&gt;${app.deploy.version}&lt;/version&gt;
                  &lt;type&gt;ear&lt;/type&gt;
                  &lt;overWrite&gt;true&lt;/overWrite&gt;
                  &lt;outputDirectory&gt;target&lt;/outputDirectory&gt;
                &lt;/artifactItem&gt;
              &lt;/artifactItems&gt;
            &lt;/configuration&gt;
          &lt;/execution&gt;
        &lt;/executions&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
   &lt;/build&gt;
  &lt;dependencies&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;nl.amis.demo.xyz&lt;/groupId&gt;
      &lt;artifactId&gt;mysimpleapp-ear&lt;/artifactId&gt;
      &lt;version&gt;${app.deploy.version}&lt;/version&gt;
      &lt;type&gt;ear&lt;/type&gt;
    &lt;/dependency&gt;
  &lt;/dependencies&gt;
&lt;/project&gt;

You can now perform a deployment with the following statement:

mvn package com.oracle.weblogic:weblogic-maven-plugin:deploy -Plocal

The package goal is to retrieve the ear file from the repository and the -Plocal activates the local profile and thus the arguments for the local weblogic. I have the maven-deploy-plugin configured to prevent this artifact to be deployed to the artifact repository (Note that for Maven the term deploy means deploying to the artifact repository, not the application server (I know, it’s a bit confusing)).

The argument app.deploy.version allows to override the version (that defaults to the project version), for example:

mvn clean package com.oracle.weblogic:weblogic-maven-plugin:deploy -Plocal -Dapp.deploy.version=1.5

The documentation also describes how to bind the plugin to a maven lifecycle phase, e.g. the install phase. This will deploy the ear file when the install phase is executed. This is actually a good idea, but since the install phase is executed quite often (mvn clean install is a normal way to execute the maven build lifecycle) it’s also good practice to use profiles to prevent continuous deployment. An often used practice is to bind deployment to the pre-integration-test phase and undeployment to the post-integration-test phase, but only when you actually perform an integration test. I’m not including examples for that, if you’re interested let me know.

To summarize. The weblogic-maven-plugin is a very valuable plugin for deployment to Weblogic by Maven, it performs great and I will certainly use it on my projects. I’m especially happy with deployment to earlier versions of Weblogic too.

The post Weblogic deployment using the Oracle weblogic maven plugin appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2011/01/26/weblogic-deployment-using-the-oracle-weblogic-maven-plugin/feed/ 0
Oracle Diagnostics Logging (ODL) for application development http://technology.amis.nl/2011/01/12/oracle-diagnostics-logging-odl-for-application-development/ http://technology.amis.nl/2011/01/12/oracle-diagnostics-logging-odl-for-application-development/#comments Wed, 12 Jan 2011 20:33:46 +0000 http://technology.amis.nl/blog/?p=10505 Logging is a very important aspect of application development as it offers run-time access to the behaviour and data of the application. It’s important for debugging purposes but also to investigate exception situations on production. The Java developer has a choice between logging frameworks but Log4J is probably the most used one. The usage is [...]

The post Oracle Diagnostics Logging (ODL) for application development appeared first on AMIS Technology Blog.

]]>
Logging is a very important aspect of application development as it offers run-time access to the behaviour and data of the application. It’s important for debugging purposes but also to investigate exception situations on production. The Java developer has a choice between logging frameworks but Log4J is probably the most used one. The usage is quite simple: grab a Logger, e.g. private static Logger log = Logger.getLogger(MyBean.class);, and then use that logger to log the actual message at the required level, log.debug(“This is a debug message”);. To print the logmessages, the Log4J is configured externally with a properties file that defines the location (e.g. console, file, database etc.) and the format of the logmessages. Other logging frameworks, like Java Util Logging, are used in a similar way. It’s actually a good practice to not use Log4J directly, but to use a wrapping or facade framework, that allows switching of the actual logging implementation itself. In the past that would have been Apache Commons Logging (ACL), but now SLF4J is commonly used because it doesn’t have the classloader issues of ACL and it provides some nice message formatting (and performance) features like log.debug(“{} says: This is a debug message”, user.getName());. By the way, the logging usage of Log4J is similar to SLF4J so you can easily switch by only replacing the imports statements.

This is all quite simple for the developer working in his IDE, but log management becomes more complicated for a deployed application. First of all, the configuration file must be loaded by the application server often on its classpath, e.g. by including it with the application or else by storing it at a specific location and configuration of the server. Maintainance is done by direct manual editing of the file. An important requirement is (easy) run-time adjustement of the configuration, especially changing the loglevel. Although possible with Log4J, this is not a trivial exercise. The same applies for access to the logfiles. With Log4J it’s easy to define your logfiles, but they are often not easily accessible.

It would be great if logging would be integrated with the application server and the management console and thus allow easy and understandable configuration by administrators and easy access to the logfiles. For weblogic this is available via the Oracle Diagnostic Loggings (ODL). Let’s have a look how we can leverage our logging and ‘connect it’ to ODL.

ODL is based on Java Util Logging (JUL), so you have to change the Log4J implementation for JUL which is easy when using a logging facade like SLF4J. Now that ODL can pick up your log messages, it’s time to configure the server. The configuration resides in the logging.xml file, that can be found at system11.1.1.3.37.56.60\DefaultDomain\config\fmwconfig\servers\DefaultServer (for the embedded WLS, but the standalone WLS has a similar location). You may edit this file by hand, but you can also use a console. Weblogic provides one but for the embedded Weblogic server this console is available via JDeveloper. The log view, normally located at in the bottom of JDeveloper has a small ‘actions’ drop down button at the right side that provides access to the log configuration.

jdev-logconfig

This opens the log configurator:

jdev-logconfig2a

This configurator contains two sections: The loggers and the Handlers. The loggers section defines all the loggers with their loglevel, comparable to the Log4J loggers. You can choose if you’d like to have them displayed as ODL level or as Java level. The handlers section defines the way the logging is handled, the format and the files, comparable to the Log4J appenders. You can easily add your own loggers to the list, manually or via a search option to select the right package or class. So it’s a good practice to use the fully qualified classname for your logger.

As the configurator actually edits the logging.xml file, you can edit it both with the server running or with the server off. The latter allows for persistent configuration, while in the former situation a transient mode is also available. By the way, the ODL configurator is dynamic and interacts with the server to detect already used loggers. It even picks up loggers inside loaded classes like Managed Beans. The configuration has immediate effect without restarting the server :-).

The loggers can be ‘connected’ to one or more handlers. In the console you cannot add a new handler, only select it. New handlers must be defined by direct editing of the xml. A few standard handlers are available, like a console and domain handler. The configuration is a bit trial and error since the documentation about types of handlers and the formatters is limited.

In addition to log configuration, JDeveloper (and the Weblogic console) also provides a log analyzer, available via the same action drop down or via the menu -> Tools -> Oracle Diagnostics Log Analyzer. This allows for easy searching of the logs. It provides some very neat features, especially the ‘Relate By Request’ option to gather all log messages from the same request.

jdev-loganalyze

With ODL logging becomes much more usable and accessible, both for the developers as well as for the administrators. This allows for a better use of logging for problem analysis and internal application management. Happy logging.

References:

The post Oracle Diagnostics Logging (ODL) for application development appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2011/01/12/oracle-diagnostics-logging-odl-for-application-development/feed/ 1
UKOUG Tech – EBS report http://technology.amis.nl/2010/12/19/ukoug-tech-ebs-report/ http://technology.amis.nl/2010/12/19/ukoug-tech-ebs-report/#comments Sun, 19 Dec 2010 21:54:30 +0000 http://technology.amis.nl/blog/?p=9429 Just as ODTUG Kaleidoscope and Oracle Open World, the UKOUG Tech-EBS is a great Oracle oriented conference. It’s held in Birmingham but the speakers and participants come from all over Europe and also from America. It covers much of Oracle’s product portfolio including Fusion Middleware development, the e-Business Suite, Server Technology, APEX and much more [...]

The post UKOUG Tech – EBS report appeared first on AMIS Technology Blog.

]]>
Just as ODTUG Kaleidoscope and Oracle Open World, the UKOUG Tech-EBS is a great Oracle oriented conference. It’s held in Birmingham but the speakers and participants come from all over Europe and also from America. It covers much of Oracle’s product portfolio including Fusion Middleware development, the e-Business Suite, Server Technology, APEX and much more with an impressive list of speakers both from Oracle as well as from other many companies. There were many high quality presentations and I’ve enjoyed them very much.

My main interests are ADF Fusion development and Application Lifecycle Management, so I spend most of my time in the ‘Design and Development’ and ‘Application Server and Middleware’ tracks and it had a lot to offer:

  • In the Middleware keynote: Application Server Platform Strategy, Mike Lehman from Oracle gave an overview of many things that are happening in the Application Server realm, both for Weblogic and for GlassFish. He talked about the positioning and the architecture of the Weblogic Suite as the combination of Weblogic Server, Oracle Coherence and JRockit. He also talked (off course) about the Exalogic Elastic Cloud as the platform for the enterprise and presented the four flavors: quarter, half, full and multi rack systems. We can expect a release of Weblogic soon (I suppose, together with the next JDeveloper release). Amongst others, will this release have ant and maven support, more JEE 6 (JPA 2.0, JSF 2.0, JAX-RS, SCA) and Spring 3 support. It will available an easy installation (probably a zip distribution) and we can also expect a lightweight, web profile, version later. The next version, expected late 2011, will have full JEE 6 support.
  • Simon Haslam gave a great presentation, One Year On: Field Experiences of Oracle Fusion Middleware 11g, about his experiences with Fusion Middleware 11g and especially with migrations from OC4J (iAS) to Weblogic. And although I’m more focussed on development, it’s a good thing to be aware of the administration aspects.
  • In ‘Total Visibility into Enterprise Java Applications with JRockit Mission Control and the WebLogic Diagnostic Framework’ we got an overview of the management and diagnostics features of JRockit. It’s really impressive what information can be retrieved from the JVM about running (and failing) applications, even to the level of method invocations.
  • Duncan Mills gave a two hour session, ‘An Introduction to Functional Patterns & Best Practices for Oracle/ADF’. This great session is based on internal trainings for the developers that are working on Fusion Applications. It covers experiences, best practices, tips and trics etc. on a whole range of subjects from coding to team organization, form taskflow to project organization and a lot more. A must for every ADF developer.
  • Guido Schmutz gave a very valuable presentation on ‘Best Practices for testing SOA Suite 11g based systems’. He discussed different strategies for testing SOA services and showed us the build-in support for unittests in the SOA Suite 11g. He also showed how SoapUI is used and how it can be used for mocking patterns. A great and interesting session.
  • Susan Duncan’s presentation, ‘Practical ALM, Testing and Build Management in JDeveloper’, is also recommended for everybody on ADF development. She is a strong advocate of good oragnization and management of the software development process (Application Lifecycle Management) and is as an Oracle product manager responsible for the activities on that subject. In my opinion, Oracle takes a very sensible approach by focussing on existing solutions instead of re-inventing the wheel. We got an overview of Oracle’s (JDeveloper’s) activities on that subject like TPC, SCM support (by the way, Git support is coming but not yet in PS3), Hudson, and much more. Actually, she had a very ‘brave’ audience, because it seemed like everybody was using SCM; that has been different on other occasions. However continuous integration didn’t seem a big issue with the audience, so more evangelism is needed…
  • Duncan Mills did another very interesting presentation, this time on customization: Mastering customization and personalization in Oracle ADF applications using Oracle Metadata Services (MDS). He demonstrated the different ways of customizing an ADF application, and it’s really amazing what’s possible. Almost everything can be customized, Business Components, Controller, UI, library usage etc. It seems like almost the whole application can be rebranded, presonalized and reorganized. And by using a centralized metadata service these customizations can even be managed ;-). The next session, Castle in the clouds – SaaS Enabling ADF Faces applications, in the same room was actually a very good follow-up in which my colleague Lucas Jellema actually demonstrated customization in SAAS enabled applications.
  • Testing seems to be an important topic nowadays as Sue Harper also demonstrated in ‘PL/SQL Development and Unit Testing with Oracle SQL Developer 3.0′. The coming release of SQLDeveloper (3.0) will contain better support for unittesting PL/SQL with e.g. so called data libraries, data preparation, lookups and exception testing. It will also include support for remote debugging.
  • Sten Vesterli had a good presentation on ‘Building Enterprise Applications with ADF’, in which he covers the aspects involved with developing an ADF application like team organization, application structuring, standards and best practices, team productivity etc. He is writing a book about it so keep an eye on it.
  • The last presentation of the conference was by Dominic Delmolino, Oil and Water: Development Procedures and Database Structures and while almost everybody was already on their way to the All Bar One, he had a great and inspiring presentation on Agile Database Development and how that improves the quality of your database applications.

Besides the presentation, the conference also hosts round-tables that offer an informal way to people to discuss certain subjects. The ADF Enterprise Methodology Group round table mainly discussed how to start ADF development and how to organize the development team and process. The participants share their experiences and ideas on how to improve this process. A very valuable way to match your own opinions and ideas with others.

This was my first visit to the UKOUG Tech EBS and I was very happy to participate with two presentations: ‘Webservice based ADF Business Components‘ and ‘Spend Some Quality Time on your ADF Fusion Application‘. I enjoyed the conference very much, had great discussions, met many very nice and interesting people. It’s great to see the commitment to Oracle technology and to ADF in special. I’ll certainly return next year.

The post UKOUG Tech – EBS report appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2010/12/19/ukoug-tech-ebs-report/feed/ 1
S313467 – The ADF Build Process Using Maven and Hudson http://technology.amis.nl/2010/09/22/s313467-the-adf-build-process-using-maven-and-hudson/ http://technology.amis.nl/2010/09/22/s313467-the-adf-build-process-using-maven-and-hudson/#comments Wed, 22 Sep 2010 22:23:59 +0000 http://technology.amis.nl/blog/?p=8601 This is a shameless plug for my presentation tomorrow, Thursday 23, at Oracle Open World: Can you build, test, and deploy your application within a minute? Do you have a fresh deployment when you arrive in the office? Are you being notified when the build fails? Can anyone in the team build and deploy the [...]

The post S313467 – The ADF Build Process Using Maven and Hudson appeared first on AMIS Technology Blog.

]]>
This is a shameless plug for my presentation tomorrow, Thursday 23, at Oracle Open World:

Can you build, test, and deploy your application within a minute? Do you have a fresh deployment when you arrive in the office? Are you being notified when the build fails? Can anyone in the team build and deploy the application? Can you automatically run your tests and create the build without user interaction? Do you know exactly which version has been deployed?

If your answer to most of these questions is “no,” then this session is for you. The session will show you how you can use Maven and Hudson to leverage your Oracle ADF development process. This session will show you how to: * Test, build, and deploy your application * Manage your libraries * Generate reports and documentation.

See you at Thursday, September 23, 11:00 | Hotel Nikko, Peninsula

The post S313467 – The ADF Build Process Using Maven and Hudson appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2010/09/22/s313467-the-adf-build-process-using-maven-and-hudson/feed/ 3
Update of TortoiseSVN must be done twice. http://technology.amis.nl/2010/09/02/update-of-tortoisesvn-must-be-done-twice/ http://technology.amis.nl/2010/09/02/update-of-tortoisesvn-must-be-done-twice/#comments Thu, 02 Sep 2010 10:06:58 +0000 http://technology.amis.nl/blog/?p=8405 The installer of version 1.6.10 (and 1.6.8) of TortoiseSVN has a bug that leads to an incomplete update. You must run the installer a second time and choose the second time the ‘Repair’ option for a proper upgrade. One of the symptoms of an incomplete installation is an exception when trying to compare office files [...]

The post Update of TortoiseSVN must be done twice. appeared first on AMIS Technology Blog.

]]>
The installer of version 1.6.10 (and 1.6.8) of TortoiseSVN has a bug that leads to an incomplete update. You must run the installer a second time and choose the second time the ‘Repair’ option for a proper upgrade. One of the symptoms of an incomplete installation is an exception when trying to compare office files due to missing Diff scripts in the Diff-Scripts directory.

The post Update of TortoiseSVN must be done twice. appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2010/09/02/update-of-tortoisesvn-must-be-done-twice/feed/ 0
Change the JDeveloper system directory http://technology.amis.nl/2010/08/29/change-the-jdeveloper-system-directory/ http://technology.amis.nl/2010/08/29/change-the-jdeveloper-system-directory/#comments Sun, 29 Aug 2010 15:51:11 +0000 http://technology.amis.nl/blog/?p=8387 De system directory is where JDeveloper stores the user specific settings, configurations and also (for 11g) the default domain of the embedded weblogic server. It uses the JDEV_USER_HOME environment variable to dettermine the location. If it’s not set is uses a default directory, for 11g on windows XP that’s <user dir>\Application Data\JDeveloper\systemXXX (XXX stands for [...]

The post Change the JDeveloper system directory appeared first on AMIS Technology Blog.

]]>
De system directory is where JDeveloper stores the user specific settings, configurations and also (for 11g) the default domain of the embedded weblogic server. It uses the JDEV_USER_HOME environment variable to dettermine the location. If it’s not set is uses a default directory, for 11g on windows XP that’s <user dir>\Application Data\JDeveloper\systemXXX (XXX stands for the exact IDE version, e.g. system11.1.1.3.37.56.60 for 11gPS2, 11.1.1.3.0) and for 10g that’s <JDev install dir>\jdev\system (no version included). Note that the Application Data directory contains a space. And although this doesn’t prevent JDeveloper and the embedded weblogic from proper functioning, it may sometimes leads to an issue, e.g. that diagnostics (adrs) cannot create an image.

To change this directory, just add the JDEV_USER_HOME environment variable and set it to the required directory, that must not contain a space in the name and when you restart JDeveloper it will use that directory. However, you’ll notice that JDeveloper will now consider itself an almost new installation, without your custom configuration and no default weblogic domain but with installed extensions. It should be able to copy the old systemXXX directory to the new location but didn’t work with me and upgrade settings from a previous version didn’t work too. So you have to do the configuration again, but luckily the weblogic default domain is created automatically with the first deployment.

Be aware that when you have multiple 10g installations you should not set the environment variable because 10g doesn’t add a version number to the system directory and you’ll end up with one directory for all the 10g installations which I’m sure will cause serious problems. In this case you should can change the directory per 11g installation by setting the ide.user.dir property (use forward slashes) in the <middleware install dir>\jdeveloper\jdev\bin\jdev.boot file or add it to the startup script with -J-Dide.user.dir=<some directory>.

The post Change the JDeveloper system directory appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2010/08/29/change-the-jdeveloper-system-directory/feed/ 0
Installing a subversion server http://technology.amis.nl/2010/08/27/installing-a-subversion-server/ http://technology.amis.nl/2010/08/27/installing-a-subversion-server/#comments Fri, 27 Aug 2010 14:55:36 +0000 http://technology.amis.nl/blog/?p=8384 Source control is off course an essential part of the development process and Subversion is an excellent system for that purpose. In the past, installation of subversion was a bit complicated because it involved several steps, an Apache webserver and not-so-accessible user management and repository configuration. However, nowadays installation and management can’t be easier, on [...]

The post Installing a subversion server appeared first on AMIS Technology Blog.

]]>
Source control is off course an essential part of the development process and Subversion is an excellent system for that purpose. In the past, installation of subversion was a bit complicated because it involved several steps, an Apache webserver and not-so-accessible user management and repository configuration. However, nowadays installation and management can’t be easier, on whatever platform you are either with Collabnet Subversion Edge or with VisualSVN Server.

For example, for Windows, download the excellent VisualSVN Server. Via a windows installer, an HTTP accessible subversion server is installed with a local management console (see image) for repository and user management. It’s up and running within 5 minutes. And the upgrades as just as simple as installing the new version.

visual-svn-mgt-console

Another option is to use Collabnet Subversion Edge. It’s available for Windows and RedHat (and thus also for Oracle Enterprise Linux). Installation on Linux is as simple as possible: untar the download, make sure JAVA_HOME is pointing to Java 6 and then run <install dir>/csvn/bin/csvn start. You access the web management console (see image) at localhost:3343 to manage the server, users, repositories and upgrades. One of the nice things is that it also includes ViewVc that provides a much more functional browser access. In case you don’t like all this fancy stuff, it als allows to install only the svn server; but why would you want that :-o?

collabnet-sv-edge-mgt-console

The post Installing a subversion server appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2010/08/27/installing-a-subversion-server/feed/ 0
Manage JDeveloper external libraries http://technology.amis.nl/2010/08/26/manage-jdeveloper-external-libraries/ http://technology.amis.nl/2010/08/26/manage-jdeveloper-external-libraries/#comments Thu, 26 Aug 2010 07:58:24 +0000 http://technology.amis.nl/blog/?p=8380 Although JDeveloper provides loads of libraries out-of-the-box, you often need other libraries in your application. You can easily add these libraries via the project properties. This provides two options: ‘Add Library’ and ‘Add Jar / Directory’. We normally us the Add Library option because it allows to include the JavaDoc and the source code. However [...]

The post Manage JDeveloper external libraries appeared first on AMIS Technology Blog.

]]>
Although JDeveloper provides loads of libraries out-of-the-box, you often need other libraries in your application. You can easily add these libraries via the project properties. This provides two options: ‘Add Library’ and ‘Add Jar / Directory’. We normally us the Add Library option because it allows to include the JavaDoc and the source code. However make sure that you check the ‘Deployed by Default’ checkbox or else the library will not be included on the classpath and the application will fail with a java.lang.ClassNotFoundException. By the way, we never use Tools -> Manage Libraries because we only use project libraries and never the user or system libraries, because they introduce local dependencies that need to be maintained at every workstation seperately.

add-jdev-ibrary

The post Manage JDeveloper external libraries appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2010/08/26/manage-jdeveloper-external-libraries/feed/ 0
Oracle Team Productivity Center http://technology.amis.nl/2010/07/12/oracle-team-productivity-center/ http://technology.amis.nl/2010/07/12/oracle-team-productivity-center/#comments Mon, 12 Jul 2010 20:52:24 +0000 http://technology.amis.nl/blog/?p=8249 ‘Oracle Team Productivity Center (TPC) is an Application Lifecycle Management (ALM) tool that enables software development teams to collaborate and work productively together when developing applications using JDeveloper.’ (OTN TPC page) TPC provides unified access to different ALM repositories from within JDeveloper and it allows to define relations between the so-called work-items in these (separate) [...]

The post Oracle Team Productivity Center appeared first on AMIS Technology Blog.

]]>
‘Oracle Team Productivity Center (TPC) is an Application Lifecycle Management (ALM) tool that enables software development teams to collaborate and work productively together when developing applications using JDeveloper.’ (OTN TPC page)

TPC provides unified access to different ALM repositories from within JDeveloper and it allows to define relations between the so-called work-items in these (separate) repositories. It consists of a central repository, a JDeveloper extension and a set of connectors to other systems. Currently, connectors to Jira, Bugzilla, Rally Software and Microsoft Project Server – task management are available. This means that we can, for example, access and work on our Jira issues from within JDeveloper. In addition it provides a task service and a Google Talk client for JDeveloper.

TPC is installed on an application server, e.g. Tomcat or Weblogic and requires a database to store its data. It also requires the connectors to be installed, although they are not really used to connect to the other systems. The connection to the repositories is made from JDeveloper, so you need the connectors and TPC extension.

The TPC architecture:

TPC architecture

The installation process is actually quite easy, although there are a few issues.

Requirements

  • Java 6
  • An application server
  • A database user with basic privileges.

Installation (or upgrade) in a nutshell. A more elaborate installation manual can be found on OTN:

  1. Install Team Productivity Center.
    1. Start the TPC installer with – java -jar tpcinstaller.jar, which launches the installer (actually, I discovered today that double click also works :-)) and follow the instructions.
    2. You can both install tpc and the connectors, but I had a problem with installing the connectors (see below) so better install only the server
    3. Provide the deployment directory of the application server, e.g. C:\server\tomcat\webapps
      1. Note, the update on Tomcat 6.0.20 doesn’t replace the current webapp. After you finish the tpc installer, stop Tomcat, remove the webapps\otpc directory and restart Tomcat.
    4. Provide the database information
    5. Define the admin user.
    6. Finish
  2. Install connectors on the TPC server
    1. I was not able to install the connectors via the Extension Update process, so I had to download them first from OTN (they’re next to the tpc download).
    2. Launch the installer again and follow the instructions.
  3. Install the TPC extension in JDeveloper using the standard ‘Check for update’ wizard.
  4. Install the connectors in JDeveloper using the standard update wizard, but again use the previously downloaded files (they ar both for the server and JDev).
  5. You’re now ready to use the Team Navigator in JDeveloper.
    1. Note, there is an issue with version numbers with the latest TPC extension. When you try to connect to the server from JDeveloper (see below) and you’re presented with the message ‘TPC-60013: TPC client version “11.1.1.3.37.56.60” is not supported. Supported version is “11.1.1.3.37.56.67” or higher. Please use Check for Update to upgrade your client.‘ you have to manually change the version in the TPC server database table otpc_version into 11.1.1.3.37.56.60.

Before you can use any of the connectors, for example the Jira connector, the Team Center must be configured with team, user, role and repository information. This is all done via JDeveloper:

jdev-connect2teamserver

When first time user, you connect with the administrator account that’s created during the installation.

jdev-tpc-admin

I will not go into much detail because this is covered in the OTN tutorial ‘Getting started with TPC‘. It demonstrates how to organize the TPC and how to work with workitems, which is the base concept of TPC. It’s a representation of something in a repository (e.g. an issue in Jira) so that they can be handled in a uniform way. Make sure that when you use the Jira connector that Jira (and possibly other systems too) must be configured to ‘Accept remote API calls’.

For me the most interesting part is access to Jira issues from within JDeveloper. That functionality is definitely very handy and also works as expected. I can update my issues, add comment, change status etc, although I cannot create one. TPC also allows to associate (Java) code to a Jira issue (or more), or other workitems like tags or tasks. This is done at commit time and is stored in the TPC repository:

jdev-associate-code-with-workitem1 jdev-associate-code-with-workitem2

Unfortunately, it doesn’t add the issue key to the commit message, which Jira uses to associate subversion commits with its issues, so the information is only available in TPC and not in Jira and you have to do that yourself. This would be a great enhancement…

There’s a lot more available in TPC, but I haven’t been able to use it and give my opinion about it. I’m also not a user of Bugzilla, Rally Software and MS project server so I cannot elaborate on that too. I’m looking forward to integrate other systems with TPC, for example Hudson or Sonar to have direct feedback about the jobs or to even start it directly. If you want to make your own connector, a developers kit is available with an example and little documentation. I’ve started working on a Hudson connector, but haven’t managed it yet. I’ll keep you posted.

Summary

I think that the Team Productivity Center is a valuable addition to the development environment. It allows for a central, one-time, configuration of all the repositories like Subversion and Jira to teams and it’s users. It’s also very handy to have direct access to the Jira issues from within JDeveloper and to work on them. That’s for me the killer feature of TPC.

Although I like the idea that items, like code, tasks, issues, tags etc. can be related to each other, I’m not sure if it’s very useful in practice, because it’s only available from within JDeveloper, which is not a good tool for project managers. Jira already allows for integration with Subversion and other systems, but that’s not used in TPC.

Although, I haven’t had any project experience with TPC, I’m not yet completely convinced. It’s great to access Jira or another repository from with JDeveloper, but for this an extension could be enough and  as mentioned before I’m not sure about the associations. I’m interested how TPC will develop and what place it will find in the development process.

The post Oracle Team Productivity Center appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2010/07/12/oracle-team-productivity-center/feed/ 4
An evening about Maven http://technology.amis.nl/2010/05/26/an-evening-about-maven/ http://technology.amis.nl/2010/05/26/an-evening-about-maven/#comments Wed, 26 May 2010 19:55:47 +0000 http://technology.amis.nl/blog/?p=8061 Recently we had a great session at AMIS about Maven, presented by Jason van Zyl, founder of the Apache Maven project and CTO of Sonatype. He gave us an overview of the new Maven 3 and other projects they are working on. In addition he gave us an insight in the world of Maven. For [...]

The post An evening about Maven appeared first on AMIS Technology Blog.

]]>
Recently we had a great session at AMIS about Maven, presented by Jason van Zyl, founder of the Apache Maven project and CTO of Sonatype. He gave us an overview of the new Maven 3 and other projects they are working on. In addition he gave us an insight in the world of Maven. For example, last three years, the usage of the Maven central repository has been doubled every year, with about 4 million unique IP addresses in 2009. They’ve also reorganized and improved the process for uploading artifacts to Maven central to a self service approach, using the staging function of Nexus Professional.

We can expect Maven 3.0 to be released at the end of june. Although it will hardly contain any new features, it’s a very exciting release because they’ve overhauled much of the the inner workings, fixed many (about 1400) issues, improved stability, consistency and speed and made sure it’s 100% backwards compatible (the pom’s modelVersion is still 4.0.0). It actually passes more Maven 2 checks than Maven 2 itself ;-). The poms are also better validated, e.g. for duplicate dependencies and missing plugin versions. Plugin handling has been changed and support for Maven 1 repositories and external profiles.xml is removed. Jason almost recommended to use Maven 3 Beta. So basically, what they did was to pave the desire lines.

Only with version 3.1 will we see new features like :

  • Polyglot Maven is a way to leverage Maven through other jvm languages (currently Scala, Groovy, YAML, Clojure, XText and JRuby). Currently it allows for ‘merely’ a different pom format, but these languages will have full access to Maven’s internals and thus have a way to interact with or extend Maven.
  • Maven Shell is a CLI interface for Maven that enabled faster turn-around, and a more intelligent interaction with repositories and projects
  • Mixins provide a way to reuse common configurations. With Maven two this was only possible via inhertance
  • Global exclution of artifacts
  • New settings.xml options like security management, support for repository manager instead of using the mirrorof and better support for multiple environments.
  • New plugin API
  • Target platforms
  • Reworked site and reporting generation
  • Google Guice as ioC container instead of Plexus.

In the second part of the session, Jason talked about the other projects that they are working on, like:

  • Nexus repository manager
  • Mercury, for artifact resolution
  • Tycho, for building Eclipse plugins and OSGI bundles with Maven
  • Proviso, for provisioning, incrementally, run-time environments like Tomcat and JBoss.
  • M2Eclipse provides Maven integration in Eclipse. Version 0.10 has been released and erverybody was urged to upgrade, especially from 0.9.8.
  • Hudson improvements like security, REST access, workflow, provisioning, release management

A last note was about source control. At Sonatype they’ve moved completely to JGit as they consider that superior to Subversion, especially the simple branching and merging together with the Gerrit code review system.

It was a great session with more than 70 people attending. We got a very good overview of the Maven landscape. As a long time Maven user I’m very excited by all these activities so I installed the Beta version of Maven 3 and indeed, my builds run immediately without any changes to the pom (indeed backwards compatible!) but what’s more important, they run about twice as fast. Can’t wait for the release.

The post An evening about Maven appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2010/05/26/an-evening-about-maven/feed/ 1