Cloud: Java Service SDK

#

## Sample Introduction

JSF 2.0 introduces Ajax into the specification which builds on important concepts from a variety of existing JSF Ajax frameworks. The specification provides two ways of adding Ajax to JSF web applications. Page authors may use the JavaScript library directly in their pages by attaching the Ajax request call to a JSF component using a JavaScript event. They may also take a more declarative approach and use a core Facelets tag, which they can nest within JSF components to "Ajaxify" them.

The application presents you with a page that asks you to guess a number between 0 and 10, validates your input against a random number, and responds you whether you guessed the number correctly or incorrectly. To demonstrate the advantages of using Ajax, the result will not be shown in the `response.xhtml` page any more. Instead, it uses a `<f:ajax>` component nested in `<h:commandButton>` to send an Ajax request to make an asynchronous call to the bean on the server side, and renders the `<h:outputText>` component in the originating page with response by executing just the input component rather than by form submission.

For details about the sample code, see the files that are listed in the table.

## Main Files Used in the Sample

Directory Location:

SDK_HOME/samples/ee6/ajaxguessnumber

(where SDK_HOME is the directory containing your Oracle Java Cloud installation)

File Click source files to view code. | Description
--- | ---
build.xml | Ant build file that contains targets for building, deploying, and running the sample.
ajaxgreeting.xhtml | A Facelets welcome page contains JavaServer Faces components and `<f:ajax>` tag that sends Ajax request and connects to the backing bean through the Expression Language.
ui.js | A Javascript file specified in the `h:outputScript` tag of the `ajaxgreeting.xhtml` file which contains a function obtaining a handle to both the result and error elements. If the error element has any content, the function erases the content of the result element, so that the stale output does not appear in the page.
web.xml | Web application deployment descriptor that maps the FacesServlet.
weblogic.xml | Oracle WebLogic Server-specific web application deployment descriptor that declares the application context root and WebLogic shared library reference.
glassfish-web.xml | GlassFish Server-specific web application deployment descriptor.
UserNumberBean.java | JavaServer Faces backing bean class that handles the Ajax request and perform the application business logic.

## Prepare the Sample

### Prerequisites for Deploying the Sample Locally

1. Install Oracle WebLogic Server and configure it. This is required only if you want to deploy applications locally
2. In the `SDK_HOME/samples/myenv.*` script, set the MW_HOME environment variable to the directory where WebLogic Server is installed.
3. Run the script:
   - On Linux, run: `. ./myenv.sh`
   - On Windows, run: `myenv.cmd`
4. Set the following environment variables in the `SDK_HOME/samples/build.common.properties` properties file:
   - set local to true, the default value is false.
   - set identity-domain to the identity domain name where you will deploy the application.
   - set service-instance to the service instance name where you will deploy the application.
   - set local-admin-url to the URL of the local WebLogic admin server.
   - set local-admin-user to the admin user who has permission to deploy the application.

You can also refer to Preparing Applications for Java Cloud Service Deployment in Using Oracle Java Cloud Service and the sample main page for more details.

### Prerequisites for Deploying the Sample on Java Cloud Service

If you are going to install your application only on a remote Java Cloud Service instance, you will not need to have WebLogic Server installed locally. Just make sure that "ant" and "javac" are available in the path.

Set the following environment variables in the `SDK_HOME/samples/build.common.properties` properties file:

- set identity-domain to the identity domain name where you will deploy the application.
- set service-instance to the service instance name where you will deploy the application.
- set cloud-admin-url to the admin URL that is used to deploy the application on Oracle Cloud.
- set Oracle Cloud-admin-user to the admin user who has permission to deploy the application on Oracle Cloud.

## Build and Deploy the Sample

To build the sample, follow these steps:

1. Change to the `SDK_HOME/samples/ee6/ajaxguessnumber` directory, where SDK_HOME refers to the main Oracle Java Cloud SDK installation directory, such as `/home/user/oracle-javacloud-sdk`.
2. Execute the following command in the shell. (If you deploy the sample to local environment, choose the shell where you run the `myenv.*` script.)
   `ant clean`
   This command cleans the build directory.
   `ant build`
   This command compiles and stages the sample.
3. Execute the following command in the shell. (If you deploy the sample to local environment, choose the shell where you run the `myenv.*` script.)
   `ant install`
   This command installs the sample on the local WebLogic Server or remote Java Cloud Service instance.

The Ant command uses the `build.xml` file in the `SDK_HOME/samples/ee6/ajaxguessnumber` directory to build the sample.

## Run the Sample

1. Complete the steps in the "Prepare the Sample" section.
2. Execute the following command in the shell. (If you deploy the sample to local environment, choose the shell where you run the `myenv.*` script.)
   `ant run`
   This command tries to automatically launch the web browser with the URL pattern `http://server:port/ajaxguessnumber`, where the server would include the identity domain and service instance name. For example, `https://java1-wnctrial.java.dc1.c9labga.us.oracle.com/ajaxguessnumber`, where `java1` is the service instance name and `wnctrial` is the identity domain. The rest of the host name `java.dc1.c9labga.us.oracle.com` is based on the environment. The actual URL should be printed when you run the sample.
   If the above does not work, you can open a browser, then copy and paste the above URL.
   For non-Windows and non-Mac machines, make sure that you have specified valid browser for the `default.browser` property in `SDK_HOME/samples/build.common.properties.`