Friday, October 26, 2007

Dev Thoughts » Blog Archive » JMX meets Log4J

Dev Thoughts » Blog Archive » JMX meets Log4J

Today, after repeating this routine a few times, for the first time I told myself “There must be a better way…”. It didn’t take me long to feature out that spring’s jmx support and jdk 5 practically hand me the solution to this problem on a silver plate - Just create a simple management bean that controls the log levels for categories, export this bean as an MBean using spring superb JMX’s support, and use jdk5 jconsole application to manage the logging levels. Here’s a quick recipe:

1. Create the management bean:

public class Log4jMBean {

public void activateInfo(String category) {

public void activateDebug(String category) {

public void activateWarn(String category) {

public void activateError(String category) {

public void activateFatal(String category) {

2. Export the bean in the application context.

3. Run your application with the following system property

4. Run jconsole tool (found at JAVA_HOME/bin)

5. Look for the exported MBean (”logging” in our case)

6. Change the log level of categories just by invoking the management methods.


After googling a bit, I found out that loads of people already thought about this solution (hell… there’s even an MBean class in the jdk that does the same for jdk’s logging mechanism). Unfortunately, I only gave it a thought today - if I had done so long time ago it would have probably saved me quite a lot of time… So if it’s new to you aswell, stop wasting your time and add it to your project today.

Note: This can be quite useful at production phase as well, but keep in mind that a more secured schema should be applied - possibly using jdk’s jmx security support (for more information, see the resources below).

Some resources:
Monitoring and Management Using JMX
Spring JMX support

Sunday, October 14, 2007

SEO Title Tag: A WordPress Plugin for SEO (Search Engine Optimization)

SEO Title Tag: A WordPress Plugin for SEO (Search Engine Optimization)

Features include:

  • Allows you to override a page’s or a post’s title tag with a custom one.
  • New for v2.0 A Title Tag input box in the Edit Post and Write Post forms. (Previously in version 1.0 you had to use the Custom Field box.)
  • New for v2.0 Mass editing of title tags for all posts, static pages, category pages, tag pages, tag conjunction pages, archive by month pages, — indeed, any URL — all in one go.
  • Define a custom title tag for your home page (or, more accurately, your Posts page, if you have chosen a static Front Page set under Options -> Reading), through the Options -> SEO Title Tag page in the WordPress admin.
  • New for v2.0 Define the title tag of 404 error pages, also through Options -> SEO Title Tag.
  • New for v2.0 Handles internal search result pages too.
  • For users of the UltimateTagWarrior plugin (which should be everybody!), incorporates the tag name into the title tag on “tag pages” (sorry for the confusing use of “tag” in two contexts here — as in tagging and HTML title tags).
  • New for v2.0 (When used with Ultimate Tag Warrior) Customize the title tags on tag pages, and on tag conjunction pages too (e.g. The latter is done through Manage -> Title Tags -> URLs; see this screenshot for an example.
  • New for v2.0 Title tags of category pages can optionally be set to the category description. If you use a Meta Tag plugin like Add Meta Tags, then you should not use this feature and instead let the Meta Tag plugin use the category description for the meta description on category pages.
  • If you choose to keep the blog name in your title tags (not recommended!), the order of the blog name and the title are automatically reversed, giving more keyword prominence to the title instead of the blog name. Note there is also an option to replace your blog name with a shorter blog nickname.

And best of all, the plugin is FREE!

Suitably convinced? Then Download the plugin!

Friday, October 12, 2007

Enterprise Java Community: Introduction to the Spring Framework

Enterprise Java Community: Introduction to the Spring Framework

This is a basic introduction of Spring Framework.

The author thinks the Spring Framework is unique as:
Spring is unique, for several reasons:
  • It addresses important areas that many other popular frameworks don't.
  • Spring is both comprehensive and modular.
  • Spring is designed from the ground up to help you write code that's easy to test.
  • Spring is an increasingly important integration technology
I fully agree with it. The loose couple and tight couple inside way makes Spring eases to be used in any kind of applications.

Architectural benefits of Spring

Before we get down to specifics, let's look at some of the benefits Spring can bring to a project:

  • Spring can effectively organize your middle tier objects, whether or not you choose to use EJB. Spring takes care of plumbing that would be left up to you if you use only Struts or other frameworks geared to particular J2EE APIs. And while it is perhaps most valuable in the middle tier, Spring's configuration management services can be used in any architectural layer, in whatever runtime environment.
  • Spring can eliminate the proliferation of Singletons seen on many projects.
  • Spring can eliminate the need to use a variety of custom properties file formats, by handling configuration in a consistent way throughout applications and projects. Ever wondered what magic property keys or system properties a particular class looks for, and had to read the Javadoc or even source code? With Spring you simply look at the class's JavaBean properties or constructor arguments. The use of Inversion of Control and Dependency Injection (discussed below) helps achieve this simplification.
  • Spring can facilitate good programming practice by reducing the cost of programming to interfaces, rather than classes, almost to zero.
  • Spring is designed so that applications built with it depend on as few of its APIs as possible. Most business objects in Spring applications have no dependency on Spring.
  • Applications built using Spring are very easy to unit test.
  • Spring can make the use of EJB an implementation choice, rather than the determinant of application architecture. You can choose to implement business interfaces as POJOs or local EJBs without affecting calling code.
  • Spring helps you solve many problems without using EJB. Spring can provide an alternative to EJB that's appropriate for many applications. For example, Spring can use AOP to deliver declarative transaction management without using an EJB container; even without a JTA implementation, if you only need to work with a single database.
  • Spring provides a consistent framework for data access, whether using JDBC or an O/R mapping product such as TopLink, Hibernate or a JDO implementation.
  • Spring provides a consistent, simple programming model in many areas, making it an ideal architectural "glue." You can see this consistency in the Spring approach to JDBC, JMS, JavaMail, JNDI and many other important APIs.

Spring is essentially a technology dedicated to enabling you to build applications using POJOs. This desirable goal requires a sophisticated framework, which conceals much complexity from the developer.

What does Spring do?

Mission statement
POJO-based programming model
Spring is portable between application servers.
Inversion of control container
The core of Spring is the org.springframework.beans package, designed for working with JavaBeans.
The most commonly used BeanFactory definitions are:
  • XmlBeanFactory. This parses a simple, intuitive XML structure defining the classes and properties of named objects. We provide a DTD to make authoring easier.
  • DefaultListableBeanFactory: This provides the ability to parse bean definitions in properties files, and create BeanFactories programmatically.
The concept behind Inversion of Control is often expressed in the Hollywood Principle: "Don't call me, I'll call you." IoC moves the responsibility for making things happen into the framework, and away from application code. Whereas your code calls a traditional class library, an IoC framework calls your code. Lifecycle callbacks in many APIs, such as the setSessionContext() method for session EJBs, demonstrate this approach.

Spring provides sophisticated support for both Setter Injection (injection via JavaBean setters); and Constructor Injection (injection via constructor arguments), and even allows you to mix the two when configuring the one object.

JDBC abstraction and data access exception hierarchy

Spring addresses these problems in two ways:

  • By providing APIs that move tedious and error-prone exception handling out of application code into the framework. The framework takes care of all exception handling; application code can concentrate on issuing the appropriate SQL and extracting results.
  • By providing a meaningful exception hierarchy for your application code to work with in place of SQLException.
This is really cute feature that I like. It frees most of 3 tiers application developers paint.

Spring JDBC can help you in several ways:

  • You'll never need to write a finally block again to use JDBC
  • Connection leaks will be a thing of the past
  • You'll need to write less code overall, and that code will be clearly focused on the necessary SQL
  • You'll never need to dig through your RDBMS documentation to work out what obscure error code it returns for a bad column name. Your application won't be dependent on RDBMS-specific error handling code.
  • Whatever persistence technology use, you'll find it easy to implement the DAO pattern without business logic depending on any particular data access API.
  • You'll benefit from improved portability (compared to raw JDBC) in advanced areas such as BLOB handling and invoking stored procedures that return result sets.
O/R mapping integration

Of course often you want to use O/R mapping, rather than use relational data access. Your overall application framework must support this also. Thus Spring integrates out of the box with Hibernate (versions 2 and 3), JDO (versions 1 and 2), TopLink and other ORM products. Its data access architecture allows it to integrate with any underlying data access technology. Spring and Hibernate are a particularly popular combination.

Why would you use an ORM product plus Spring, instead of the ORM product directly? Spring adds significant value in the following areas:

  • Session management.
  • Resource management.
  • Integrated transaction management.
  • Exception wrapping, as described above.
  • To avoid vendor lock-in.
  • Ease of testing.

Above all, Spring facilitates a mix-and-match approach to data access. Spring enables a consistent architecture, and transaction strategy, even if you mix and match persistence approaches, even without using JTA.


The first goal of Spring's AOP support is to provide J2EE services to POJOs. Spring AOP is portable between application servers, so there's no risk of vendor lock in.

Spring AOP supports method interception. Key AOP concepts supported include:

  • Interception: Custom behaviour can be inserted before or after method invocations against any interface or class. This is similar to "around advice" in AspectJ terminology.
  • Introduction: Specifying that an advice should cause an object to implement additional interfaces. This can amount to mixin inheritance.
  • Static and dynamic pointcuts: Specifying the points in program execution at which interception should take place. Static pointcuts concern method signatures; dynamic pointcuts may also consider method arguments at the point where they are evaluated. Pointcuts are defined separately from interceptors, enabling a standard interceptor to be applied in different applications and code contexts.

Spring supports both stateful (one instance per advised object) and stateless interceptors (one instance for all advice).

Spring does not support field interception.

Spring integrates with AspectJ, providing the ability to seamlessly include AspectJ aspects into Spring applications

MVC web framework
  • Spring provides a very clean division between controllers, JavaBean models, and views.
  • Spring's MVC is very flexible. Unlike Struts, which forces your Action and Form objects into concrete inheritance (thus taking away your single shot at concrete inheritance in Java), Spring MVC is entirely based on interfaces. Furthermore, just about every part of the Spring MVC framework is configurable via plugging in your own interface. Of course we also provide convenience classes as an implementation option.
  • Spring, like WebWork, provides interceptors as well as controllers, making it easy to factor out behavior common to the handling of many requests.
  • Spring MVC is truly view-agnostic. You don't get pushed to use JSP if you don't want to; you can use Velocity, XLST or other view technologies. If you want to use a custom view mechanism - for example, your own templating language - you can easily implement the Spring View interface to integrate it.
  • Spring Controllers are configured via IoC like any other objects. This makes them easy to test, and beautifully integrated with other objects managed by Spring.
  • Spring MVC web tiers are typically easier to test than Struts web tiers, due to the avoidance of forced concrete inheritance and explicit dependence of controllers on the dispatcher servlet.
  • The web tier becomes a thin layer on top of a business object layer. This encourages good practice. Struts and other dedicated web frameworks leave you on your own in implementing your business objects; Spring provides an integrated framework for all tiers of your application.
Implementing EJBs
Using EJBs

Most of the key point of spring framework already mentioned here, but there are lots of part we haven't covered, or didn't touch the details: e.g. Spring Web Flow, Spring AOP, Available modules.

Thursday, October 11, 2007

Who's using ZK?

Who's using ZK?
Barclays Global Investors (BGI) is the leader in creating investment solutions and also one of the largest asset managers in the world. BGI manages more than $1.8 trillion in assets (December 2006) for institutional and individual investors across the globe. The development teams in Sydney and San Francisco are developing the new Web application with ZK.

Sun Microsystems, Inc. provides network computing infrastructure solutions that include computer systems, software, storage, and services. Its core brands include the Java technology platform, the Solaris operating system, StorageTek and the UltraSPARC processor. For the third year in a row, Sun is among the top 10 Fortune 500 companies that lead the country by providing outstanding commuter benefits to a significant portion of its U.S. Sun has chosen ZK as the frontend to refine a Web application serving Sun's customers in the world.

Swiss Re is the world’s leading and most diversified global reinsurer, offers financial services products that enable risk taking essential to enterprise and progress. Founded in Zurich, Switzerland, in 1863, Swiss Re operates in more than 25 countries and provides its expertise and services to clients throughout the world. Swiss Re chooses ZK to build a system for customer use.

Alcatel-Lucent provides solutions that enable service providers, enterprises and governments worldwide, to deliver voice, data and video communication services to end-users. Alcatel-Lucent today is one of the largest innovation powerhouses in the communications industry. Alcatel-Lucent is using ZK to rewrite Web applications.

Immediate Response Team, Germany, provides ZK-bench, an eclipse-plugin for work with ZK. It's an IDE with features which make the plugin a Next-Generation IDE so that database-based Web-development becomes now easy like a breeze. IR-Team is true for speedy, qualified and fair dealing. She does consulting as well as development for database-based web applications and the development process itself.

Banco Comercial e de Investimentos (BCI Fomento), is one of the largest private financial group in Mozambique. It is contributing for the development of the financial system and the Mozambican economy. ZK is used in the presentation layer of a web application for foreign operations (Payment of Orders, etc.), because the advantage of rich user interface for web applications with little programming.

Govern de les Illes Balears is the local government of les Illes Balearschose area in Spain. ZK is used as the Web front end for both citizen users and government's internal use. RFID is one of the official websites with ZK available for public access now.

Kazeon Systems, Inc. is a leading provider of enterprise information access solutions that revolutionize the way companies search, classify and act on information. The Kazeon Information Server IS1200 was awarded the storage management "Product of the Year" by TechTarget's Storage magazine and The colorful management Web interface for the storage devices is done with ZK.

Taiwan Futures Exchange (TaiFEX) provides investors with more efficient and quality services allowing buyers and sellers to arrive at the best prices for a given futures or options on futures contract. In 2006, TaiFEX's global ranking is 6th on stock index options trading volume. The volume of index futures and options traded at TaiFEX is 114.6 million contracts(2006). TaiFEX is migrating her Futures Management System from client/server to Web-based system with ZK.

MapInfo Corporation is a worldwide leading provider of location intelligence solutions. MapInfo is named to Forbes' 200 Best Small Companies List in 2006. With ZK, MapInfo created a fabulous real-time web map Evention, which supports drag & drop, zoom, traffic analysis and lots of cool functions. "Credit must go to the amazing ZK team. Our tricked user interface is mostly done using their API. We like what they have built."

Odorfer Eisenhof GmbH, Austria, is a 200 years old company providing over forty-thousand products ranging from tools, machines, building and garden necessities to screws, pins, wires and wire goods. Odorfer Online Katalog-System, an online catalog and shopping system, is developed with ZK.

Agriculture, Forestry and Fisheries Research Council (AFFRC) is established under the Ministry of Agriculture, Forestry & Fisheries, Japan. The information center handles and develops the retrieval systems for supply of information concerning research and experiments related to agriculture, forestry and fisheries, both domestic and overseas. AAFRC develops a RiceMet System with ZK to display and compare various types of rice-related data including yield, quality, etc. all over Japan.

China Southern Power Grid Co., Ltd. (CSG), China, is a Fortune Global 500 company. CSG provides power to 230,000,000 people and covers five provinces in China with a west-to-east distance of about 2000 km. Some of CSG's web pages, such as the recruiting pages, have been migrated to modern faces with ZK.

The Ministry of Justice, New Zealand, delivers a wide variety of services from court services and fines collection to policy advice, negotiation of Treaty of Waitangi claims and running the parliamentary elections. The Ministry administers legislation and provides services to contribute to safer communities and a fairer, more credible and more effective justice system. The Ministry adopts ZK to enrich the interface of her Web applications.

Database, Lda, Mozambique, offers customized Apache OFBiz installations for small and medium enterprises. After a six-month evaluation, Database chooses ZK among plenty of Ajax solutions, such as GWT, OpenLaszlo, DOJO. Database is switching all of web-based products (currently 3) to ZK framework.

Sobedi informationsmangement gmbh, Germany, is specialized in professionalizing business project management, knowledge management and procurement. RISK-MAP is Sobedi's risk management solution which provides a web based platform for enterprise wide, international risk management and documentation. Using ZK framework and the proprietary development "Generic Object Framework" (GOF) as the JAVA oriented application development environment, sobedi presents this solution now to international customers.

Noaris Consulting S.L., Spain, is an IT/software company focused on innovational technologies as well as software. Noaris provides a revolutionary view to the software development in order to lead the competitive edge. In the accomplishment of projects, it's crucial important in the phase of selection of technologies. In Noaris, we work with latest technologies in software development. We are expert in consolidated technologies like Java/JavaEE and those emergent ones like Ruby on Rails as well as in frameworks of development based on ZK.

Beijing Institute of Graphic Communication (BIGC), China, is a general polytechnic university of technology, humanities, arts, and management. BIGC is among the first batch of higher learning institutions which were granted the right to confer bachelor’s degrees in China. At present, BIGC has 7,200 full-time students and more than 330 teachers. Teaching Management System, developed with ZK, is a web-based management system for teachers at BIGC.

is a smart professional open source business solution that delivers ERP, CRM, POS, shop floor, supply chain management functionality. Now, ZK has been chosen to Ajaxify ADempiere Posterita, a full web-based highly enhanced Point Of Sale System.
Posterita, Mauritius, is the world pioneer in designing, developing and marketing business for web applications based on ADempiere.

OpenCms is a professional, easy to use website content management solution. As one of the most popular open source CMS, OpenCms helps worldwide content managers to create and maintain beautiful websites fast and efficiently. OpenCms 7 is lanuched in July 2007 after 18 months of development. QuinScape GmbH and Alkacon Software GmbH supported the development of the new version. In order to realize Web inteface up-to-date without complex programming, Quinscape integrate prominent ZK in OpenCms.

The Apache Open For Business Project (OFBiz) is an open source enterprise automation software project. By open source enterprise automation we mean: Open Source ERP, Open Source CRM, Open Source E-Business / E-Commerce, Open Source SCM, Open Source MRP, Open Source CMMS/EAM, and so on. OFBiz uses a "rich client" web UI via ZK framework. That is, a ZK frontend but an OFBiz backend.

LibX is a Firefox extension that provides direct access to your library's resources. LibX is an open source framework from which editions for specific libraries can be built. Currently, 61 academic and public libraries (Harvard, MIT, New York State Library, etc.) are offering LibX editions to their users, and additional 86 libraries are testing editions. LibX Edition Builder uses ZK as the rich user interface to build and manage LibX editions. LibX is created by Annette Bailey and Godmar Back. LibX Edition Builder is written by Tilottama Gaat and Godmar Back.

999FANG.COM is a leading real estate searching engine in China. It is established by a group of professors and technical experts who aims to provide the most friendly real estate searching service to local people. Currently, 999FANG.COM covers 10 major cities in China including Peking, Shanghai and Nanking. ZK plays an important role in 999FANG.COM's searching engine by providing the functional searching user interface.

WebAppCabaret is a leading Java EE Web Hosting and Outsourcing Service Provider in California, offering the latest standards based JAVA EE Servlet containers, EJB servers, and JVMs. WebAppCabaret's portal interface, providing various service options such as e-Commerce, EJB 2.x, the latest PHP, Perl and CGI scripting, is constructed with ZK.

Zero Kelvin Desktop

Web-based desktop environment built by using the ZK AJAX toolkit. It includes advanced, easy-to-use CRUD tools for customized data management.

ROZK - Ruby on ZK

Building CRUD forms with jRuby and ZK with minimal codes.

REM - A NetBeans Module for ZK

REM is a NetBeans module for ZK application development. It can be used to create ZK web Applications, ZUL and ZS documents.

ZK Plugin for NetBeans

A plugin for Netbeans to support developing ZK framework applications.

ZK based application generating engine

Zforms generates web interface for CRUD operations introspecting model beans.


ZiNO, standing for "Zino is Naked Objects", consists of a framework that provides naked objects development to ZK.

Yomari WebDB

A web-based database access tool made with ZK framework.

ZK Knowledge Tree

ZK Knowledge Tree is a web based Document Management System based on ZK fr

OFBiz, The Apache Open For Business Project - Open Source E-Business / E-Commerce, ERP, CRM, POS

OFBiz, The Apache Open For Business Project - Open Source E-Business / E-Commerce, ERP, CRM, POS

I'm so glad to know that OFBiz already became a top level project of Apache community.

Look at these features:


  • Free & open source software
    • No license or license maintenance costs
    • No vendor, service provider, or application lock-in
    • Active and supportive community
    • You get full source code
      • You can see how everything works
      • You can track down issues quickly
      • You can change anything you want
    • Apache 2.0 Open Source License
      • You don't have to open source your changes
      • You can repackage, distribute, and even sell derivative software
      • You can say it is based on Open For Business
  • Standards based
    • It is easy to learn for those familiar with similar software
    • It is easy to reuse existing software based on the same standards
    • It is easy to integrate with other internal or partner systems
    • Based on: Sun Java, J2EE; W3C XML, HTML, SOAP; WfMC XPDL; OMG GL, Party, Product, Workflow
  • All applications built on the same framework, tools & components
    • No need to learn and use many different technologies
    • No need to integrate applications
    • No need to deal with limited features because of poor integrations between disparate technologies
    • Huge cost savings because of consistent and easy to maintain components
  • Standards based flexible and generic data model
    • Covers all major entities used in businesses
    • Provides a structure to simplify the achievement of custom data needs
    • Uses common terms for entity names to make it easier to understand and use
  • Flexible and efficient to use data layer
    • No database system lock-in; supports many different databases
    • No need to write redundant persistence code and configuration
    • Easy to use XML data definitions
    • Powerful API offers generic operations that behave differently based on data definitions
    • Most operations can be done with a single line of code and no need to write supporting code
  • Loosely coupled multi-layer component architecure
    • It is easy to customize and reuse components
    • It is easy to build new applications through the composition of existing components
    • It is easy to find code and other components based on consistent patterns
    • Components can be replaced without breaking other components because of well defined and managed dependencies
  • Distributed architecture
    • It is easy to scale multiple servers or pools of servers
    • It is easy to seamlessly integrate & communicate with other systems
  • Service based logic layer
    • All logic modeled as a service
    • Makes it easy to reuse logic
    • Services can be automatically exposed as Web Services
    • Makes it easy add custom user interfaces, even many at once
    • Makes it easy to distribute the system over multiple servers
    • Makes it easy to communicate with other systems
  • Advanced web application framework
    • Separates input processing logic, view data preparation logic and view presentation templates
    • Supports many different types of logic, including scripting languages and services
    • Supports many different types of view templates including XML/XSLT, FreeMarker, Velocity, JSP, and any other
    • Tracks all visits and page hits for security and marketing purposes
    • Keeps statistical traffic and performance data since server start and in time bins



  • Perfect for B2C and B2B eCommerce
  • Can be easily configured for secure or public catalog viewing
  • Supports automatic switching from HTTP (insecure) to HTTPS (secure) and back based on protection desired for each page
  • Product Finding
    • Product search
      • Supports any combination of constraints per search, including keyword, category, feature, and other constraints
      • Indexed Product Keyword Constraints
        • Can search for all keywords specified or any keyword specified
        • Configurable stop words are removed during indexing and searching so they won't affect search results
        • Configurable suffixes (such as -y, -ies, etc) are removed during indexing so they won't affect search results
        • Different product fields can be weighted differently when indexing
      • Category Constraints
        • Can restrict search to products in a given category; this makes it possible to only have the products for the active catalog show up in keyword search results and other effects
        • Can search in a category and include all child categories
        • Can include multiple categories in the search to get a cross section of products in the categories, ie the products must be in all categories
      • Can restrict search to products with a given feature applied
      • Search results are ordered by default based on keyword weights determined during indexing, other orderings are supported as well
      • When search results are presented all constraints are listed that were used in the search and any one can be removed
    • Product category browse
      • Expandable browse tree shows current category context in the left column on relevent pages (by default)
      • Products in a category can be layed out with different templates assigned to different categories, and different sub-templates assigned to different products
      • By default 10 products are shown at a time and you can go to previous and next pages (these settings are easily changed)
      • Products can belong to multiple categories
      • Sub-categories can belong to multiple parent categories
      • Root browse category will change automatically based on the settings associated with the active catalog
      • All product, category and catalog associations are effective dated with from and thru dates
      • Unlimited number of products, categories and catalogs
    • Product detail view
      • Displays large product image (if one is specified), with a link to the detail image (if one is specified)
      • Displays all relevant product information including name, short & long descriptions, price, whether or not inventory is available, etc
      • Displays all cross-sells, up-sells, products deprecated by this product, products that deprecate this product, and any other desired associated product through simple template changes
      • For products with variants (aka "virtual" products) shows drop downs for each feature type that is associated as a selectable feature; to handle available feature combinations shows all avilable in the first drop down, and each additional one is populated when a selection in a previous drop-down has been chosen
      • For products with variants can display small images for each of the features of the first selectable feature type; a useful application of this is having the color be the first selectable feature type and having small images for each different color; when large images are associated with the variant products the large image will change as corresponding features are selected in the drop-down(s)
      • Displays links to previous and next products in the current category for easy browsing through the details of a given category
      • With flexible product attributes and features additional structured information can easily be added and displayed just how you want
    • Special categories
      • Shown on special pages like the main page
      • Examples include top 10 most popular, promoted items, new items, etc.
      • These categories are attached to the active catalog
    • Cross-sells and up-sells
      • Modeled as special types of product associations
      • Can also include product deprecations, marketing packages, etc
      • Shown on the product detail page for each product
    • Shopping cart random cross-sells
      • Random cross-sells are chosen from all items currently in the shopping cart
      • Shown three at a time; when more than three unique products are available a different set is chosen on each new page
      • As a product is added to the shopping cart it is no longer shown
      • Displayed on the shopping cart detail page
      • Displayed in a small box in the right column underneath the mini shopping cart on relevant pages (by default)
    • Quick re-order
      • Re-order list built from products previously ordered
      • List is weighted by quantity ordered and frequency of ordering
      • Default re-order quantity is an average of all quantities previous ordered for a given product
      • Only the top five are shown at any given time
      • As a product is added to the shopping cart it is no longer shown
      • Displayed in a small box at the bottom of the right column on relevant pages (by default)
  • Promotions
    • Promotion Conditions Supported
      • Cart Sub-total
      • Total Amount of Product
      • X Amount of Product
      • X Quantity of Product
      • Account Days Since Created
      • Party
      • Role Type
    • Promotion Actions Supported
      • Gift With Purchase
      • Free Shipping
      • X Product for Y% Discount
      • X Product for Y Discount
      • X Product for Y Price
      • Order Percent Discount
      • Order Amount Flat
    • Use limits per order, customer, promotion
    • Promotion Codes
      • Can be required for promotion to apply
      • Use limits per customer, code
      • Can be restricted to only allow use by a customer with a specific email address or party ID
    • Can associate products and/or categories with the entire promotion or a specific condition or action, support include, exclude, and always associations
    • With conditions and actions can support buy X get Y free (or for Z% discount) and many other options
  • Rule Based Pricing

  • Customer Profile

  • Shopping Cart & Checkout Process

  • Order History

  • Affiliate & Marketing Data

Party Manager

Note: A Party can be either a Person, or a group of Parties. A Party Group could be a company, an organization within the company, a supplier, a customer, and so forth. Information that describes Parties or is directly related to Parties is contained in these entities.
  • Party Types: Persons and Groups
  • Finding Parties
  • Party Data Maintenance
    • Personal Data
    • Organization Data
    • UserLogin & Security Data
    • Contact Mechanisms: Telecom Number, Postal Address, Email Address, Web Page Address, etc.
    • Payment Mechanisms: Credit Cards, EFT Accounts
    • Party Roles
    • Party Relationships
  • Security Data Maintenance
    • Security Permissions
    • Security Groups
    • UserLogin Group Membership
    • Group Permission Association

Marketing Manager

  • Tracking Code Management
  • Marketing Campaign Management
    • Central place to track marketing activities
    • Right now includes promotions and tracking codes

Catalog Manager

Everything involving your products that will be seen by your customers is managed from here.
  • Product Stores
    • Identify the venue from which sales will be made
    • Select which stores will handle which catalogs, categories and products
  • Product Catalogs
    • Create new catalogs
    • Develop collections of products or categories, assigning them to their related catalogs
    • Associate product with price, location, availability, features, graphics, and other details
  • Product Categories
    • Specify what products or features will be gathered under what categories
    • Create categories as needed here
  • Products
    • Define products
    • Describe products
    • Associate graphic images with products
    • Gather information on facilities, inventory, content, IDs, keywords, associations, suppliers, attributes, and more
  • Product Features
    • Add, delete or modify features as shown in the catalog for any product
    • Changes to features can be date defined to start and to stop
  • Price Rules
    • Prices can be modified at a working employee or ordering level when the rules are defined here for price variations such as discounts, special sales conditions, etc.
    • Create names (IDs) for prices rules to be applied to events, categories, products, stores, etc.
  • Promotions
    • Define product promotions
    • Specify text for promotion
    • Specify rules for administration
    • Identify stores for applicability
    • Assign tracking codes

Facility Manager

  • Facility Management
    • Facility
      • Facility can be a Warehouse, Retail Store, Office, Building, Meeting Room, etc, etc.
      • Inventory & Warehouse Management
        • Inventory Location Management
        • Pick/Primary and Bulk Location Management, set thresholds for recommend replenishment stock moves
        • Inventory Management: Quantity On Hand & Available To Promise with Order Inventory Reservations and Item Issuance for Shipments
        • Pick & Pack Management with picklist generation, supports limited number of orders per picklist, sorts list by location, can generate pick lists separately for different shipment methods
        • Handles order splitting preference to ship all at once or as available
        • Order only included in picklists when sufficient inventory is on hand in pick/primary locations
        • Streamlined or detailed packing and shipping processes with serial scale support for weighing and label printing support

    • Facility Group
      • Grouping facilities under a common topic enables consolidated assignments or instructions
      • Group features
        • Rollups (parent/child relationships)
        • Role assignments
          • Party to group
          • Group to party
        • Time of existence or relationship
          • From
          • Thru
  • Shipment Management
    • Parties
      • Contact mechanism content
    • Automatic Shipment Creation from Purchase and Sales Orders
      • Estimated Costing
      • Latest Cancel Date
    • Shipment Scheduling
    • Shipment Items
    • Shipment Packages
    • Shipment Item Package Assignment
    • Shipment Route Segments
    • Shipment Package Route Segment Assignment
    • Generate a Shipment Plan
    • UPS XML-based Integration (XPCI)
      • Confirm Shipment (gets tracking number, pricing and other information)
      • Accept Shipment (gets shipping label image and finalizes the shipment)
      • UPS then knows what to pickup and has all information about shipments and packages
      • Void Shipment
      • Track Shipment (updates tracking info)

Order Manager

  • Search for existing orders
    • By Order ID or Customer PO#
    • By Product ID
    • By Role Type
    • <>By Party ID or User LoginID
    • By Order Type
    • <>By Store or Web Site
    • By Status
    • With Date Filter
  • View existing orders
  • Order Entry
    • Sales Orders
    • Purchase Orders
  • Purchase Order Receipt Scheduling
  • Back Orders: includes customer notification, delivery estimates, partial CC settlements, CC refunds, etc
  • Returns & Refunds: based on order items, track reasons, put refunds on CC, billing account, mail a check, store credit, etc; assisted creation of replacement order

Accounting Manager

  • General Ledger Accounts
    • View Chart of Accounts
    • Create New GL Account
    • Edit an existing GL Account
  • Billing Accounts
    • Find a Billing Account
    • View/Edit a Billing Account
      • Delete
      • Update
      • Modify Roles
      • Modify/Create new Terms
      • Find/View Invoices
      • Payments
  • Invoices
    • Find/View existing Invoices
    • Automatic Invoices from Purchase and Sales Orders
  • Payments
    • Find a Payment Received
      • by Payment ID
      • by Payment Method Type
      • by Status
      • From/To Party
      • with Date Filter
    • Record a Manual Transaction

Work Effort Manager

  • Track work efforts
    • Tasks & to-do items
      • Hierarchical items for projects, phases, tasks, sub-tasks, etc.
      • Assign items to multiple parties
      • Track priority, cost estimates, etc
      • Track estimated and actual: start times, end times, durations
    • Calendar events
      • Manage shared and private scheduled calendar event
      • View by day, by week or by month
      • Notify other parties of events, tasks, assignments, and accomplishments
    • Workflow activities
      • View all activities assigned to you
      • View all activities assigned to a role or party group that you belong to
      • Update the status of your involvement in the activity
      • Based on your status updates the system will automatically update the activity status
      • Custom templates and views can be added to display information related to each activity from the workflow process context or other database data
    • Work efforts are associated with the cost side of the Cost-Benefit analysis; to manage both sides of the comparison work efforts can be associated with requirements or requests
  • Track requests
    • Supports requests: for support, for features, for fixes, for information, for quotes, for proposals
    • Associate requests with requirements
    • Associate requests with work efforts (tasks, projects, etc)
    • Each request consists of multiple items, each of which contains details about what is desired
    • The request acts as a package of multple desired items
    • Each request item contains a "story" of what is desired
    • In the Cost-Benefit scheme of things a request is associated with the benefit side; costs are associated with the resulting work efforts, allowing you to track and manage BOTH sides of the comparison
  • Track requirements
    • Used to internally manage required features for a product
    • Usually based on requests, or request items to be more accurate
    • Each requirement contains a "use case" for a more formal description of what is to be created
    • Requirements are also on the benefit side of the Cost-Benefit analysis, but the benefits are generally better understood through associated requests

Content Manager

  • Web Site Management
    • Create sites
    • Modify sites
    • Associate parties
    • Assign Hosts and Ports
    • Establish Standard and Secure Content Prefix
    • Specify Cookie Domain
  • Dynamic Survey Management
    • Create survey
    • Find existing survey
    • Edit existing survey
  • General Information/Concepts
    • Basic Content application screens for creating/updating content, data resources, meta data, content structure, etc.
    • Use slightly modified WYSISWIG editors from WSPublisher for editing of HTML, XML, plain text and other content
    • Tools to mount content structures as webapp resources
    • Associate parties with content for administrative purposes or for things like keeping track of who has read and who must read specific content
    • Categorization and security features so that sets of content can be administered and view by limited groups of users.
    • FreeMarker/XSLT/Velocity to allow for templating in content text, makes it more flexible like JSPs for dynamic content when needed
    • Utility transforms put in the FreeMarker context for content templates that allow for including other content, refering to external resources such as images, javascript files, CSS files, etc.
  • Data Resource Management
    • Powerful search engine to find existing resources
    • Specify/Identify resources
    • Locate/Edit Text, HTML, Images, Attributes, Roles and Product Features
  • Content Management
    • Specify the Content Setup by updating the Content Type ID for Parent TYpe Id, description, etc.
  • Layout Editor


  • Cache Tools
    • Cache Maintenance
      • View cache size and hit/miss statistics
      • Clear all caches, individual caches, even individual cache lines
      • Clear all expired cache entries
      • Manage cache prameters such as size limit, expire time, soft references, etc
      • View inidividual elements in each cache
  • Debug Tools
    • Adjust Debugging Levels
      • Adjust debug log message levels as the application is running
      • Changes here stay until the server is shut down
      • For permanent changes, use the file
  • Entity Engine Tools
    • Entity Data Maintenance
      • Find, view, create, update, and remove data in any entity
      • Works dynamically according to entity definitions
      • Uses flexible permissions to allow access to all entities, or to a specific set of entities
    • Entity Reference & Editing
      • Displays detail about all defined entities including fields, types, table & column names, relationships, etc
      • In main view frame entities are sorted alphabeticly by package
      • In the left frame there is an alphabetical list of package and an alphabetical list of all entities
      • Relationships are displayed with links to the related entities, making it easy to browse the data model
      • An editing page can be used to create and modify entity definitions in memory
      • A page that compares entity definitions to the database (just like what is done on startup) and optionally adds missing tables and columns to the database
      • Templates that write the entity model and entity group model XML files in a consistent way for easy comparison (note that these must be used to save in memory entity definition changes); these templates can also be used to output this information to the browser
      • A template that reads database meta-data and creates first pass XML entity definitions which can then be refined according to your preferences
    • XML Data Export
      • Exports data from entities as an XML file
      • The XML is structured such that there is one element for each entity instance, and one attribute or sub-element for each populated field in the entity
      • The XML file can be saved to the disk on the server or delivered through the browser to be viewed and/or saved on the client
      • High performance and scalable stream based output technique can export an unlimited number of entity instances in each pass
    • XML Data Import
      • Imports data from entities in an XML file
      • The XML is structured such that there is one element for each entity instance, and one attribute or sub-element for each populated field in the entity
      • The XML file can be loaded from the disk on the server or uploaded through a form in the browser
      • High performance and scalable stream and SAX based input processing technique can import an unlimited number of entity instances in each pass
  • Service Engine Tools
    • Job List
      • View all scheduled "job" services
      • Displays job ID, start date/time, finish date/time, and service name to invoke
    • Schedule Job
      • Allows the manual scheduling of a named service
      • Can specify interval size and count
      • Can specify an absolute start and finish date/time
      • Can manually add data to the persisted context used for running the service
    • Thread Viewer
  • Workflow Engine Tools
    • Workflow Monitor
      • View all running processes
      • Displays package & version, process & version, status, priority, start date, etc for each process
      • Can drill down to see all activity instances that are part of the process
      • Displays activity ID, priority, status, start date, complete date and assignments for each activity
      • Links to activity management page in the Work Effort Manager for each activity
      • Links to party profile management page in the Party Manager for each party assigned to each activity
    • Read XPDL File
      • Reads, verifies, and displays an XPDL file
      • Can be located in a file on the server or at any URL location
      • Can verify only, or also write the data to the database for workflow process execution
  • Rule Engine Tools
    • Logikus - Run Rulesets
      • Provides a web-based user interface for querying a ruleset containing facts and inductive rules
      • Currently only supports backward chaining
      • Can determine one result at a time or all results at once
      • Many example rulesets are included for experimentation
  • Data File Tools
    • View Data File
      • Displays data from flat files based on a format definition file
      • Can write the data file back out to verify the format definition and read/write repeatability
      • Can load data file and format definition file from a URL or file on the server
  • Misc. Setup Tools
    • Edit Custom Time Periods
      • Browse, create, update, and delete hierarchical custom time periods
      • Time periods can be associated with an organization party, and browsing time periods can be filtered by party ID
      • Manages fiscal years, quarters, months, bi-week, week and any custom period type
      • Track a period number, period name, from date and thru date with each time period
    • Edit Enumerations

    • Edit Status Options

  • Server Hit Statistics Tools
    • Stats Since Server Start
      • Displays server load and performance statistics for each resource, group of resources, and for all resources
      • Tracks data about different types of resources including requests, events and views
      • Displays accumulated data since the server started
      • Links to pages that display the same data for specifc time bins
      • Time bin data is persisted for future analysis

Great!!! Come on, build your applications by using this pure free and open source technology.

Java HotSpot VM Options

Java HotSpot VM Options

A collection of java VM options.

Some Useful -XX Options

Default values are listed for Java SE 6 for Solaris Sparc with -server. Some options may vary per architecture/OS/JVM version. Platforms with a differing default value are listed in the description.

  • Boolean options are turned on with -XX:+ and turned off with -XX:-.
  • Numeric options are set with -XX:. Numbers can include 'm' or 'M' for megabytes, 'k' or 'K' for kilobytes, and 'g' or 'G' for gigabytes (for example, 32k is the same as 32768).
  • String options are set with -XX:, are usually used to specify a file, a path, or a list of commands

Flags marked as manageable are dynamically writeable through the JDK management interface ( API) and also through JConsole. In Monitoring and Managing Java SE 6 Platform Applications, Figure 3 shows an example. The manageable flags can also be set through jinfo -flag.

The options below are loosely grouped into three categories.

Monday, October 8, 2007


PsyTopic分析:您的得分介于100分到139分: 爱幻想,思维较感性,以是否与自己投缘为标准来选择朋友。性格显得较孤傲,有时较急噪,有时优柔寡断。事业心较强,喜欢有创造性的工作,不喜欢按常规办事。性格倔强,言语犀利,不善于妥协。崇尚浪漫的爱情,但想法往往不切合实际。金钱欲望一般。