Friday, February 17, 2017

How Oracle Can Win in the Cloud (response)

Sten Vesterli published an interesting post on LinkedIn today about Oracle and the cloud. Namely, does Oracle have what it takes to win in the cloud when they appear to be so far behind the other major players in the market?
I have much respect for Sten and don't disagree with what he stated in his post, but I have a slightly different take on what Oracle can do to win it big.

There's no denying that Oracle has many amazing products that have successfully served enterprise and mission-critical applications exceptionally well. Need a system for your bank? Air traffic control? Stock exchange? Look no further than Oracle software. But Oracle forgot to hop on the cloud bandwagon back in 2008 and have struggled in that space ever since (Read 5 things Larry Ellison actually said about cloud).

How can Oracle get back on track?



1. Offer low-end free trials for 12 months

I don't believe an unlimited free trial is realistic. I do, however, like Amazon's approach of providing an entry-level virtual server for 12 months free of charge. After all, these free environments won't help much in anything beyond a basic website, and even running a small MySQL database will likely be unusable (I speak from experience).

Oracle can easily do something similar for their PaaS and IaaS services. Once your customers take advantage of it without the pressure of a time limit, and once they are dependent on it and you've gained their trust, they'll naturally lock in.

2. Improve the user experience

This is an area I agree with Sten on and won't repeat his thoughts on it. But I'd like to add that though the interfaces are neat, sharp, and clean in many of the Oracle cloud services, I have three issues surrounding (a) consistency of the user interface across many services, (b) responsive of the interface, and (c) dynamicability (is that even a word?) of the user interface.

When I look at a message on the screen that says "Creating site", do I wait until I get a "Site created successfully" message? Or do I have to refresh the screen because I'm not sure if it will dynamically refresh or not? The little refresh icon is useless because it doesn't respond to mouse clicks or show any indication of activity.

3. Open up to small and medium-sized businesses

When a business such as a medical practice wants to host a small application, they don't want to spend $50,000 in yearly licensing fees in addition to ongoing maintenance costs. At most they'll want to fork out no more than $2,000 a year.

In addition, there's an enormous number of individual entrepreneurs who simply go to Amazon because the barrier to entry is extremely low, allowing them to spend a few hundred dollars a year on some idea that may or may not materialize in the end. That's not the case with Oracle.

Oracle needs to drop their prices on lower-end PaaS and IaaS services and expect a flood of smaller players to sign up. They may be the revenue backbone they will rely on for many years to come.

4. Drop your prices

The fact of the matter is that prices must come down. I'm pretty sure the executives behind closed doors are trying to match the revenue they're currently generating from on-premise with that of their cloud equivalent. This is a failed strategy and wreaks old-school mentality. Look no further than what happened to Blockbuster - how 40% of their revenue was generated from late fees, and when the model changed because of Netflix, they refused to adapt. Where are they now? (Hint: Bankrupt.)

Furthermore, the disastrous decision that Oracle made in doubling their licensing fees on Amazon (whether justified or not) is sure to backfire.

5. Get those government certifications

For those outside of the U.S., the federal market here in the United States is extremely huge, and the Oracle Cloud is mostly locked out. Check out this site for current list of FedRAMP compliant cloud systems.

6. Empower your partners with free services

Did you know that the Oracle Java Cloud Service (JCS) requires the Oracle Database Cloud Service whether you need a database or not? Who would have known this? Your partners for one.

Oracle's reliance on their partners is more critical than ever to provide objective, clear recommendations to get their clients educated and up and running. But Oracle charging their partners for their services that's intended to be for education/demo purposes is a cost that most partners are unwilling to consider, especially since it's not a one-time fee, but rather an ongoing cost. The 80% discount, while appreciated, is simply not enough when you still have to pay $4,000 to learn about a service and demo it to a client.

7. Introduce true self-service

To this date, it's not possible to sign up on my own and enter my own credit card information. Oracle still sends out paper invoices for their cloud bills. Though self-service will hurt a lot of resellers, the fact is that the reselling market will simply have to die. Offering automated credit card billing further encourages the small to medium-sized business adopters as well.

8. Reduce the confusion surrounding 'My Account' and 'My Services' and 'Oracle Account'

I've been using various Oracle Cloud services for over a year and a half, and even though the same email address is used to sign on these various pages, they apparently maintain different passwords across identity domains. I'm still unclear about the relationship between these supposedly identical Oracle accounts, if there's any at all.

9. Share true cost

People are not stupid, at least not in the IT field.

In the last Oracle OpenWorld 2016, I attended an excellent presentation titled Soaring through the Clouds – Live Demo on How to Integrate Ten Different Oracle Public PaaS Services, presented by various Oracle ACE Directors. The question that couldn't escape my mind was, "I wonder how much all this would cost?" Because knowing Oracle, going live with a simple use case spanning 10 Oracle Cloud services will likely be too cost prohibitive.

I've given this presentation a few times, and will also be giving it again at the upcoming Collaborate 17 conference in Las Vegas, and in it I mention why it made sense for our company to migrate from Amazon Web Services EC2 to Oracle Compute Cloud Service. One of the big reasons? Cost.

When people see real, actual numbers coupled with a positive experience, it carries a lot of weight.

10. Publish OBEs on YouTube

Oracle by Example was/is an excellent resource from Oracle, walking through every step in detail to achieve a certain task and is a great learning tool. Do you know how I learned about Oracle WebLogic Server multitenancy? From this excellent YouTube video by Steve Button, WebLogic Server Product Manager, who walked through the conversion of domains to partitions. It was perfect! I simply sped up the video to 2x and knew everything I needed to in 6 minutes. Now I'm talking about WebLogic multitenancy at the upcoming GaOUG TechDays 17 conference!

I can tell you from first hand experience that most professionals are intimidated getting started in the Oracle cloud because they don't know where to start. I believe that most PaaS and IaaS cloud services need at least 2 to 3 short OBE videos on YouTube for the first timers. One to demonstrate the sign-up and provisioning process, one to explain startup, shutdown, and connectivity, and one to develop or create a simple component using that service.




Conclusion

If Oracle's technologies were bad, I would stand up here and tell you that they simply have no future in the cloud. But that's not the case. Many, though not all, of the Oracle Cloud services are excellent with standout technologies powering them under the covers, but in my opinion it's their customer adoption strategy, cost, and licensing decisions that is unfortunately turning away folks.





Thursday, February 16, 2017

Locked out of Jenkins? Don't worry.

You just setup a new Jenkins box, and you're trying to setup security, but somehow you end up with this screen:

User is missing the Overall/Read permission



All you need to do is go to $JENKINS_HOME/config.xml
?xml version='1.0' encoding='UTF-8'?>
<hudson>
  <disabledAdministrativeMonitors/>
  <version>2.45</version>
  <numExecutors>4</numExecutors>
  <mode>NORMAL</mode>
  <useSecurity>true</useSecurity>
  <authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
  <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
    <disableSignup>true</disableSignup>
    <enableCaptcha>false</enableCaptcha>
  </securityRealm>

And change <useSecurity> to false. Then restart the jenkins process to pickup the change.

Now get back in there and configure it correctly!

Tuesday, February 14, 2017

Installing the "General Purpose Desktop" on a Linux cloud instance for desktop access through VNC

Want to connect via VNC to your newly created Oracle Compute Cloud instance?

1. Make sure to install the necessary packages:
yum -y groupinstall "Desktop"
yum -y groupinstall "General Purpose Desktop"
yum -y install tigervnc-server
yum -y install firefox
yum -y install xclock
2. Startup the VNC server:
vncserver :1 -geometry 1440x900 -depth 16
3. Connect with a client, such as TightVNC.

4. Shutdown the VNC server when done:
vncserver -kill :1




Raastech @ GaOUG Tech Days 17

Going to GaOUG Tech Days 17 in Atlanta this March 15-16? If so, then check out some of the presentations some of our top consultants be giving at the conference!
Session
6
Title
Getting Started with Security for your Oracle SOA Suite Integrations
Description
With the boom in cloud services that many companies are currently leveraging, integration between them is becoming more and more important. It is not unusual for an organization to have a combination of on-premise and cloud applications, all talking to each other. For SOA-based integrations, security becomes more critical than ever. This presentation is a technical deep-dive on how to secure your integrations via WS-Security and Oracle Web Services Manager (OWSM) for both inbound and outbound integrations. We discuss authentication, message encryption, two-way SSL certificates, and more. A brief mention on Oracle API Manager is provided as well.
Date
Thu, Mar 16, 2017
Time
11:30am - 12:20pm
Location
Amphitheater
Presenter
Michael Mikhailidi



Session
8
Title
Scaling Out Oracle WebLogic Server
Description
Most administrators have already set up a clustered Oracle WebLogic Server installation, primarily to ensure high availability. But performance is generally unknown until production metrics have started trickling in. What are the options available to scale out? Horizontally? Vertically? To the cloud? This presentation walks through various options; scaling out the traditional way, leveraging WebLogic domain partitions, and extending to the cloud via the Oracle Java Cloud Service (JCS). Understanding the options available to you helps you better prepare for future scale outs.
Date
Thu, Mar 16, 2017
Time
3:00pm - 3:50pm
Location
Ann Cramer
Presenter
Ahmed Aboulnaga
Michael Mikhailidi


See you there!




Thursday, February 9, 2017

Understanding the unique ID in the WebLogic Server JCA adapter plan files

Have you ever wondered where Oracle WebLogic Server gets the strange unique ID you see in the JCA adapter plan files?

<?xml version='1.0' encoding='UTF-8'?>
<deployment-plan xmlns="http://xmlns.oracle.com/weblogic/deployment-plan" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/deployment-plan http://xmlns.oracle.com/weblogic/deployment-plan/1.0/deployment-plan.xsd" global-variables="false">
  <application-name>FtpAdapter</application-name>
  <variable-definition>
    <variable>
      <name>ConfigProperty_ControlDir_Value_14745947429170</name>
      <value>/u01/fmw1221/user_projects/apps/soa_domain/fadapter</value>
    </variable>
    <variable>
      <name>PoolParams_ConnectionCreationRetryFrequencySeconds_14865793562922</name>
      <value>60</value>
    </variable>
    .
    .
    .

The number is "epoch time" plus "sequential ID".

To get the epoch time on a unix server:

oracle@soahost1:/home/oracle> date +%s
1486588928

The sequential ID is the 4 digit number following it.



Applicable Versions:
  • Oracle WebLogic Server 11g
  • Oracle WebLogic Server 12c



Wednesday, February 8, 2017

Create an Oracle OSB Deploy Client (for 12cR2)

Are you trying to import an OSB project to a remote Oracle OSB 12c environment? The annoying part is that you have to have a full blown local copy of JDeveloper or OSB to do so.

These commands bring down the minimum 2.2GB to a workable 60MB of necessary JARs to allow you to do core OSB import and delete tasks.

--

These commands copy files from your local OSB 12.2.1 installation in $SOURCE to a $TARGET location which will be used as the middleware home for your deployments.

#----------------------------------------
# Extract only necessary JARs for SOA import/delete
#----------------------------------------
export SOURCE=/u01/app/oracle/middleware/products/fmw1221
export TARGET=/u02/osbdeploy/middleware
mkdir -p $TARGET/osb/tools/configjar
mkdir -p $TARGET/osb/lib/modules
mkdir -p $TARGET/oracle_common/common/bin
mkdir -p $TARGET/oracle_common/modules
mkdir -p $TARGET/wlserver/modules/features
mkdir -p $TARGET/wlserver/server/lib
mkdir -p $TARGET/coherence/lib
cp $SOURCE/osb/tools/configjar/wlst.sh $TARGET/osb/tools/configjar
cp $SOURCE/osb/lib/modules/oracle.servicebus.kernel-api.jar $TARGET/osb/lib/modules
cp $SOURCE/osb/lib/modules/oracle.servicebus.kernel-wls.jar $TARGET/osb/lib/modules
cp $SOURCE/osb/lib/modules/oracle.servicebus.configfwk.jar $TARGET/osb/lib/modules
cp $SOURCE/oracle_common/common/bin/wlst.sh $TARGET/oracle_common/common/bin
cp $SOURCE/oracle_common/common/bin/setHomeDirs.sh $TARGET/oracle_common/common/bin
cp $SOURCE/oracle_common/common/bin/commBaseEnv.sh $TARGET/oracle_common/common/bin
cp $SOURCE/oracle_common/modules/com.oracle.cie.config-security_8.4.0.0.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/org.glassfish.hk2.hk2-api.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/com.oracle.cie.dependency_1.7.0.0.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/com.oracle.cie.wizard_7.7.0.0.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/org.glassfish.hk2.hk2-locator.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/com.oracle.cie.config-wls_8.4.0.0.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/com.oracle.cie.config-wls-external_8.4.0.0.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/com.bea.core.utils.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/com.bea.core.i18n.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/com.oracle.cie.config-wls-schema_8.4.0.0.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/com.oracle.cie.config-external_8.4.0.0.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/com.oracle.cie.service-table_1.4.0.0.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/com.oracle.cie.comdev_7.7.0.0.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/com.oracle.cie.config-owsm_8.4.0.0.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/org.glassfish.hk2.hk2-utils.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/javax.inject.javax.inject.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/com.oracle.cie.config_8.4.0.0.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/com.oracle.glcm.common-logging_1.5.0.0.jar $TARGET/oracle_common/modules
cp $SOURCE/oracle_common/modules/com.oracle.glcm.encryption_2.6.0.0.jar $TARGET/oracle_common/modules
cp $SOURCE/wlserver/modules/com.bea.core.management.jmx.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.security.encryption.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.server.stubs.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.store.admintool.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.diagnostics.accessor.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.weblogic.rmi.client.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.cluster.api.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.management.mbeanservers.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.descriptor.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.management.core.api.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.jndi.api.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.net.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.transaction.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.beangen.general.api.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.management.context.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.store.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.security.service.ffimpl.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.rmi.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.diagnostics.accessor.runtime.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.iiop-common.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.xml.beaxmlbeans.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.workarea.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.kernel.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.management.config.api.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.common.frag.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.utils.full.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.utils.classloaders.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.weblogic.security.ssl.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.management.jmx.api.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.common.internal.frag.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.core.nodemanager.client.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.timers.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.mbean.maker.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.management.base.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.weblogic.lifecycle.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.jndi.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.store.gxa.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.weblogic.security.digest.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.security.service.engapi.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.management.remote.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.management.core.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.core.base.api.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.iiop.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.security.service.sspi.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.security.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.security.service.ffapi.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.management.scripting.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.management.beanimpls.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.xml.xmlbeans.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.store.admintool-core.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.deploy.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.management.admin.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.weblogic.socket.api.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.core.nodemanager.common.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/javax.transaction.javax.transaction-api.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.weblogic.workmanager.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.internal.thirdparty.jython.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.management.config.validators.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.package.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.logging.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.security.service.cssapi.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/features/wlst.wls.classpath.jar $TARGET/wlserver/modules/features
cp $SOURCE/wlserver/modules/com.oracle.weblogic.lifecycle.provisioning.wlst.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.security.crypto.utils.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.logging.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.deploy.beanapi.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.diagnostics.core.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/javax.enterprise.deploy.deployment-api.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.utils.wrapper.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.jsr166e.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.bea.core.logging.debug.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/javax.security.jacc.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.management.security.api.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/modules/com.oracle.weblogic.security.subject.jar $TARGET/wlserver/modules
cp $SOURCE/wlserver/server/lib/weblogic.jar $TARGET/wlserver/server/lib
cp $SOURCE/coherence/lib/coherence.jar $TARGET/coherence/lib

Now that that's done, you simply now need to set your environment and point to the local copy of the minimal middleware home:

#----------------------------------------
# Files needed (contact Raastech for copy)
#----------------------------------------
# customize.xml
# envcode.properties
# osb_delete.py
# osb_import.py

#----------------------------------------
# Set Environment
#----------------------------------------
export DEPLOY_PATH=/u02/osbdeploy
export MW_HOME=/u02/osbdeploy/middleware
export OSB_HOME=$MW_HOME/osb
export CLASSPATH=""
export CLASSPATH=$OSB_HOME/lib/modules/oracle.servicebus.kernel-wls.jar:$CLASSPATH
export CLASSPATH=$MW_HOME/wlserver/modules/com.bea.core.utils.full.jar:$CLASSPATH
export CLASSPATH=$MW_HOME/wlserver/server/lib/weblogic.jar:$CLASSPATH
export CLASSPATH=$OSB_HOME/lib/modules/oracle.servicebus.kernel-api.jar:$CLASSPATH
export CLASSPATH=$OSB_HOME/lib/modules/oracle.servicebus.configfwk.jar:$CLASSPATH

#----------------------------------------
# OSB Project Settings
#----------------------------------------
export CODE_PATH=/u02/osbdeploy/code
export CODE_PROJECT=HelloWorldOSB

#----------------------------------------
# OSB Import Command
#----------------------------------------
$MW_HOME/osb/tools/configjar/wlst.sh $DEPLOY_PATH/osb_import.py $DEPLOY_PATH/envcode.properties

#----------------------------------------
# OSB Delete Command
#----------------------------------------
$MW_HOME/osb/tools/configjar/wlst.sh $DEPLOY_PATH/osb_delete.py $DEPLOY_PATH/envcode.properties



Applicable Versions:
    • Oracle Service Bus 12c (12.2.1.x)



    Tuesday, February 7, 2017

    Creating an Oracle SOA Ant Client (for 12cR2)

    Are you trying to deploy a SOA composite to a remote Oracle SOA Suite 12c environment? The annoying part is that you have to have a full blown local copy of JDeveloper or SOA Suite to do so.

    These commands bring down the minimum 2.2GB to a workable 150MB of necessary JARs to allow you to do core SOA Ant tasks.

    --

    These commands copy files from your local SOA Suite 12.2.1 installation in $SOURCE to a $TARGET location which will be used as the middleware home for your deployments.

    #----------------------------------------
    # Extract only necessary JARs for SOA package/deploy
    #----------------------------------------
    export SOURCE=/u01/app/oracle/middleware/products/fmw1221
    export TARGET=/u02/soadeploy/middleware
    mkdir -p $TARGET/coherence/lib
    mkdir -p $TARGET/oui/modules
    mkdir -p $TARGET/osb/lib/external
    mkdir -p $TARGET/wlserver/modules/
    mkdir -p $TARGET/wlserver/server/lib
    mkdir -p $TARGET/soa/bin
    mkdir -p $TARGET/soa/soa/modules
    mkdir -p $TARGET/soa/soa/modules/oracle.soa.fabric_11.1.1
    mkdir -p $TARGET/soa/soa/modules/oracle.soa.mgmt_11.1.1
    mkdir -p $TARGET/oracle_common/modules
    mkdir -p $TARGET/oracle_common/modules/clients
    mkdir -p $TARGET/oracle_common/modules/datadirect
    mkdir -p $TARGET/oracle_common/modules/internal/features
    mkdir -p $TARGET/oracle_common/modules/oracle.adf.share.ca
    mkdir -p $TARGET/oracle_common/modules/oracle.mds
    mkdir -p $TARGET/oracle_common/modules/org.apache.ant_1.9.2
    mkdir -p $TARGET/oracle_common/webservices
    cp $SOURCE/wlserver/modules/com.bea.core.xml.xmlbeans.jar $TARGET/wlserver/modules
    cp $SOURCE/wlserver/server/lib/weblogic.jar $TARGET/wlserver/server/lib
    cp $SOURCE/wlserver/server/lib/wlthint3client.jar $TARGET/wlserver/server/lib
    cp $SOURCE/soa/bin/*.xml $TARGET/soa/bin
    cp $SOURCE/soa/soa/modules/commons-cli-1.1.jar $TARGET/soa/soa/modules
    cp $SOURCE/soa/soa/modules/oracle.soa.fabric_11.1.1/fabric-runtime.jar $TARGET/soa/soa/modules/oracle.soa.fabric_11.1.1
    cp $SOURCE/soa/soa/modules/oracle.soa.fabric_11.1.1/soa-infra-tools.jar $TARGET/soa/soa/modules/oracle.soa.fabric_11.1.1
    cp $SOURCE/soa/soa/modules/oracle.soa.fabric_11.1.1/testfwk-xbeans.jar $TARGET/soa/soa/modules/oracle.soa.fabric_11.1.1
    cp $SOURCE/soa/soa/modules/oracle.soa.fabric_11.1.1/tracking-core.jar $TARGET/soa/soa/modules/oracle.soa.fabric_11.1.1
    cp $SOURCE/soa/soa/modules/oracle.soa.mgmt_11.1.1/soa-infra-mgmt.jar $TARGET/soa/soa/modules/oracle.soa.mgmt_11.1.1
    cp -Rp $SOURCE/oracle_common/modules/org.apache.ant_1.9.2/* $TARGET/oracle_common/modules/org.apache.ant_1.9.2
    cp $SOURCE/oracle_common/modules/com.oracle.classloader.pcl.jar $TARGET/oracle_common/modules
    cp $SOURCE/oracle_common/modules/com.oracle.webservices.fabric-common-api.jar $TARGET/oracle_common/modules
    cp $SOURCE/oracle_common/modules/com.oracle.http_client.http_client.jar $TARGET/oracle_common/modules
    cp $SOURCE/oracle_common/modules/org.apache.commons.beanutils_1.8.3.jar $TARGET/oracle_common/modules
    cp $SOURCE/oracle_common/modules/org.apache.commons.digester_1.8.jar $TARGET/oracle_common/modules
    cp $SOURCE/oracle_common/modules/org.apache.commons.logging_1.2.jar $TARGET/oracle_common/modules
    cp $SOURCE/oracle_common/modules/clients/com.oracle.webservices.fmw.client.jar $TARGET/oracle_common/modules/clients
    cp $SOURCE/oracle_common/modules/datadirect/fmwgenerictoken.jar $TARGET/oracle_common/modules/datadirect
    cp $SOURCE/oracle_common/modules/internal/features/com.oracle.webservices.wls.wls-classpath.jar $TARGET/oracle_common/modules/internal/features
    cp $SOURCE/oracle_common/modules/oracle.adf.share.ca/adf-share-base.jar $TARGET/oracle_common/modules/oracle.adf.share.ca
    cp $SOURCE/oracle_common/modules/oracle.mds/mdsrt.jar $TARGET/oracle_common/modules/oracle.mds

    Now that that's done, you simply now need to set your environment and point to the local copy of the minimal middleware home:

    #----------------------------------------
    # Target Environment Settings
    #----------------------------------------
    export USERNAME=weblogic
    export PASSWORD=welcome1
    export SOAHOST=127.0.0.1
    export SOAPORT=8001
    export SOAURL=http://${SOAHOST}:${SOAPORT}
    export TARGET_ENV=dev

    #----------------------------------------
    # Set Environment
    #----------------------------------------
    export DEPLOY_PATH=/u02/soadeploy
    export MW_HOME=/u02/soadeploy/middleware
    export ORACLE_HOME=$MW_HOME/soa
    export ANT_HOME=$MW_HOME/oracle_common/modules/org.apache.ant_1.9.2
    export JAVA_HOME=/u01/app/oracle/middleware/products/jdk1.8.0_102
    export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$ANT_HOME/lib:$PATH:.

    #----------------------------------------
    # SOA Project Settings
    #----------------------------------------
    export CODE_PATH=$DEPLOY_PATH/code/TestApplication
    export CODE_PROJECT=HelloWorldSOA
    export CODE_REVISION=1.0
    export CODE_PARTITION=default

    #----------------------------------------
    # SOA Build Command
    #----------------------------------------
    $ANT_HOME/bin/ant -f $ORACLE_HOME/bin/ant-sca-package.xml package -DcompositeDir=${CODE_PATH}/${CODE_PROJECT} -DcompositeName=${CODE_PROJECT} -Drevision=${CODE_REVISION}

    #----------------------------------------
    # SOA Deploy Command
    #----------------------------------------
    $ANT_HOME/bin/ant -f $ORACLE_HOME/bin/ant-sca-deploy.xml deploy -DserverURL=${SOAURL}/soa-infra/deployer -Duser=${USERNAME} -Dpassword=${PASSWORD} -DsarLocation=${CODE_PATH}/${CODE_PROJECT}/deploy/sca_${CODE_PROJECT}_rev${CODE_REVISION}.jar -Dpartition=${CODE_PARTITION} -Doverwrite=true -DforceDefault=true -Dconfigplan=${DEPLOY_PATH}/props/cfgplan-${TARGET_ENV}.xml

    #----------------------------------------
    # SOA Undeploy Command
    #----------------------------------------
    $ANT_HOME/bin/ant -f $ORACLE_HOME/bin/ant-sca-deploy.xml undeploy -DserverURL=${SOAURL}/soa-infra/deployer -Duser=${USERNAME} -Dpassword=${PASSWORD} -DcompositeName=${CODE_PROJECT} -Dpartition=${CODE_PARTITION} -Drevision=${CODE_REVISION}

    #----------------------------------------
    # SOA List Composites in Partition
    #----------------------------------------
    $ANT_HOME/bin/ant -f $ORACLE_HOME/bin/ant-sca-mgmt.xml listDeployedComposites -Dhost=${SOAHOST} -Dport=${SOAPORT} -Duser=${USERNAME} -Dpassword=${PASSWORD}



    Applicable Versions:
      • Oracle SOA Suite 12c (12.2.1.x)



      Monday, February 6, 2017

      Not sure why you're getting "java.net.MalformedURLException: Unsupported protocol: t3s"?

      Problem:

      You might be trying to run a SOA Ant command in Oracle SOA Suite 12c and even though the host and port and authentication information are correct, you receive the following error:

      [root@soa-training~]# $ANT_HOME/bin/ant -f $MW_HOME/soa/bin/ant-sca-mgmt.xml listDeployedComposites -Dhost=soahost1 -Dport=8001 -Duser=weblogic -Dpassword=welcome1


      Buildfile: /u01/middleware/soa/bin/ant-sca-mgmt.xml
           [echo] oracle.home = /u01/middleware/soa/bin/..

      listDeployedComposites:
          [input] skipping input as property host has already been set.
          [input] skipping input as property port has already been set.
          [input] skipping input as property user has already been set.
      [secure-input] skipping secure-input as property password has already been set.
           [echo] oracle.home = /u01/middleware/soa/bin/..

      compositeMgrTask:
           [java] Connecting to JMX Server at host: soahost1 port 8001
           [java] Connecting to JMX Server at host: soahost1 port 8001
           [java] java.net.MalformedURLException: Unsupported protocol: t3s
           [java]     at javax.management.remote.JMXConnectorFactory.newJMXConnector(JMXConnectorFactory.java:359)
           [java]     at oracle.fabric.management.deployedcomposites.CompositeManagerHelper.createJMXConnector(CompositeManagerHelper.java:212)
           [java]     at oracle.fabric.management.deployedcomposites.CompositeManagerHelper.createJMXConnector(CompositeManagerHelper.java:218)
           [java]     at oracle.fabric.management.deployedcomposites.CompositeManagerHelper.createJMXConnector(CompositeManagerHelper.java:154)
           [java]     at oracle.fabric.management.deployedcomposites.CompositeManagerHelper.<init>(CompositeManagerHelper.java:115)
           [java]     at oracle.fabric.management.deployedcomposites.CompositeManagerAntWrapper.execute(CompositeManagerAntWrapper.java:241)
           [java]     at oracle.fabric.management.deployedcomposites.CompositeManagerAntWrapper.main(CompositeManagerAntWrapper.java:301)

      BUILD SUCCESSFUL
      Total time: 1 second


      Solution:

      This error is specifically related to the JAR file wlthint3client.jar being missing from the $MW_HOME/wlserver/server/lib directory.

      1. Restore the missing file $MW_HOME/wlserver/server/lib/wlthint3client.jar.