EnterpriseJava70

J2EE Development Simplified in NB 7.0

Author: DavidKonecny
Version: draft 0.0.5

Disclaimer: The content of this NetBeans development wiki page is intended for pre-planning purposes ONLY. The development, release, and timing of any feature or functionality described here should not be treated as final, and is subject to change at any time at the sole discretion of Oracle. For information about NetBeans software releases please visit the NetBeans Roadmap or the NetBeans Release Planning wiki.


Contents


Motto: Everything just works

Not according to feature coverage matrix but on real life usecases spanning several EE specifications. For example user is developing a service which can be used via web browser or REST API and the service stores some data in a database and communicates with some other web services and EJBs. The IDE modular architecture and fact that separate Java EE specification are implemented by different teams should not have any impact on user's experience. Features from different modules should seamlessly cooperate and complement each other.

Another aspect to pay attention to in this release is how well features work outside of compile-debug cycle of single user. For example an IDE feature can generate a unit test for an EJB and such test can be executed. But can such project be checked into versioning control system and just run if checked out by a continual builder or different team member? how will an embeddable EJB container be provided? Features should be look at in broader scope and wherever applicable they should just work.

Following chapters will discuss individual IDE areas in detail.

Conventions

Priority is indicated as:

  • P1 (Must-Have) - essential in order to for a feature to work
  • P2 (Should-Have)
  • P3 (Nice-To-Have) - anything what would be nice to have but can be implemented/enhanced in future releases
  • P4 (Future) - would be nice for future releases, but definitely not something to pursue in this release

Maven and Ant

In theory Maven and Ant are just build harnesses and therefore user should not notice any difference during daily coding in IDE regardless of what build system is used.

On the other hand it is not practical nor desirable to abstract IDE user from build harness. Ant and Maven are different and have their own specific features that should stay accessible to user. There is also no practical need for example to enable interproject dependencies between Ant and Maven - possible but not a good practice IDE should suggest to users.

However, most of the IDE features should work regardless of underlying build system.

Maven

Owner: David Konecny

EE1.1.1: [P3] improve handling of server selection in EE Maven project types

EE1.1.2: [P1] resolve problem with running unit tests in Maven EE 6 project - stripped Java EE 6 jars are unusable WONTFIX (user must use EE 6 APIs from whatever application server they are using)

EE1.1.3: [P1] make sure packaging of EE Maven projects is correct (EJB jars are not packaged in WAR; libraries are stored in EAR/lib; etc.) DONE

EE1.1.4: [P1] make sure deployment/debugging of EE Maven projects works as in Ant based projects (AppClient on GFv3; Weblogic; standalone EJB/AppClient modules deploytment; etc.) STARTED (standalone deployment was fixed in Ant projects but not yet in Maven)

EE1.1.5: [P2] EJB embeddable container support works (in different server scenarios) 187585

EE1.1.6: [P2] support for annotation processing and JPA annotation processor

EE1.1.7: [P1] Deploy on Save works in EAR project

EE1.1.8: [P3] misc small issues:

  • when server deployment fails Maven does not report it and stays in "deploying..." mode
  • remote interface project selector should not list Ant based projects for Maven project - Maven cannot have dependency on Ant based project
  • EAR Maven should not have sources, compilation, etc. (in project logical view, proj props, ...)
  • JSF wizard panel should pre-select JSF version according to server (if available)
  • sources panel in project properties should list web application folder if one is present
  • in proj properties I cannot see which fields are editable and which are readonly. Perhaps problem of look and feel. Eg. fields in General panel are editable, but fields in Sources are not

Ant

Owner: David Konecny

EE1.2.1: [P3] resolve sharability issues:

  • make option to refer to a server via single property available in UI (instead of making server sharable by copying its jars user can refer to a server installation via single property)
  • sharability is broken for jars which have dependency on other jars (via ClassPath attribute in manifest) - these required jars are never made sharable

GlassFish and Weblogic

Similar case like Ant and Maven. Most of the time the user should be abstracted from the underlying server and all IDE features should just work regardless of server. But there will always be differences between the servers and user should have access to these server specific features.

GlassFish

Owner: Vince Kraemer

See GlassFish 3.1 planning document

Weblogic

Owner: Petr Hejl

EE2.1: Weblogic server libraries:

EE2.1.1: [P1] deployment Done

EE2.1.2: [P1] classpath handling Done

EE2.1.3: [P2] sharability


EE2.2: Unit tests for Weblogic plugin


EE2.3: Enhance Weblogic support - high priority

EE2.3.1: [P1] directory-based deployment, deploy on save (i.e. fast redeploy without server restart) 188723

EE2.3.2: [P2] FastSwap (need to clarify the exact meaning of this)

EE2.3.3: [P2] enable experimental EE 6 support for the upcoming preview release of Weblogic 11g R2

EE2.3.4: [P2] profiling Done


EE2.4: Enhance Weblogic support - medium priority

EE2.4.1: [P2] server properties configuration dialog 188669 Done

EE2.4.2: [P3] server resources viewer under the WebLogic node in the Services tab 188722 Done

EE2.4.3: [P2] link to source from output 186096 Done

EE2.4.4: [P3] WebLogic registration improvements 188688,188689,188690,188872 188690,188872 are done


EE2.5: Enhance Weblogic support - low priority

EE2.5.1: [P4] support for authoring and using deployment plans

EE2.5.2: [P4] GUI editor for WebLogic deployment descriptors


EE2.6: Web Services support

  • [P3] support JSR109 for WebLogic 187597,187599 Done
  • [P3] support WS Tester for WebLogic 187598 Done
  • [P3] support JAX-WS Client for WebLogic 187931 Done
  • [P3] support WS from WSDL for WebLogic 187932 Done


EE2.7: More random ideas

  • Anything needed for registering JSTL per this document?
  • JMS resources, message-driven beans
  • WS-* standards (WS-Policy, WS-Atomic Transactions, WS-Security, WS-Reliable Messaging, ...)
  • Some out of the box database (Derby) set up, and starting up Derby at server startup
  • HTTP monitor integration with WebLogic
  • Automatic setup of the WebLogic Maven plugin, plus more integration
  • JPA 2.0 support (with WebLogic 10.3.4)

Deployment

Owners: David Konecny, Petr Hejl, Vince Kraemer

All common deployment scenarios must work. Regardless of target server - for example both Glassfish and Weblogic have their own proprietary deployment descriptor fiiles. Regardless of whether EE Application or EE Module is being deployed - for example each server is handling deployment of standalone EE modules and their required libraries differently. Regardless of EE technology being used - for example Weblogic requires Weblogic specific version of JSF libraries while GlassFish not. Files being deployed should follow EE specification requirements or best practice - automaticaly package required libraries which are not EE module into EAR's lib directory; place remote interfaces of EJBs into dedicated reusable library project.

EE3.1: [P2] fix standalone EE Module deployment - Done

EE3.2: [P2] GlassFish vs Weblogic deployment (eg. appclient deployment to GlassFish is hardcoded in AC project type) - WONTFIX (AppClient support will stay as is)

EE3.3: [P3] project sharability and server sharability (can it be improved?)

Richer EE/Web support

JSF

Owner: Alexey Butenko

EE4.1.1: [P2] ADF components

EE4.1.2: PrimeFaces

  • [P1] Add library to Netbeans - Done
  • [P3] Palette Items, insert code actions?
  • [P3] Sample project like showcase or subset of it

EE4.1.3: [P2] JSF RI: Bundling the JSF implementation in WAR archive for Maven projects does not work on WebLogic 175130 - Done

EE4.1.4: Faces Config

  • [P3] Show configuration deprecated tags in faces-config.xml 177197

EE4.1.5: AJAX and JSF (TBD)

  • [P3] enable JavaScript code completion for scripts added with h:outputScript
  • [P3] f:ajax smart code completion

CDI

Owner: Denis Anisimov

EE4.2.1: [P3] refactorings aware beans.xml

EE4.2.2: [P3] class code completion in beans.xml

EE4.2.3: [P2] add support for find Event Producer/find all Observers (similar to the current support "Go to Injectable/Inspect Injectables"; perhaps already available?) Done

EE4.2.4: [P3] support for portable extensions (wizards, ambiguous and unsatisfied dependencies checks, etc.)

EE4.2.5 [P3] dependency graph visualization

EE4.2.6 [P2] Hints for creating qualifier types (187946) Done

EE4.2.7 [P2] underline (with red wiggly line) injection points which are ambiguous or there is nothing to inject

EE4.2.8 [P2] underline (with red wiggly line) CDI managed class which does not have default constructor (public??). CDI manages objects by proxying to them and in order to do that objects must have default constructor. Similarly underline:

  • any final fields being used
  • class if it is final

EE4.2.9 [P2] JAX-RS resource class generated by NetBeans should be automatically annotated by @RequestedScope annotation if CDI is enabled in that project see 191997 (done)

EE4.2.10 [P2] underline (with red wiggly line) other possible errors with CDI usage:

  • User could miss some required annotations when custom Qualifier is defined ( @Target @Retention )

or put bad values for this annotations.

  • @Observes and @Produces usage for the same method
  • Initialization for field which is injection point

EE4.2.11 [P2] underline (with red wiggly line) any references to CDI code in a project in which CDI is not enabled; see 179923 - perhaps in this case beans.xml should be created automatically for user?

Web Services

Owner: Milan Kuchtiak

EE4.3.1 [P1] SOAP: unintrusive JAX-WS support 186299 (2 days) Done

EE4.3.2 [P3] SOAP: support for HTTP GET/POST bindings 174326 (5 days)

EE4.3.3 [P2] REST: JAXB annotations in Entity classes 181161 (5 days) Done

EE4.3.4 [P1] REST: unintrusive REST support 168154 (2 days) Done

EE4.3.5 [P2] REST: extend Test Resource capability 187945, 159073 (10-15 days)

Other ideas:

EE4.3.X merge Rest Services and Web Services project logical nodes together; in general make sure that the same UI is used regardless of service technology, for example replace 'Test Rest WS' in project's node with more generic "Test WS" action which works for in both service type cases

Bean Validation

Owner: Alexey Butenko

EE4.4.1: [P2] new wizard for creating constraint. Ask just for constrain package and class name and generate constraint for (METHOD, FIELD and ANNOTATION_TYPE). Message can be defaulted to package name and @Documented should be set. The wizard should have checkbox for "Generate Validator class" which if checked shows two editable fields: validator class name which is by default constraint class name + "Validator" and field for type which will be used to generate validator class. Both fields are mandatory. Wizard would generate constrain annotation and validator class. - 188823 Done

EE4.4.2: [P2] add validation-configuration-1.0.xsd schema to catalogue and add file wizard for validation.xml Done

EE4.4.3: [P2] add validation-mapping-1.0.xsd schema to catalogue and add file wizard for mapping constrains file. Created file should be registered in validation.xml automatically. Done

  • add wizard Done
  • automatically register created file in validation.xml Done

EE4.4.5: [P3] add code template for "ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); validator = factory.getValidator();". Perhaps there should be a general template for the same pattern for different factories (XML parser, etc.)

EE4.4.6: [P2] add editor hints for common mistakes. See here for inspiration

EE4.4.7: [P2] generate validation constrains for JPA entities when they are generated from a database (eg. NotNull, Max, ...)

Notes:

  • for now do not implement any meta model for XML configuration files

JSP

Owner: Tomasz Slota

EE4.5.1: [P1] fix issue #158716 (possibly depends on EE4.5.2)

EE4.5.2: [P3] architecture improvements: migrating the JSP parser to the Parsing API

EE4.5.2: [P3] architecture improvements: replacing the old syntax elements with a new model built on top of lexer

EE4.5.3: [P3] update the embedded JSP parser

EE4.5.4: [P3] improve maintainability by adding more stable tests

Spring

Owner: Alexey Butenko

EE4.6.1: : Spring 3.0: improvement for form controllers:

  • [P3] wizard for annotated controllers with different options
    • options like @RequestMapping,@RequestParam, @ModelAttribute
    • update config file with context:component-scan tag to detect annotated controllers

EE4.6.2: [P3] Spring Bean wizard

Expression Language

Owner: Erno Mononen

EE5.1: [P2] Expression Language editor infrastructure improvements. Needed to be able to provide refactorings and more reliable code completion/navigation. In other words, this needs be done before any of the following items.

  • new parser that produces AST for EL (use the impl from https://uel.dev.java.net/) Done
  • make EL a CSL language and use Parsing API for indexing Done

EE5.2: [P2] Refactoring support for Expression Language.

  • Find Usages, Rename the most important ones, others if time permits Done (find usages and rename, no others)
  • JSF support P2, JSP P3 (although the same EL infrastructure can be used for both it requires work to integrate it, hence the focus on JSF first) Done (for JSF, *not* for JSP)

EE5.3: [P2] add intelligent hints/TODOs

  • syntax checking for EL Done
  • checks for invalid bean names Done for identifiers, properties and methods
  • again, JSF first then JSP (both above done for JSF only)

EE5.4: [P2] Code completion / navigation improvements

  • utilize the aforementioned new EL infrastructure in CC and go to decl Done

Improve development of DB based Web Applications

Owner: Sergey B. Petrov

EE6.1: [P3] JPA wizards: faster reading of tables by filtering by name (or may be different layers for structure access (names first, information then)

EE6.2: [P2] Add support (recognize) for more jpa2.0 providers

  • EE6.2.1: Done openJPA
  • EE6.2.2: toplink (may not be done as it's almost same as eclipselink except some additional jars)

EE6.3: [P2] Improve update/recreate/new for entity from db (may be considered both a feature development and an issue fixing)

  • EE6.3.1: Better update support (fix issues and support update for more elements), currently only new columns creation works properly. Smart updates (i.e. without any merging/update ui if possible)
    • EE6.3.1.1: Done(but see 6.3.1.6, it's just replace old with new now) Update column type if necessary
    • EE6.3.1.2: Update Id Class (both if id name need to be changed and if columns in id class are changed)
    • EE6.3.1.3: Update mappings
    • EE6.3.1.4: Update JoinColums (type?,columns?)
    • EE6.3.1.5: Update JoinTable
    • EE6.3.1.6: Analyze if elements need to be removed and comment (if api allow), include removed from db columns and old setters/getters.
  • EE6.3.2: Done(But may need design review, default values review) Usability - "recreate all", "update all", "new all" buttons, filter 'create new only' or 'updates only' in 'add all')

EE6.4: [P2-3] Recognize/support derived ids

  • EE6.4.1: DoneIssue 181464
  • EE6.4.2: Check other places where id can't be relation and relation can't be id and may cause problems
  • EE6.4.3: Use derived ids in entity from db generation where appropriate

EE6.X: [P3] Continue on work started in http://wiki.netbeans.org/EnterpriseJava69

Testability

Owner: TBA

EE7.1: [P2] embeddable EJB testing works in all scenarios

EE7.2: [P2] testing of CDI based code works out of box


More Helpful IDE

Owner: Erno Mononen

EE8.1: [P3] new EE samples

  • maybe something that demonstrates JSF/CDI/EJB together

EE8.2: [P3] Improved navigation between various application components, e.g. quick navigation between views/controllers/models.

EE8.3: [P3] warn user about usage of optional Java EE packages - issue 178757

Documentation

EE9.1: [P2] WebLogic tutorial

EE9.2: [P2] publish some tutorial illustrating bean validation (task for DOC team; can be done even for NB 6.8 + 6.9)

EE9.x: [P2] new EE tutorials

Other ideas

  • OSGi webapps
Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo