Tug’s Blog

My journey in Big Data, Hadoop, NoSQL and MapR

Good Taste Tool: del.icio.us

| Comments

I am starting to use del.icio.us. A great way to manage your own bookmarks but also to share them with others…

It is fun to see how many people are sharing the same bookmarks as you, and help you to find information related to the different categories…

Also the integration with Firefox using the delicious plugin make the usage of the bookmark manager very easy. You can also use the Apple Mac OS X client for del.icio.us.

Here my bookmarks… still working on it.

Sample Code: BLOB Insertion in Oracle10g

| Comments

Responding to a customer question about Blob insertion in Oracle 10g DB using the JDBC 3.0 driver. Very Simple application. Download Java Source See insertBlob method.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package demo;

import java.sql.*;
import java.io.*;
import java.sql.PreparedStatement;
import java.util.*;

import oracle.jdbc.driver.*;
import oracle.sql.BLOB;



/**
* Insert record in the MEDIA table
*   MEDIA (file_name varchar2(256), file_content BLOB);
*/
public class BlobOracle
{
  private final static String hostname = "localhost";
  private final static String port = "1521";
  private final static String sid = "ORCL";
  private final static String username = "scott";
  private final static String password = "tiger";
  private static String fileLocation;
  private static Connection connection;

  public BlobOracle()
  {
  }

  /**
  *
  * @param args
  */
  public static void main(String[] args)
  {
    try
    {
      if (args.length == 0)
      {
        System.out.println("\n\n  Usage demo.BlobOracle ");
        System.exit(0);
      }

      fileLocation = args[0];

      setConnection();
      insertBLOB();

    } catch (Exception ex)
    {
      ex.printStackTrace();
      } finally
      {
      }
    }


    private static void setConnection() throws SQLException
    {
      DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
      connection = DriverManager.getConnection("jdbc:oracle:thin:@"+hostname+ ":"+ port +":"+ sid , username , password);
      connection.setAutoCommit(false); // we must control the commit
    }

    private static void insertBLOB() throws SQLException, Exception
    {
      BLOB blob;
      File file ;
      FileInputStream is;
      OutputStream os;

      long ts1 = System.currentTimeMillis();


      //Create a statement.
      PreparedStatement pstmt = connection.prepareStatement("insert into media (file_name, file_content) values (?,empty_blob())");
      file = new File(fileLocation);
      String fileName = file.getName();
      //Set the file name and execute the query
      pstmt.setString(1, fileName);
      pstmt.execute();

      //Take back the record for update (we will insert the blob)
      //supposely the file name is the PK
      pstmt = connection.prepareStatement("select file_content from media where file_name = ? for update");
      pstmt.setString(1, fileName);

      //Execute the query, and we must have one record so take it
      ResultSet rset = pstmt.executeQuery();
      rset.next();

      //Use the OracleDriver resultset, we take the blob locator
      blob = ((OracleResultSet)rset).getBLOB("file_content");

      is = new FileInputStream(file); //Create a stream from the file
      // JDBC 2.0
      //os = blob.getBinaryOutputStream(); //get the output stream from the Blob to insert it
      // JDBC 3.0
      os = blob.setBinaryStream(0); //get the output stream from the Blob to insert it

      //Read the file by chuncks and insert them in the Blob. The chunk size come from the blob
      byte[] chunk = new byte[blob.getChunkSize()];
      int i=-1;
      System.out.println("Inserting the Blob");
      while((i = is.read(chunk))!=-1)
      {
        os.write(chunk,0,i); //Write the chunk
        System.out.print('.'); // print progression
      }

      // When done close the streams
      is.close();
      os.close();

      //Close the statement and commit
      pstmt.close();
      long ts2 = System.currentTimeMillis();

      connection.commit();
      connection.close();

      System.out.println("\n"+ (ts2 - ts1) +" ms" );


    }


  }

Struts or JSF by Craig McClanahan

| Comments

Craig McClanahan has started a blog… and his second post -after a quick introduction- is about the ‘hot’ subject of the usage of Struts or JSF.

Quote:

For new development, here’s the best strategy for determining what to do:

  • Evaluate the two technologies individually, to see if they satisfy your requirements.
  • If one or the other technology is sufficient, go ahead and use it (it’s easier to learn and use one technology rather than two where possible); keeping in mind, however, the caveats about Struts HTML tags mentioned above.
  • If your requirements include unique features supported only by Struts (such as Tiles or client side validation support), feel free to use the two frameworks together.

Oracle Application Server 10g Sets World Record SPECjAppServer 2002 Performance Result on Fujitsu PRIMEPOWER Servers

| Comments

Oracle and Fujistu just announced new SpecJ2002 results, establishing a new record of 5,991.73 TOPS@MultipleNode (total operations per second) with a price-performance of 654.20 Euros/TOPS@MultipleNode. This was realized using Oracle Application Server 10g running on Fujitsu servers.

The results are available on the Spec Web site, the Press Release here.

Have We Lost the Groove ?

| Comments

Like lot of Java developers I was very excited about the announcement of the creation of the JSR-241… But where are we now ?

The JSR mailing list (http://news.gmane.org/gmane.comp.lang.groovy.jsr ) is very quiet… No meeting, not a lot of question/response. And like Patrick M. I have friends that have asked to be part of the Expert Group and never had any response.

I think that the Groovy Language is really a nice way of putting Java to the next level, easier to learn, to use and still powerful… I will not go in an enumeration of the benefits of Groovy here… but just asking what the Expert Group is doing ? What is the next step for the Groovy Language and the JCP ?