<!--

    Copyright (c) 2013, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Distribution License v. 1.0, which is available at
    http://www.eclipse.org/org/documents/edl-v10.php.

    SPDX-License-Identifier: BSD-3-Clause

-->

<!DOCTYPE html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>WLS 12.1.3 Shared Library installation steps.</title>

        <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.0.0-rc1/css/bootstrap.min.css">
    </head>

    <body>
        <div class="container">
            <div class="row">
                <h1>Weblogic 12.1.3 Shared Library Installation Steps</h1>

                <p>
                    Before deploying an JAX-RS 2.0 application into WLS 12.1.3 you need to install (deploy) the JAX-RS 2.0 shared
                    library that provides necessary dependencies and configuration. This library is located at
                    <code>MW_HOME\wlserver\common\deployable-libraries\jax-rs-2.0.war</code>.
                </p>
                <p>
                    There are two ways, how you can deploy this library:
                    <ul>
                        <li>Using WLS console</li>
                        <li>Using WLST</li>
                    </ul>
                </p>

                <h2>Deploying shared library using WLS console</h2>

                <ol>
                    <li>Log into WLS console at <code>http://&lt;host&gt;:&lt;port&gt;/console</code> (e.g. <code>http://localhost:7001/console</code>)</li>
                    <li>Click on <em>Deployments</em></li>
                    <li>Find Shared Library WAR (located at <code>MW_HOME\wlserver\common\deployable-libraries\jax-rs-2.0.war</code>)</li>
                    <li>Click on <em>Next</em></li>
                    <li>Choose <em>Deploy as Library</em></li>
                    <li>Click on <em>Next</em></li>
                    <li>Click on <em>Finish</em></li>
                </ol>

                <h2>Deploying shared library using WLST</h2>

                <p>Lets assume that WLS is running and your domain is located in <code>MW_HOME</code> (<code>MW_HOME\domain</code>).</p>

                <p>Setup your shell and enter the WLST console:</p>

<pre>
> # bash prompt
> cd $MW_HOME\domain
> . ./bin/setDomainEnv.sh
> java weblogic.WLST
</pre>

                <p>Deploy the library:</p>

<pre>
> # WLST console
> connect('user', 'pass', 'host')
> deploy('jax-rs', '../wlserver/common/deployable-libraries/jax-rs-2.0.war', libraryModule='true')
> exit()
</pre>


            </div>
        </div>
    </body>
</html>
