FIELD OF THE INVENTION  
         [0001]    The present invention relates, in general, to software applications, and, more specifically, to a tool for porting web applications among application server platforms.  
         DESCRIPTION OF RELATED ART  
         [0002]    The Internet has expanded at an incredible pace since originating as a means for scientists to communicate and easily exchange information. Faster communication speeds and greater access to computers increased the number of Internet subscribers; more subscribers drove businesses to increase their presence on the Internet; more business presence increased subscribers&#39; demands for increased functionality on the Internet. The demand to provide useful applications not only drives the further-increased access speeds, but continues to drive the further increase in the number of subscribers, the level of business presence, and the availability of useful applications in the global electronic market (e-market). Application servers are the underlying infrastructure for supplying these useful applications to end users or business-to-business (B2B) transactions.  
           [0003]    An application server is software on a computer within a distributed network that “serves” its business or application logic to another program. The application server is often viewed as part of a three-tiered application consisting of a graphical user interface (GUI) server, the application server, and a database or transaction server. The application server typically acts as the intelligent interface between the GUI front-end, which may comprise a web browser, and the back-end database or processing systems.  
           [0004]    A service provider will typically have an idea for a desired service to provide to customers. The service provider codes the service idea into server logic and then deploys that logic into a desired application server platform. A wealth of different application server platforms are available. Each platform has its own configuration and compatibility requirements, such that server logic is typically specifically coded to operate on a particular vendor&#39;s application server. Therefore, once the service provider selects the particular application server platform to use, its past, existing, and future server logic is generally dependent on the survival of, and continued support of, that particular application server platform.  
           [0005]    Some application server platforms, such as HEWLETT-PACKARD COMPANY&#39;S HP APPLICATION SERVER, BEA SYSTEMS INC.&#39;s WEBLOGIC SERVER, and MACROMEDIA&#39;S JRUN, INTERNATIONAL BUSINESS MACHINE&#39;S (IBM) WEBSPHERE application servers, are fully-compliant with SUN MICROSYSTEM&#39;s JAVA 2 ENTERPRISE EDITION (J2EE) technology. However, even though these application servers are each J2EE compliant, there are configuration and compatibility differences among them. Other application server platforms, such as MICROSOFT&#39;S MICROSOFT.NET application server, is based entirely on MICROSOFT&#39;S proprietary NET technology. Therefore, service providers selecting the MICROSOFT.NET application server have typically committed to MICROSOFT&#39;S future products for any planned additions.  
           [0006]    If a service developer wishes to market specific server logic to a service provider, it would typically have to develop unique code for each application server platform used by the service provider. This duplicative process is extremely inefficient and raises the costs for service developers to develop broadly-applicable or marketable services. Similarly, if an application server platform is discontinued or no longer supported, service providers are faced with not only migrating to a new application server platform infrastructure, but also manually transcoding each of its server logic applications for compatibility with the new application server platform. Again, this transcoding process may be very expensive to the service provider.  
         BRIEF SUMMARY OF THE INVENTION  
         [0007]    Representative embodiments are directed to a software tool comprising conversion logic for automatically porting a web application from a first application server format to, a second application server format, and a user interface for receiving user input, wherein the conversion logic automatically executes according to the user input.  
           [0008]    Additional representative embodiments are directed to a method for automatically converting a web application in a first format into at least one other format comprising prompting a user to select the at least one other format for transcoding the web application into, selecting ones of transformation templates from a database according to the user selection, and applying the selected ones of the transformation templates to the web application for automatically transcoding the web application into the at least one other format.  
           [0009]    Further representative embodiments are directed to a computer program product having a computer-readable medium with computer program logic recorded thereon, the computer program product comprising code for cueing a user to select at least one application server format, code for choosing at least one conversion file from a plurality of conversion files responsive to the user selection, code for applying the at least one chosen conversion file to a web application, wherein the at least one chosen conversion file facilitates converting the web application from a first application server format to the at least one application server format, and code for generating information related to effects of conversion on the web application, wherein the information is made available to a user. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0010]    [0010]FIG. 1 is a high-level block diagram illustrating the logical positioning of one embodiment of a porting tool configured according to the teachings of the present invention;  
         [0011]    [0011]FIG. 2 is a high-level block diagram illustrating the logical positioning of another embodiment of a porting tool configured according to the teachings of the present invention showing possible translation into multiple, different application server formats;  
         [0012]    [0012]FIG. 3A is a code diagram illustrating an example Extensible Mark-Up Language (XML) document;  
         [0013]    [0013]FIG. 3B is a code diagram illustrating an example Extensible Style-sheet Language for Transformations (XSLT) document;  
         [0014]    [0014]FIG. 3C is a code diagram illustrating an example XML document resulting from the application of the XSLT document of FIG. 3B to the XML document of FIG. 3A; and  
         [0015]    [0015]FIG. 4 is a detailed block diagram illustrating the porting tool of FIG. 1. 
     
    
     DETAILED DESCRIPTION  
       [0016]    [0016]FIG. 1 is a high-level block diagram illustrating the logical positioning of one embodiment of a porting tool configured according to the teachings of the present invention. Porting tool  100  is typically hosted on a computer system, such as computer  10 . In operation, a service developer desiring to convert an application will generally use Application Server A (AS-A)-Application  101 , configured for operation on AS-A  102 , as a source file for porting tool  100 . The output of porting tool  100  is preferably Application Server B (AS-B)-Application  103 , which is now configured for operation on AS-B  104 . Thus, the service developer is able to essentially automatically convert, translate, or transcode AS-A-Application  101  for use on AS-B  104 .  
         [0017]    It should be noted that embodiments implemented according to the teachings of the present invention may be embodied as software functionality on computer systems, such as computer  10 . In such embodiments, software may preferably comprise code for cueing a user to select at least one application server format, code for choosing at least one conversion file from a plurality of conversion files responsive to the user selection, code for applying said at least one conversion file to a web application, and code for generating information related to effects of conversion on the web application and making that information available to a user. At least one conversion file would preferably facilitate converting the web application from a first application server format to the selected at least one application server format.  
         [0018]    [0018]FIG. 2 is a high-level block diagram illustrating the logical positioning of another embodiment of a porting tool configured according to the teachings of the present invention showing possible translation into multiple, different application server formats. The service provider preferably inputs AS-A-Application  101  into porting tool  100  and then preferably selects one or more application server platforms into which AS-A-Application  101  is to be converted. In addition to transcoding AS-A-Application  101  into AS-B-Application  103 , the service developer may preferably select to translate into AS-C-Application  200 , AS-X-Application  201 , or any combination of one or all of the available application server platforms. Once porting tool  100  has output any of the new application formats, they may preferably be deployed into the targeted application server platform.  
         [0019]    In selected additional representative embodiments, conversion manager  202  monitors the conversion and transformation of each application server application and generates transform files, transform file A-B  203 , transform file A-C  204 , transform file A-X  205 , and the like. Each of transform files  203 - 205  contain information on the effects of the transformation. Users may access transform files  203 - 205  through the user interface on computer  10 .  
         [0020]    Each application server platform maintains a configuration file for use by developers or code generating logic to configure documents and/or applications to that particular application server platform. These configuration files are typically written in extensible markup language (XML), as that language continues to grow in its universal applicability. Embodiments of the translation tool of the present invention leverage these XML configuration files to build a configuration repository for each application server platform that is desired for support. Once the configuration files of each of the supported application server platforms are gathered, extensible style sheet language (XSL) is used to form XSL for transformation (XSLT) documents that may preferably be used to help translate applications from one application server platform to another.  
         [0021]    XSL is an XML-based language used to create style sheets. Style sheets are generally master page layout documents that define the layout or “look” of documents. XSLT is a subset language of XSL defined for building transformation documents. XSLT is used to convert an XML document into another XML document, a hypertext markup language (HTML) document, a portable document format (PDF), or the like.  
         [0022]    [0022]FIG. 3A is a code diagram illustrating an example XML document. XML document  30  describes an order form document for Company A. FIG. 3B is a code diagram illustrating an example XSLT document. FIG. 3C is a code diagram illustrating an example XML document resulting from the application of the XSLT document of FIG. 3B to the XML document of FIG. 3A. Among other things, Company A&#39;s order form requires item name  300 , quantity  301 , and date  302 . Customer A orders its products from Manufacturer A. Manufacturer A&#39;s order form, shown in XML document  32  (FIG. 3C) requires date  307  (in yyyy/mm/dd format), part number  308 , item description  309 , and quantity  310 . In order to convert XML document  30  (FIG. 3A) into XML document  32  (FIG. 3C), XSLT document  31  (FIG. 3C) is used.  
         [0023]    XSLT document  31  (FIG. 3B) includes order conversion section  303  and part number conversion section  304 . In order conversion section  303 , XSL script  311  selects the information from date  302  (FIG. 3A) and converts it into the appropriate format for date  307  (FIG. 3B). Similarly, part number conversion section  304  (FIG. 3B) includes a conversion chart that selects the information on item name  300  (FIG. 3A) and converts in line  305  (FIG. 3B) to the correct part number for part number  308  (FIG. 3C). Therefore, after running XML document  30  (FIG. 3A) through with XSLT document  31  (FIG. 3B), XML document  32  (FIG. 3C) will be produced having the appropriate format of date  307 , part number  308 , description  309 , and quantity  310 .  
         [0024]    [0024]FIG. 4 is a detailed block diagram illustrating the porting tool of FIG. 1. Porting tool  100  is created by loading transformation repository  40  with XSLT files written for converting one application server configuration file to another application server configuration file. As an application enters porting tool  100  it is used as source  400  for selected ones of XSLT documents  401 - 404  to transform into result  405 . Any ones of XSLT documents  401 - 404  may preferably be selected for automatically transforming the application as desired by the user or developer.  
         [0025]    Porting tool  100  is preferably created by examining the XML configuration files of each application server that the tool provider desires to support. Once the programmer identifies each XML configuration file, the XSLT file may preferably be coded to create each of the specific XSLT conversion documents.  
         [0026]    It should be noted that the porting tool may be updated by adding new XSLT files to the XSLT database/repository. These updates enable the tool user to port applications to additional application server platforms.
A software tool is disclosed comprising conversion logic for automatically porting a web application from a first application server format to a second application server format, and a user interface for receiving user input, wherein the conversion logic automatically executes according to the user input.