Showing posts with label SOA. Show all posts
Showing posts with label SOA. Show all posts

Friday, March 13, 2015

Oracle SOA JVM settings

Upgrading the JVM to the latest version is often required for tuning the performance or upgrading the products like SOA from 11g to 12c which requires higher version of JVM.Even though latest versions have top performance it might not be certified with the product for support. By having proper back of the files we can always fall back to the certified JVM version and reproduce the issue and work with support in case latest versions are not certified. These steps are applicable while starting the servers using the node manager from the admin console.


Upgrading JRockit for SOA


Below are the steps required to upgrade JRockit to a newer version which in our case will be from JRockit R28.2.5 to JRockit R28.3.5.All Java SE Downloads are available on MOS (Doc ID 1439822.1).Since we dont want to replace the java version of the system we have downloaded  and extracted the file to a location with write access(for example /u05/java/jrockit-jdk1.6.0_91).Navigate to the bin folder and run ./java -version to find the version of the newly installed JVM.


  • Navigate to $DOMAIN_HOME/bin folder and edit the setDomainEnv.sh file and set the new java home for the variable BEA_JAVA_HOME.
  • Another file that needs is commEnv.sh in the $WL_HOME/common/bin location.
  • If required change the nodemanager.properties file located at  $WL_HOME/common/nodemanager.



Confirm the changes have taken effect from the node manager and the server logs as below.







Switching the JVM from JRockit to HotSpot


Since JRockit is getting converged with HotSpot as HotRockit and no more update on JRockit after JDK 6 we can also look into options like switching the JVM from one vendor to the other and below are the steps required to switch from JRockit to HotSpot. In that case below are the steps that need to be followed.

Download the latest JRE from Doc ID 1439822.1 and upload the tar to the location where it needs to be installed and run the below command to extract and install.

gzip -dc server-jre-8uversion-solaris-sparcv9.tar.gz | tar xf -


Edit the file commEnv.sh in the $WL_HOME/common/bin location. The varaible JAVA_VENDOR needs to be set to Sun and JAVA_HOME needs to point to the new java home.It is very important to set the Java vendor since there will be many parameters set based on the vendor type.




Navigate to $DOMAIN_HOME/bin folder and edit the setDomainEnv.sh file and set the new java home for the variable SUN_JAVA_HOME.




Also if there are any VM specific parameters that are set as arguments along with memory arguments  that will need to be removed.For example parameter -Xgcprio:pausetime is specific to JRockit.

Make sure from the server logs the JVM has been changed.




Setting Specific memory in SOA domain


Usually there will be many managed servers running in the SOA domain and it will be required to set specific JVM size for each of the servers. This can be achieved by changing the setSOADomainEnv.sh in the $DOMAIN_HOME/bin location as below. 

if [ "${SERVER_NAME}" = "wls_soa1" ] || [ "${SERVER_NAME}" = "wls_soa2" ]; then
  DEFAULT_MEM_ARGS="-Xms1536m -Xmx1536m"
  PORT_MEM_ARGS="-Xms4096m -Xmx4096m"

elif [ "${SERVER_NAME}" = "" ] || [ "${SERVER_NAME}" = "AdminServer" ]; then
  DEFAULT_MEM_ARGS="-Xms1536m -Xmx1536m"
  PORT_MEM_ARGS="-Xms1536m -Xmx1536m"

elif [ "${SERVER_NAME}" = "wls_osb1" ] || [ "${SERVER_NAME}" = "wls_osb2" ]; then
  DEFAULT_MEM_ARGS="-Xms1536m -Xmx1536m"
  PORT_MEM_ARGS="-Xms1536m -Xmx1536m"

elif [ "${SERVER_NAME}" = "wls_wsm1" ] || [ "${SERVER_NAME}" = "wls_wsm2" ]; then
  DEFAULT_MEM_ARGS="-Xms768m -Xmx768m"
  PORT_MEM_ARGS="-Xms768m -Xmx768m"

else
  DEFAULT_MEM_ARGS="-Xms768m -Xmx768m"
  PORT_MEM_ARGS="-Xms768m -Xmx768m"

fi


This can be useful to set specific port for the servers when monitoring the JVM remotely from tools like java mission control.

But setting a larger heap size always is not a good idea for many reasons and a capacity planning needs to be done before changing these values.For better performance there should be a 50 percent free heap space for the process to run.The free heap space can be monitored using tools like Java mission control locally or remotely which should come below 50 percent on full garbage collection. Below is a sample screen shot.





Any customization to the above mentioned files will be overridden if the configuration wizard is run again and will need to be reconfigured. As a option these customizations can be maintained in a different file (say setCustomEnv.sh) and included in setDomainEnv.sh file so that not impacted by any upgrade and can be added back.

Saturday, February 28, 2015

Oracle SOA -Payload Size threshold

Oracle JCA Adapters are designed to process large payloads but the BPEL engine consumes huge memory when processing large payloads due to XML conversions which can cause well known OutOfMemory(OOM) and jeopardize the whole system.Setting the payload threshold prevents any data burst from the downstream systems ensuring the JCA Adapters process only payloads that are less than the threshold limit and reject others.

Capping 
the payload size according to  the capacity of the infrastructure in place is always preferred since the servers will take time to recover from OOM error by garbage collection which is a "Stop the World" activity and no requests will be processed by the server during the time.


Maximum Request size for services


The threshold for maximum request size for any exposed service can be set by using this attribute.The value can be set through the EM console by navigating to the service endpoint -> Service/Reference Properties ->Exposed Service. A default value of -1 represents unlimited which can be set in units of bytes,KB,MB or GB to a suitable value that your infrastructure can handle.





This can be restricted at the DMZ level without the requests reaching the web logic servers if the architecture includes any of the below components.



  • Oracle API Gateway
  • Web Server that can restrict request size
  • Load balancer like F5 BIG IP 

payloadSizeThreshold for adapters


Setting the payload threshold ensures that Oracle JCA Adapters rejects payloads greater than the threshold limit. In case of file and FTP adapters when the native size of the payload is not available and if the specific adapter does not use the native translation library, you cannot enforce the payload size threshold limit. For example, in case of xml-debatching, where the Oracle File and FTP Adapters pass a chunk of file content and the actual native size is not known, payload size threshold limit cannot be used.

To set the global property for capping payload size login to the EM console -> soa-infra   -> Administration -> System MBean Browser - > adapter and set the value for DefaultPayloadSizeThreshold . As per the documentation DefaultPayloadSizeThreshold  works only for the inbound adapters.There is no attribute as payloadSizeThreshold which seems to be a bug and DefaultPayloadSizeThreshold works for both inbound and outbound operations.




This threshold can be increased/decreased at adapter service level by overriding the values in composite.xml which takes precedence over the global settings.





 <reference name="insert" ui:wsdlLocation="insert.wsdl">   
 <interface.wsdl interface="http://xmlns.oracle.com/pcbpel/adapter/db/Application3/One2ManyJoining/insert#wsdl.interface(insert_ptt)"/>   
 <binding.jca config="insert_db.jca"/>   
 <property name="payloadSizeThreshold" type="xs:string" many="false" override="may">100</property> </reference>   


Below are some of the options when it is required to process huge data using database  adapter.


  • MaxRaiseSize and MaxTransactionSize can be used while using database polling to restrict the number of records returned from the adapter.
  • Setting the audit level to minimal can enhance  the processing of large data with a drawback of payload not getting saved to the database
  • When processing large payload using XSLT set "streamResultToTempFile" to yes to avoid OutOfMemory error.But assign activities always perform better.
  • Parking Lot pattern can be used to throttle the messages processed.See Throttling in SOA Suite via Parking Lot Pattern at http://www.ateam-oracle.com/throttling-in-soa-suite-via-parking-lot-pattern/  for how to implement in SOA.
Other adapters like AQ,MQ,File,FTP etc... have their own parameters that can be tweaked to control the payload size when used for inbound operations.

Wednesday, January 21, 2015

Oracle SOA Suite - SAML Authentication with Message Protection

In this blog we will go through the steps required to protect a SOA composite service using a basic SAML authentication and message protection.Message protection involves encrypting the message for message confidentiality and signing the message for message integrity. We will be using the predefined OWSM policy "wss11_saml20_token_with_message_protection_service_policy" as our  server policy. 

By default Messages are protected using WS-Security's Basic 128 suite of symmetric key technologies, specifically RSA key mechanisms for message confidentiality, SHA-1 hashing algorithm for message integrity, and AES-128 bit encryption. If you would like to override any of these defaults take a copy of the policy and override the defaults.The default is to sign and encrypt the entire body for the request the response. You have the option to not do this and to instead specify the specific body elements that you want to sign and encrypt. You can also additionally specify header elements that you want to sign and encrypt. 




We have created a simple SOA composite project using mediator which just echoes the request and attached the policy to that.






Creating Keystore

For any message protection security policies to work  key stores need to be configured which contains the private keys and the certificates associated with those private key.We will be using JKS keystore which is a single OWSM keystore per domain and will be  shared by all Web services and clients running in the domain.

For demonstration purpose we will be using keytool to generate a self signed certificate and use it for our configurations.

keytool -genkeypair -v -keypass ******* -storepass oracle123 -alias orakey -keystore mykeystore.jks -keyalg rsa -keysize 2048 -storetype jks -dname 'CN=SOAtest,C=AE' -validity 365

To configure the keystore login to EM > Weblogic Domain >Web service>Security Provider Configuration > Keystore> Configure



Provide the absolute path of the JKS file if it is not kept in the default location and enter the alias for signature key and encryption key and the respective passwords.When  OWSM  is configured to use the JKS keystore, entries are created in the credential store for the credential map oracle.wsm.security.You must store the password for the decryption key.


Create user in Weblogic

The user in SAML token should be a valid weblogic user. Create the user by logging in to web logic administration console > Security Realms >my realms >Users and Groups and then Users

Server restart is required for the JKS configuration.

Testing the Policy using a Web Service Client

The Web service's base64-encoded public certificate is published in the WSDL for use by the Web service client.Attach a copy of wss11_saml20_token_with_message_protection_client_policy to your Web service client while creating a proxy. Here is a piece of sample code to get started. Tools like TCPMon can be used to intercept requests and see the encryption in action.



 public class Execute_ptClient  
 {  
  @WebServiceRef  
  private static Service1 service1;  
  public static void main(String [] args)  
  {  
   service1 = new Service1();  
     SecurityPoliciesFeature securityFeatures =  
       new SecurityPoliciesFeature(new String[] { "oracle/wss11_saml20_token_with_message_protection_client_policy" });     
     Execute_ptt execute_ptt = service1.getExecute_pt(securityFeatures);  
      Map<String,Object> req=((BindingProvider)execute_ptt).getRequestContext();  
      req.put(BindingProvider.USERNAME_PROPERTY, "samluser");  
      req.put(BindingProvider.PASSWORD_PROPERTY, "*******");  
      req.put(ClientConstants.WSSEC_KEYSTORE_TYPE,"JKS");  
      req.put(ClientConstants.WSSEC_KEYSTORE_LOCATION, "C:\\op\\cert\\mykeystore.jks");  
      req.put(ClientConstants.WSSEC_SIG_KEY_ALIAS,"orakey");  
      req.put(ClientConstants.WSSEC_KEYSTORE_PASSWORD,"*******");  
      ObjectFactory of=new ObjectFactory();  
      execute_ptt.execute(new Holder<String>("hi"));  
      System.out.println("Success");  
  }  
 }  

Monday, January 12, 2015

Oracle SOA - Changing host name or domain name

We had a requirement  to change the network configurations like host name and domain name of the SOA infrastrucutre and startup the servers with new names.This is a SOA 12C environment with  Admin server and seperate managed servers for SOA,OSB,ESS,BAM running on this machine.

Login to the admin console and perform the following steps.

1.Create a new machine pointing to the new host.Alternately you can clone the existing machine and rename to the new one and delete the old machine if its no more required.Add all the servers including the admin server to the newly created machine.(In the Domain Structure section click on Machines > MyMachine >Servers >Add >Select an existing server).

2.If the managed servers are running with different Virtual hostnames the listen address needs to be changed for each and every server.(In the Domain Structure section click Servers > server1 > General > Listen Address and change the host names )

Change the MDS datasources if required.


  • In the Change Center, click Lock & Edit.
  • In the Domain Structure section, expand Services, then JDBC, and select Data Sources.
    The Summary of JDBC Data Sources page is displayed.
  • Select the data source you want to change.
    The Settings page is displayed.
  • Select the Connection Pool tab.
  • To change the IP address, modify the URL field. For example:
    jdbc:oracle:thin:@hostname.domainname.com:1521/orcl
    
  • Click Save.
Repeat the steps for all the MDS related datasources and a server restart is required for the update.
Below files had some references to the old host names which needed for a find and replace.Take a backup of the files and do a search and replace.
$ vi filename
$%s/oldhost/newhost

  • config.xml($DOMAIN_HOME/config)
  • wsm-ccw-config.xml($DOMAIN_HOME/config/fmwconfig)
  • jps-config.xml($DOMAIN_HOME/config/fmwconfig)
  • jps-config-jse.xml($DOMAIN_HOME/config/fmwconfig)
  • stopWeblogic.sh($DOMAIN_HOME/bin)
  • stopManagedWeblogic.sh($DOMAIN_HOME/bin)
  • startManagedWeblogic.sh($DOMAIN_HOME/bin)
Search through the directories for any left over references as below and replace them.

$grep -inr /directory -e "oldhost" --exclude *.log*

Before  starting  the node manager change the hostname in the node manager.properties file.

ListenAddress=newHost

In SOA 12C the location of the property file is $DOMAIN_HOME/nodemanager by default or the custom path if changed during installation.

If the admin server is not running on local host and running with a different host name which also got changed you will not be able to start the admin server. In that case the host name should be changed before the server is shut down. If its a clone from existing server, the admin server will need to be brought up with old host name to access the console and change the host names. 

Saturday, December 6, 2014

Weblogic - List running instances

Unix-List all instances of weblogic instances running on a server

At times we need to find the weblogic instances which are up and running on a particular machine mostly in clustered environments. This might be required to figure out weblogic process from a particular domain and kill that process.

You can do a grep as below which gives all the Java processes running on the machine and it may be tough to correlate PID with the running server instances.

$ps -ef | grep java 

Below shell script can be handy to list down the servers running on a particular machine.

clear
echo "PID and  webLogic instances"
echo  "**************************************"
/usr/ucb/ps -awwx | grep "weblogic.Name" | grep -v "grep weblogic.Name" | nawk 'BEGIN {print "PID\tWeblogicServer";
print  "**************************************" } ;
        {
        NUM = match($0, "weblogic.Name=") ;
        START_POS  = RSTART+RLENGTH ;
        START_STR = substr($0, START_POS) ;
        FINISH = match(START_STR, " ") ;
        FINISH_POS = START_POS+RSTART+RLENGTH ;
        FINISH_STR = substr($0, START_POS, FINISH_POS) ;
        NUM = split(FINISH_STR,FINISH_ARRAY) ;
        printf ("%s\t%s\n",$1, FINISH_ARRAY[1]) ;
        }
        END {
        print "**********************************"}'

Below is a sample output.

PID and  webLogic instances
**************************************************
PID     WeblogicServer
**************************************************
12624   AdminServer
13367   wls_soa1
13369   wls_wsm1
**************************************************


To stop a particular server issue the below.
$ kill -9 PID
If it's admin server,to avoid the conflict of existing .lok and .DAT files you can remove the tmp and cache folders or rename them.

Another handy way to find the running process will be using the jps script in the java bin folder. For example navigate to /usr/local/java/bin and run $jps -v which gives the server name in the parameter weblogic.Name  as below.




Saturday, November 22, 2014

Configure SSL between SOA composite and external services

We had a requirement of configuring two way SSL between the SOA composite and the external services and below are the steps used to  import the partner's public cert into the trusted keystore used by SOA.

The default trusted keystore for SOA is DemoTrust.jks which is located in $MW_HOME/wlserver_10.3/server/lib directory.

For generating a custom keystore use the below  command from $MW_HOME/wlserver_10.3/server/lib or the default JKS can be used.

keytool -genkey -alias mykey -keyalg "RSA" -sigalg "SHA1withRSA" -dname "CN=soa, C=AE" -keystore customcerts.jks -storepass xxxxx 

Download the security certificate from the below URL and  Save as type “X.509 Certificate(PEM)” and name the file as “xxxxx.crt”

Import the public certificate into your own trusted keystore using the below command.

-bash-4.1$ keytool -import -alias taleo -keystore customcerts.jks -file ../cert/xxxx.crt
Enter keystore password:  ****
Re-enter new password: *****
Owner: CN=*.taleo.net, OU=Comodo PremiumSSL Wildcard, OU=Web, O=Taleo Inc., STREET=4140 Dublin Boulevard, STREET=Suite 400, L=Dublin, ST=CA, OID.2.5.4.17=94568, C=US
Issuer: CN=COMODO High-Assurance Secure Server CA, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB
Serial number: 99faa8037a4eb2faef84eb5e55d5b8c8
Valid from: Wed May 04 04:00:00 GST 2011 until: Tue Jul 05 03:59:59 GST 2016
Certificate fingerprints:
         MD5:  D3:27:02:09:99:85:0B:7C:C2:36:3D:36:21:45:DC:02
         SHA1: 33:67:A1:82:4A:60:13:C0:2A:3E:25:BB:E4:DA:86:33:87:FA:F1:34
         SHA256: 95:CB:44:39:34:BE:DA:97:62:76:88:54:61:91:AB:1D:39:89:A8:35:59:2C:EB:DD:24:34:F9:AD:41:32:4C:E1
         Signature algorithm name: SHA1withRSA
         Version: 3

Extensions:

#1: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
AuthorityInfoAccess [
  [
   accessMethod: caIssuers
,
   accessMethod: ocsp
   accessLocation: URIName: http://ocsp.comodoca.com
]
]

#2: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 3F D5 B5 D0 D6 44 79 50   4A 17 A3 9B 8C 4A DC B8  ?....DyPJ....J..
0010: B0 22 64 6B                                        ."dk
]
]

#3: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
  CA:false
  PathLen: undefined
]

#4: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
  [DistributionPoint:
]]

#5: ObjectId: 2.5.29.32 Criticality=false
CertificatePolicies [
  [CertificatePolicyId: [1.3.6.1.4.1.6449.1.2.1.3.4]
[PolicyQualifierInfo: [
  qualifierID: 1.3.6.1.5.5.7.2.1
  qualifier: 0000: 16 1D 68 74 74 70 73 3A   2F 2F 73 65 63 75 72 65  ..https://secure
0010: 2E 63 6F 6D 6F 64 6F 2E   63 6F 6D 2F 43 50 53     .comodo.com/CPS

]]  ]
]

#6: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
  serverAuth
  clientAuth
]

#7: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  DigitalSignature
  Key_Encipherment
]

#8: ObjectId: 2.5.29.17 Criticality=false
SubjectAlternativeName [
  DNSName: *.taleo.net
  DNSName: taleo.net
]

#9: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: A2 76 09 20 A8 40 FD A1   AC C8 E9 35 B9 11 A6 61  .v. .@.....5...a
0010: FF 8C FF A3                                        ....
]
]

Trust this certificate? [no]:  y
Certificate was added to keystore.

If default DemoTrust.jks is not used add the generated keystore file(.jks) and the property named "-DUseSunHttpHandler=true" to "setDomainEnv.sh" as mentioned in the below sample:

  
  set EXTRA_JAVA_PROPERTIES=%EXTRA_JAVA_PROPERTIES% -Dsoa.archives.dir=%SOA_ORACLE_HOME%\soa -Dsoa.oracle.home=%SOA_ORACLE_HOME% -Dsoa.instance.home=%DOMAIN_HOME% -Dtangosol.coherence.clusteraddress=227.7.7.9 -Dtangosol.coherence.clusterport=9778 -Dtangosol.coherence.log=jdk -Djavax.xml.soap.MessageFactory=oracle.j2ee.ws.saaj.soap.MessageFactoryImpl -Dweblogic.transaction.blocking.commit=true -Dweblogic.transaction.blocking.rollback=true -Dweblogic.security.SSL.ignoreHostnameVerification=true -Dweblogic.webservice.client.ssl.strictcertchecking=false -Dweblogic.security.SSL.enforceConstraints=off -Dssl.debug=true -Djavax.net.ssl.trustStore=%WL_HOME%\server\lib\opinionmeter.jks -Djavax.net.ssl.trustStorePassword=opinionmeter -Dweblogic.security.SSL.verbose=true -DUseSunHttpHandler=true

  
  set EXTRA_JAVA_PROPERTIES=%EXTRA_JAVA_PROPERTIES% -Dem.oracle.home=C:\Wls_10.3.6\Middleware\oracle_common -Djava.awt.headless=true -DUseSunHttpHandler=true

  set JAVA_OPTIONS=%JAVA_OPTIONS% %JAVA_PROPERTIES% -Dwlw.iterativeDev=%iterativeDevFlag% -Dwlw.testConsole=%testConsoleFlag% -Dwlw.logErrorsToConsole=%logErrorsToConsoleFlag% -DUseSunHttpHandler=true

Restart the servers.

Below are the commands to delete the existing certificate and import again.

keytool -list -keystore opinionmeter.jks -storepass *****
keytool -delete -alias xxx -keystore v.jks -storepass *****
keytool -import -alias xxx -file xxxx.cer -keystore c.jks -storepass  *****

If the certificate is not imported properly below error will be seen.

Message send failed: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

To route the request through proxy server and use ssl set the below in the service reference in composite.xml

<property name="oracle.webservices.proxyHost" type="xs:string"
                many="false">10.xxx.xx.x</property>
 <property name="oracle.webservices.proxyPort" type="xs:string"
                many="false">80</property>
  <property name="oracle.soa.two.way.ssl.enabled">true</property>


Thursday, November 13, 2014

Oracle SOA DB Adapter Fails to return XML Type with MS SQLServer

When you use DB Adapter to access Microsoft  SQL Server Stored Procedures that return output  with XML types, a class type mapping exception can be thrown.

A stack trace similar to the below one can be thrown from the adapter.
Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'Test' failed due to: Unimplemented string conversion. Conversion of JDBC type to String is not supported. An attempt was made to convert a Java object to String using an unsupported JDBC type: . Use a data type with a supported JDBC type. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution.


To fix this, change the driver from “com.microsoft.sqlserver.jdbc.SQLServerDriver “  to “weblogic.jdbc.sqlserver.SQLServerDriver “ by logging to the console and changing the driver class name or create a new connection by using of Oracle’s MS SQL server driver.



Also make sure to create a strong schema by introspecting the stored procedure using some input values. If weak schema is used, XML results greater than 2,033 characters in length will be returned  in multiple rows of 2,033 characters each.

For example,
CREATE PROCEDURE [dbo].[spSoaTest] @param1 int AS BEGIN SELECT TOP 500 FROM dbo.TableXX tbl ORDER BY  1 DESC  FOR XML PATH('test'),ROOT('test1'),TYPE END

If you omit the "type" after the "for xml" you may get the below exception while introspecting the stored procedure in JDeveloper.


BINDING.JCA-11819
Database type not supported.
Encountered a database type ntext that is either not supported or is not implemented.
Parameter XML_F52E2B61-18A1-11d1-B105-00805F49916B is of type ntext which is either not supported or is not an implemented datatype.
Check to ensure that the type of the parameter is one of the supported datatypes or that there is a collection or user defined type definition representing this type defined in the database.

                at oracle.tip.adapter.db.sp.xsd.sqlserver.DatabaseBrowser.expandParameter(DatabaseBrowser.java:88)
                at oracle.tip.adapter.db.sp.xsd.sqlserver.DatabaseBrowser.expandParameters(DatabaseBrowser.java:65)

Sunday, September 28, 2014

Oracle SOA Suite 12C installation

We had a requirement of installing Oracle SOA suite 12c in a single node and below are the steps we followed to set up the environment.


OS: Linux

We wanted to install Oracle HTTP Server instance in the DMZ to front-end the web Logic Server hosted in the application layer and hence did the standalone installation. The steps can be found here

If you would like to install java here are the steps we followed.


Directory strucutre

Below is the directory structure we had used.

ORACLE_HOME=/u01/oracle/products/soa_oracle_home
ORACLE_COMMON_HOME=/u01/oracle/products/soa_oracle_home/oracle_common
WL_HOME=/u01/oracle/products/soa_oracle_home/wlserver
ORACLE_SOA_HOME=/u01/oracle/products/soa_oracle_home/soa
EM_DIR=/u01/oracle/products/soa_oracle_home/em
JAVA_HOME=/u01/java/jdk1.7.0_65
DOMAIN_HOME=/u01/oracle/config/domains/soa_domain
MSERVER_HOME=/u01/oracle/config/domains/soa_domain
APPLICATION_HOME=/u01/oracle/config/applications/soa_domain
DEPLOY_PLAN_HOME=/u01/oracle/config/dp
OHS_ADMIN_CONF_DIR=/u01/oracle/config/domains/soa_domain/config/fmwconfig/components/OHS/instance_name
SOA_LOGS=/u01/oracle/config/domains/soa_domain/servers/wls_soa/logs
OSB_LOGS=/u01/oracle/config/domains/soa_domain/servers/wls_osb/logs
ESS_LOGS=/u01/oracle/config/domains/soa_domain/servers/wls_ess/logs
BAM_LOGS=/u01/oracle/config/domains/soa_domain/servers/wls_bam/logs

Installing and Configuring the Oracle Fusion Middleware Infrastructure


For installation of  SOA 12c, you need to get WebLogic 12c through the Oracle Fusion Middleware Infrastructure installation, which contains all required components for SOA.The standard Weblogic 12.1.3 Installer fmw_12.1.3.0.0_wls.jar, does not have the required JRF templates. The correct one is fmw_12.1.3.0.0_infrastructure.jar

Below error can be seen if the wrong file is used.


INST-07551: Not all depenedent featuresets for install type "SOA Suite"


                   





This screen verifies that your system meets the minimum necessary requirements.




Use this screen to verify the installation options you selected.


This screen appears when the installation is complete.




Click Finish to dismiss.



Installing the Oracle SOA Suite


Launch the installation program by invoking the java executable

$ java -jar fmw_12.1.3.0.0_soa.jar



Specify the location of your Oracle home directory


Select SOA Suite for creating the Oracle SOA Suite standard topology




When the progress bar reaches 100% complete, you can click Finish to dismiss the installer



Installing the Oracle Service Bus Software




Launch the installation program by invoking the java executable
java -jar fmw_12.1.3.0.0_osb.jar




Specify the location of your Oracle home directory.




Select Service Bus.


 Click Next when the progress bar completes 100%.




Click Finish.




Starting the Repository Creation Utility (RCU)


Navigate to the ORACLE_HOME/oracle_common/bin directory on your system. Ensure that the JAVA_HOME environment variable is set to the location of a certified JDK on your system

$export JAVA_HOME=/u01/java/ jdk1.7.0_55

$./rcu




Provide the database connection details for RCU to connect to your database.


Select Create new prefix and then select SOA Suite schema


 specify and confirm your passwords







Click Close to dismiss RCU.






Configuring the Oracle SOA Suite Domain

To begin domain configuration, navigate to the ORACLE_HOME/oracle_common/common/bin directory and start the WebLogic Server Configuration Wizard.

        ./config.sh


select the following templates


Select the location in which you want to store your applications associated with your domain


Specify the user name and password for the default WebLogic Administrator account for the domain

  Specify the Domain Mode and JDK


Enter the database details to connect to the database and Service Table (STB) schema to automatically retrieve schema information for the schemas needed to configure the domain.Click Get RCU Configuration when you are finished specifying the database connection information








Configure  the Administration Server Listen Address



Select Per Domain Default Location as the Node Manager type, then specify the Node Manager credentials.


Configure Managed Servers



Use the Machines screen to create a new machine in the domain.











Extending the Domain for Oracle Service Bus

Navigate to the ORACLE_HOME/oracle_common/common/bin directory and start the WebLogic Server Configuration Wizard.


Select osb.



Connect to the database and Service Table (STB) schema. The databse details will be pulled automatically from the existing domain files





On the Managed Servers screen, a new Managed Server named wls_osb  is created





Assigning Managed Servers to the machine




Starting the Node Manager & Servers


To start your per-domain Node Manager, go to the DOMAIN_HOME/bin directory and Start the Node Manager as shown below.
nohup sh startNodeManager.sh >nm.out&

Please note the location of the nodemanger script file has got changed and you will get an error as below if you try to start the node manager from the $WL_HOME/server/bin

<INFO> <Loading domains file: /u01/oracle/products/soa_oracle_home/oracle_common/common/nodemanager/nodemanager.domains>
<WARNING> <Domains file not found: /u01/oracle/products/soa_oracle_home/oracle_common/common/nodemanager/nodemanager.domains><Sep 28, 2014 4:13:31 PM GST>
<INFO> <Loading identity key store: FileName=/u01/oracle/products/soa_oracle_home/oracle_common/common/nodemanager/security/DemoIdentity.jks, Type=jks, PassPhraseUsed=true>
<SEVERE> <Fatal error in NodeManager server: Identity key store file not found: /u01/oracle/products/soa_oracle_home/oracle_common/common/nodemanager/security/DemoIdentity.jks>

To start the Administration Server create a Boot Identity File in $DOMAIN_HOME/servers/AdminServer/security with below entries.

cd $DOMAIN_HOME
mkdir -p servers/AdminServer/security
vi boot.properties
username=weblogic
password=password

This contents will be encrypted during the server startup.

Go to the DOMAIN_HOME/bin directory and start the server as follows.
nohup sh startWebLogic.sh &

Login to the console using http://adminserverhost:port/console and start the managed servers.