Saturday, May 19, 2012

Advantages of EJB 3.0

Advantages of EJB 3.0:

The below are the some of the advantages of using EJB 3.0


  1. More work is done by container,less by developer
  2. Everything is a POJO(Plain old java object)
  3. Simplify programming model
  4. Hibernate like ORM(Object Relational Mapping)
  5. Dependency injection
  6. Annotations(Requires Java 5)
  7. Bean specifies what it needs through metadata
  8. No longer written to unneeded container interfaces
  9. Deployment descriptor no longer required


FTP Upload/Download with Java

The below java code will help us to Download/Upload files from/To FTP server.

import java.io.*;
import java.net.*;

public class FTPClient {
    public final String host;
    public final String user;
    protected final String password;
    protected URLConnection ftpurl;

    public FTPClient(String host, String user, String password) {
        this.host = host;
        this.user = user;
        this.password = password;
        this.ftpurl = null;
    }

    private URL createURL(String destfile) throws MalformedURLException {
        if (user == null)
            return new URL("ftp://" + host + "/" + destfile + ";type=i");
        else
            return new URL("ftp://" + user + ":" + password + "@" + host +"/" + destfile + ";type=i");
    }

    protected InputStream openDownloadStream(String destfile) throws Exception {
        URL url = createURL(destfile);
        ftpurl = url.openConnection();
        InputStream is = ftpurl.getInputStream();
        return is;
    }

    protected OutputStream openUploadStream(String targetfile) throws Exception {
        URL url = createURL(targetfile);
        ftpurl = url.openConnection();
        OutputStream os = ftpurl.getOutputStream();
        return os;
    }

    protected void close() {
        ftpurl = null;
    }

    public void Upload(String sourcefile, String destfile) {
        try {
            OutputStream os = openUploadStream(destfile);
            FileInputStream is = new FileInputStream(sourcefile);
            byte[] buf = new byte[33554432];
            int c;
            while (true) {
                c = is.read(buf);
                if (c <= 0)
                    break;
                os.write(buf, 0, c);
            }
            os.close();
            is.close();
            close();
        } catch (Exception e) {
            System.err.println(e.getMessage());
            e.printStackTrace();
        }
    }

    public void Download(String sourcefile, String destfile) {
        try {
            InputStream is = openDownloadStream(destfile);
            FileOutputStream os = new FileOutputStream(sourcefile);
            byte[] buf = new byte[41943040];//Buffer size set to 40 MB ,change based on the file size
            int c;
            while (true) {
                c = is.read(buf);
                if (c <= 0)
                    break;
                os.write(buf, 0, c);
            }
            is.close();
            os.close();
            close();
        } catch (Exception e) {
            System.err.println(e.getMessage());
            e.printStackTrace();
        }
    }
}



Thursday, May 17, 2012

Setting the Composite Instance Name (Title) in Oracle Mediator - Oracle SOA Suite

Setting the Composite Instance Name (Title) in Oracle Mediator - Oracle SOA Suite:

 The composite instance name (Title) will help us to track the composite instances at runtime, the below two approaches can be used to set the instance Name (Title) for the composite with the Mediator instances.

Oracle SOA Suite 11g:

Assign Activity:

1.       Click on the Assign Values in the Routing Rule section and create new Assign value


 
2.       Select the Type as expression in the From (Left) side and insert the Mediator Extension Function setCompositeInstanceTitle and pass the input based on which variable the title should be set.
 
 



Recovering the Oracle BPEL instances from the Recovery Queue – Oracle SOA Suite

 Recovering the Oracle BPEL instances from the Recovery Queue – Oracle SOA:

Sometimes the BPEL instances may go to the recovery queue, the instances in the recovery queue can be recovered manually to continue the processing.
Below are the some of the reasons the instances to go to manual recovery.
  1. There are not enough threads or memory to process the message.
  2. The server shuts down or crash before it finishes processing the BPEL message
  3. The engine could not finish processing the message before reaching the time-out as dictated by the transaction-timeout configuration

Recovering the BPEL instances:

Oracle SOA Suite 11g:

  1. Login  to EM console
  2. Right click on soa-infra  ,Click on Service Engine - BPEL
  3. Click on Recovery tab
  4. Change the Type accordingly(Invoke,Activity,Callback) and the Message state to “Undelivered”  and click on search
  5. All the recoverable messages that match the criteria will be displayed.
  6. Select the required messages and click on Recovery button.
 

Oracle SOA Suite 12c:

  1. Login  to EM console
  2. Click on Target Navigation
  3. Click on soa-infra
  4. Click on SOA Infrastructure - Service Engines - BPEL
  5. Click on Recovery tab
  6. Change the Type accordingly(Invoke,Activity,Callback) and the Message state to “Undelivered”  and click on search
  7. All the recoverable messages that match the criteria will be displayed.
  8. Select the required messages and click on Recovery button.
em_console_target_navigation


em_console_service_engines


em_console_recovery_messages




Tuesday, May 8, 2012

Proxy Configuration in Oracle SOA Suite 11g


Proxy Configuration in Oracle SOA Suite 11g:

If we are invoking any web services and it needs to be passed through Proxy then the proxy server details should be configured on soa11g server. In SOA11g we have two ways of configuring the proxy. The first way is to configure the Server Level and the second level is Composite level.
Configuration can be done using Enterprise manager/JDeveloper

Server Level from EM console:

 Login to the em console
Navigate to SOA Infrastructure->SOA Administration->Common Properties -> More SOA Infra Advanced Configuration Properties...
Enter the HttpProxyHost, HttpProxyPort, HttpProxyUsername and HttpProxyPassword
Click on Apply and then restart Server


 

Composite service Level from EM console:

If we want to configure the configure proxy only to a particular composite the can be configured in composite Level.
Navigate to the Process in EM and in the dashboard click on the Service (Adapter used to invoke the web service to which the proxy is required) under the Services and References section.
Click on the properties tab and you can find the different properties as shown below where you can fill the Proxyhost, ProxyPort.