1. Technical Field
The present invention generally relates to the JAVASCRIPT™ programming language (hereinafter referred to as JavaScript) operating in a J2EE server environment, and more specifically to a method and system for automatically creating and delivering JAVASCRIPT™ objects to invoke methods on server-side JAVA™ programming language beans (hereinafter referred to as Java beans) without the need for additional installations on the client browser machine.
2. Background of the Invention
A common problem is distributed applications, and specifically in Web applications, is how to invoke server-side code from a remote client (Web browser). Conventional solutions such as CORBA (Common Object Request Broker Architecture), RMI (Remote Method Invocation), and SOAP (Simple Object Access Protocol) all address this problem. Each of these has disadvantages however, a primary disadvantage being their complexity. Other disadvantages include the requirement for an IDL (interface definition language), and additional components that need to be installed into the browser environment. For example, a client-side program has to know which parameters are required to make a call to a standard server-side servlet (such as a JSP (Java Server Page)). These parameters must be explicitly coded as a URL parameter, so that every time a server-side servlet and/or bean is changed, the client-side call must be re-programmed. In other words, the basic code must be written both on the server and the client to wire client-side calls to server-side beans. Moreover, not all remote clients should be allowed to invoke all server-side methods.
What is needed is a simple way to invoke a method on server-side Java beans that also maintains security features relating to who can invoke the methods without additional installations and other complexity on the client.
The described embodiments of the present invention simplify the use of server-side methods. The described embodiments require no client installation when using Internet Explorer 5.5 and above. Other embodiments, of course, support other browsers. No developer or user setup is required on the client and no IDL needs to be written or maintained.
A preferred embodiment of the invention examines a server-side Java bean and automatically generates in real-time a JavaScript representation to provide programmatic access to the server bean by a client. The JavaScript representations of the methods are sent to the Web browser. The browser then creates JavaScript objects that can be called directly from other JavaScript code on the client side.
A developer of JSP (Java Server Pages) identifies which session-scoped server beans he wants to be available on the client. The developer can also identify exactly which methods from those beans should be made available. Once the beans have been identified, the server (or other appropriate data processing system) generates JavaScript source code for each bean, which is then added to the page delivered to the client's browser. The generated source creates an object on the client with the same name as the server-side bean and provides proxy methods for all of the previously identified server-side bean methods. The net result is that the JavaScript code can simply invoke server-side bean methods.
a is a flowchart showing automatic generation of JavaScript by a server-side.
b is a functional description of an automatically generated JavaScript file.
a provides an example of a full JSP page.
b provides an example of a browser display generated by the JSP page of
a and 9b show an example of an HTML page sent to the client side, the HTML (Hyper Text Markup Language) page including the automatically created JavaScript.
A. Background:
JavaScript is an interpreted script language from Netscape Communications Corporation, based in Mountain View, Calif. JavaScript code can be imbedded in HTML pages and interpreted by the Web browser or client.
Java Server Page (JSP) is a server-side technology for generating servlets, small programs that produce a Web page and run on the server.
A browser enabled for DHTML (Dynamic HTML) treats each page element (division or section, heading, paragraph, image, list, and so forth) as an “object.” For example, each heading on a page can be named, given attributes of text style and color, and addressed by name in a small program or “script” included on the page. This heading or any other element on the page can be changed as the result of a specified event such a mouse passing over or being clicked or a time elapsing.
B. Embodiments:
The described embodiments of the present invention simplify the use of server-side methods. A preferred embodiment of the invention examines a server-side Java bean that is registered with the server (such as bean1) and automatically generates a JavaScript representation of the methods in the bean. The JavaScript representations of the methods are sent to the Web browser 100. The browser then creates JavaScript objects 103 that can be called directly from other code on the client side.
On the server, a developer of JSP (Java Server Pages) identifies which session-scoped server beans (such as bean1) he wants to be available on the client. The developer can also identify exactly whether all or some methods from those beans should be made available. Once the beans have been identified, the server generates JavaScript source code for each bean, which is then added to the page delivered to the client's browser. The generated source creates an object on the client with the same name as the server-side bean and provides proxy methods for all of the previously identified server-side bean methods. The net result is that the JavaScript code can simply invoke server-side bean methods.
Initially, the Java beans are instantiated on the server side using conventional techniques, such as those techniques familiar to users of Java 2, Enterprise Edition (J2EE). For each session, beans are registered 200. An API (Application Program Interface) for the server-side methods results from the instantiation 210. It will be understood that these beans can be obtained from various sources, such as customers, or from the owner of the server 110.
For each session, beans are registered 200. In the described embodiment, this entails:
1) creating a JSP tag header 112 by a human programmer as shown in
2) adding the term “clientBean” to the header specifying the name of the bean,
3) specifying the specific methods to be available. This third step is optional.
Registration of beans creates corresponding data structures storing the results of the registration.
As an example, a blox header that does not specify which methods of a bean can be accessed might look like this:
In this example, all methods of bean1 are exposed to the client.
As another example, a blox header that specifies which methods of a bean can be accessed might look like this:
In this example, method M1 of bean1 is exposed to being called from the client. Furthermore, in this example, a “protect” parameter for a method M2 is explicitly set to TRUE. Thus, in this example, the method M2 of bean1 cannot be accessed.
It should be noted that the registration process is accomplished using JSP “tags” that are familiar to programmers in the JSP and JavaScript environments. Thus, being able to register a bean and its methods using <blox:header>, <blox:clientBean>, and <blox:method> tags feels very familiar and easy to understand to the JSP programmer. It should be understood that other syntaxes could be used to indicate that beans and their methods should be registered as available to the client.
In element 220 of
In element 230, server 110 adds the created JavaScript file to a Web page (as, for example, a JavaScript include) and sends the web page to a client upon request using a conventional mechanism. In at least one embodiment, the JavaScript is added using a <script> tag. In another embodiment, the JavaScript is added using an include of the JavaScript file.
The result of the process of
When the bean method is called from JavaScript on the client side, Java objects returned from the bean methods called on the server are converted to JavaScript objects on the client. This works in both directions. JavaScript objects passed to the method are converted to Java objects when the method is called. In addition, Java exception(s) are also returned from the server to the client.
a is a flowchart showing automatic server-side generation of JavaScript.
b shows the functions that are included within the JavaScript 102. As shown in the example of
a provides an example of a full server-side JSP page 600 that demonstrates how to create and register a server-side bean This is one of many implementations of ways in which a bean can be registered with a J2EE server. Section 602 demonstrates an example of creating and registering a J2EE session bean. Section 604 demonstrates an example of registering the bean as a client bean so that it can be called from the client 100. Section 606 invokes the method of the bean by calling the server-side bean's method and displaying the return value from the server-side bean method.
b provides an example of a browser display generated by the JSP page of
Element 808 instantiates a client object and will be executed on the client. Element 810 adds the object to the browser's document object and will be executed on the client.
a and 9b show an example of an HTML page sent to the client side, the HTML page including the automatically created JavaScript. In this embodiment, the HTML page is a rendered JSP page. The HTML page has a series of “included” files. A first included file 902 is a JavaScript file named Soap.js. An example of this file is shown in Table 1. This file implements the SOAP protocol to calls to and returns from the server-side methods. A second included file 904 is a JavaScript file named BloxAPI.js. An example of this file is shown in Table 2. A third included file 906 is a JavaScript file named bean_myBean.js. This is the automatically generated JavaScript file shown in
In
In the described embodiment, the automatically generated JavaScript file performs type conversion so that data sent to the server is in an expected format and data received from the server is converted to an expected format. As will be understood by those familiar with the art, the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims and equivalents.
Number | Name | Date | Kind |
---|---|---|---|
6230160 | Chan et al. | May 2001 | B1 |
6369821 | Merrill et al. | Apr 2002 | B2 |
6457066 | Mein et al. | Sep 2002 | B1 |
6542908 | Ims | Apr 2003 | B1 |
6549955 | Guthrie et al. | Apr 2003 | B2 |
6836889 | Chan et al. | Dec 2004 | B1 |
6990653 | Burd et al. | Jan 2006 | B1 |
7043732 | Mandal et al. | May 2006 | B2 |
7093194 | Nelson | Aug 2006 | B2 |
20030218633 | Mikhail et al. | Nov 2003 | A1 |
20030218663 | Baxter et al. | Nov 2003 | A1 |
Number | Date | Country | |
---|---|---|---|
20060015842 A1 | Jan 2006 | US |