Jaffa Logo
Home Contact Us FAQs Site Map
Source Forge: Homepage Bugs @ Sourceforge Mailing Lists @ Sourceforge Task Manager @ Sourceforge CVS @ Sourceforge
Jaffa Site
Jaffa Runtime
Jaffa RAD
Frequently Asked Questions



On What is Jaffa Based?

JAFFA is based on the need to rapidly build business applications on Java Technologies, without paying for expensive architecture and development tools, and the desire to avoid re-inventing the wheel by harnessing any existing open source projects that provide aspects of this final architecture. To read more on this, see our Motivation Statement

For more information on the related open source projects see our acknowledgements page.

Do I Have To Use All Layers Of The Architecture?

Simply No, use as much or as little as you need. There are some dependencies between specific parts of the application, like application security needs the component architecture, but things like the widgets, the presentation layer as a whole, the middleware, the persistence engine, etc can be used independently, or replaced by an alternative.

If you do find better alternatives, please e-mail us, as it might be worth us using your alternative as well!

What about Netscape Support?

As of Jaffa v1.2.0 all widgets now support IE 5.5/6.0 and Netscape 7.0 and Mozilla 1.3. All previous versions of Jaffa (v1.1, 1.0) only has IE support. In addition we have the new 'Tag Library User Guide' where we indicate per widget its browser compatability as well an pointing out and browser specific behaviour.

In general we have noted that the Netscape and Mozilla browsers render pages faster (on complex finder screens), but IE is much faster and javascript processing (ie columen sorting in several times faster). The choice is now yours!

What Databases Are Supported?

Although internally we have been using this against an Oracle 8i/9i database, our JDBCEngine implementation can use any JDBC 2.0 compliant driver. Although for a robust high performance system we recommend sticking with Drivers that have a Type 3 or 4 JDBC implementation.

We have now done some more detailed testing with other databases. Click here for details

If you are successfully using this with a different database, let us know and well keep a list of what databases people have tested JAFFA against.

For more information on the tested databases and the supported features, check the comments at the start of init.xml in UnitTests.

Is JAFFA J2EE Compliant?

Jaffa v1.2.0 has now be retested under the latest Servlet 2.3 and JSP 1.2 reference container (Tomcat). We have also upgraded to all the current releases of the related java and open source projects, and refactored accordingly (more details of this are in the release notes).

Can I just use bits of JAFFA?

Of course, we have engineered this to provide as much plug and play as we can. For example, the widget architecture can be used without all of the component framework if you want to. If you don't want to use the middleware because your building a web server only application, you can. If you want to use a different persistence layer, you can. The only part of the architecture that are difficult to de-couple is the integrated component and application security architecture. The data security architecture is completely independent as well, if you choose to use it.

Note: One thing to keep in mind, is that our 'out-the-box' patterns for rapidly building your application are based on the full architecture, so you'll probably need to re-factor them to cope with any architecture changes you make.


Why are my widgets not getting updated in the Grid (or Table/UserGrid)?

On cause of this is that you have used an '_' (underscore) in on of the widget names. Internally we give each widget an explicit ID in the HTML DOM, for example user_userDetailMaintForm_rolesGrid_0_Column1_checkbox1, where user_userDetailMaintForm is the form name, rolesGrid is the name of the grid widget, 0 is the row, Column1 is the column name and checkbox1 is the actual widget field name. The field name is set when you call GridModelRow.addElement(widget name, widget model). If you were to use the name checkbox_1 instead, when the name is parsed internally in the Java script it gets the field name from the last '_' onwards, it therefore assumes the column name is Column1_checkbox and the field name is 1.

Example of what is posted back from the form to update the model
<widget row="0" column="Column0_checkbox" field="0">true</widget>
<widget row="0" column="Column1_checkbox" field="1">true</widget>
<widget row="0" column="Column2_checkbox" field="2">false</widget>
<widget row="1" column="Column0_checkbox" field="0">false</widget>
<widget row="1" column="Column1_checkbox" field="1">true</widget>

Conclusion: Don't use '_' (underscores) in your inner widget field names!


When does the preUpdate() trigger get fired?

The preUpdate() trigger on a domain object gets fired when the UOW.update(..) method is called on that domain object. The one exception to this is that if nothing on the domain object has actually been updated (ie object.isModified() == false), then the domain object won't be updated, and hence the preUpdate() trigger will not be fired.

Note : If you are using the latest domain object pattern, then when the updateXxx() method is called on a field, it only flags the object as modified if the value passed in, differs to that already in the object. So you really have to change a value to cause the preUpdate() trigger to be fired.



Where do i get the oracle12.jar from?

These should be included as part fo your oracle install. Try looking at $ORACLE_HOME/jdbc/lib/classes12.jar (you may find classes12.zip instead). In either case just rename it to oracle12.jar for use in JAFFA

If that fails try downloading them from http://www.oracle.com

MS SQL Server 2000

Where do i get the driver JARs from?

If you want the microsoft ones, try this link http://www.microsoft.com/downloads/details.aspx?FamilyID=4f8f2f01-1ed7-4c4d-8f7b-3d47969e66ae&DisplayLang=en

Note: This is the one we have tested JAFFA against

There are other versions available from 3rd parties.

  • iNet Software - http://www.inetsoftware.de/English/Produkte/JDBC_Overview/ms.htm
  • Data Direct - http://www.datadirect-technologies.com/products/jdbc/compare/jdbcbenchintro-.asp
  • JSQLConnect from NetDirect - http://www.j-netdirect.com/JSQLConnect/JSQLFeatures.html
  • jTSD Open Source Project - http://jtds.sourceforge.net/

Why do i need to prefix all tables with the owner name (select * from myowner.customers)?

This seems to be needed if the owner is not 'dbo'. So the simple fix is to make 'dbo' the owner of all your tables. This can be done with the following statement

SQL Source
sp_MSForEachTable 'sp_changeobjectowner ''?'',''dbo'''
(Ref: http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=398&lngWId=5)

Otherwise just include the owner name as part of the table name in the XML mapping files.

In the store procedure pattern you have the example code for Oracle, what about SQLSever?

In the stored procedure pattern you are left to implement the prepareCall().

Generated Domain Object with Stored Procedure Pattern
    /** Returns a String having the call to the StoredProcedure.
     * @return a String having the call to the StoredProcedure.
    public String prepareCall() {
        // Add the call to the Stored Procedure
        // @todo : Return the String of the type "{call ke_vcpkg1.getvoucher(?,?,?)}";
        return null;

The example return string "{call ke_vcpkg1.getvoucher(?,?,?)}" is an example for oracle, an equivelent for SQLServer would be "execute getVoucher ?,?,?"

File: faqs.html, Last Modified: Tue Jul 15 2003 at 4:36:21pm. This site has been built using PPWIZARD