9i CLOBs vs JDBC -- contradiction and frustration

Oracle's various "what's new" whitepapers for 9i all joyfully proclaim its new ability to handle CLOB fields using SQL semantics. However, I've spent most of the day getting increasingly frustrated, because it's increasingly beginning to look like they should have followed it with a big, bold, red warning that it doesn't apply if you're using JDBC.
What's the real story about 9i and CLOBs? Does 9i REALLY support treating them like big, ersatz VARCHAR2 objects (at least, for things that are too big for VARCHAR2, but still pretty small)? And if it does, what does taking advantage of this great new convenience using JDBC require (besides dropping ojdbc14.jar into the classpath)?
So far, I've seen at least one post here declaring that Statement.setString(int index, String value) is still limited to 4000 characters. If that's true, is it a JDBC-imposed limit, or an Oracle-imposed limit? And if it's Oracle imposed, doesn't that flat-out contradict their own documentation? I guess I could live with limits on setString(), but if the same restriction exists with getString(), I'm going to go outside and shout vile, anti-Oracle obscenities at the traffic for a while... ;-)
Seriously, though... is the general lack of working examples of newly-convenient CLOB access via JDBC just because few people are aware of it yet and keep doing it the old way, or are the new SQL Semantics capabilities utterly meaningless as far as practical get/set column access from JDBC is concerned, and we're still stuck having to handle our own stream and buffer semantics just to read 6,000 character long fields?

how I did clobs (before new stuff I think, did early this year) as a get around for CMP. having to use oracle.sql.CLOB is a drawback but databases shouldnt change too often.
import javax.sql.*;
import java.sql.*;
import java.io.*;
import oracle.sql.CLOB;
setting::
Connection c = null; PreparedStatement p = null; ResultSet r = null;
try {
ServiceLocator sl = ServiceLocator.getInstance();
DataSource ds = sl.getDataSource(dsName);
c = ds.getConnection();
c.setAutoCommit(false);
PreparedStatement ps = c.prepareStatement("GET myCLOB from mytable where pid=?");
ps.setLong(1,aPK.longValue());
r = ps.executeQuery();
if (r.next()) {
CLOB oraclob = (CLOB)r.getClob("myCLOB");
oraclob.trim(0);
Writer w = oraclob.getCharacterOutputStream();
w.write(clob);
w.flush();
w.close();
c.commit();
c.setAutoCommit(true);
r.close();
ps.close();
c.close();
catch (Exception e)
e.printStackTrace(System.out);
throw new Exception(e.getMessage());
and getting::
Connection c = null; PreparedStatement p = null; ResultSet r = null;
String ret = "Empty";
try {     
ServiceLocator sl = ServiceLocator.getInstance();
DataSource ds = sl.getDataSource(dsName);
c = ds.getConnection();
p = c.prepareStatement(stmt);
p.setLong(1,aPK.longValue());
r = p.executeQuery();
if (r.next())
Clob clob = r.getClob("myCLOB");
ret = clob.getSubString(1L,Integer.parseInt(Long.toString(clob.length())));
r.close(); p.close(); c.close();
catch (NullPointerException npe) {}
catch (Exception e)
throw new Exception(e.getMessage());

Similar Messages

  • Creating a CLOB in jdbc

    I have a PL/SQL stored procedure which accepts a CLOB data type as one of the arguments. This procedure inserts a record into a table which has a column of datatype CLOB.
    Using jdbc, my java program creates a CallableStatement to the stored proc. Now I wish to create the CLOB based on a String value and pass it to the stored proc.
    This is a snippet of my code.
    import java.io.*;
    import java.sql.*;
    import oracle.jdbc.driver.*;
    import oracle.sql.*;
    public class TestClob2 {
    public static Connection getConnection() throws FPError {
    Connection connection = null;
    String hostname= "ahost";
    String host = "jdbc:oracle:thin:@" + hostname+ ":1521:db";
    String user = "user";
    try {
    DriverManager.registerDriver( new oracle.jdbc.driver.OracleDriver());
    connection = DriverManager.getConnection(host, user, user);
    } catch ( Exception e ){
    System.out.println("could not get connection" + e.toString());
    } catch ( Throwable t ){
    System.out.println("could not get connection" + t.toString());
    } finally {
    return connection;
    public static void main( String[] args){
    Connection con = null;
    try {
    con = getConnection();
    OracleCallableStatement stmt = (OracleCallableStatement) con.prepareCall("{call plsqlStoredProc(? )}");
    String message="Test for Clob";
    try
    oracle.sql.CLOB cl = new oracle.sql.CLOB( (OracleConnection) con);
    //byte[] msg = message.getBytes("UTF8");
    //CLOB cl = new CLOB( (OracleConnection) con, msg);
    if ( cl == null ) System.out.println("clob is null");
    long index = cl.getLength();
    System.out.println("length is " + l );
    int i = cl.putString(index+1, message);
    stmt.setCLOB(1, cl);
    stmt.executeUpdate();
    catch (SQLException excep)
    System.out.println(excep.getMessage());
    excep.printStackTrace();
    //new LogException(excep.getMessage());
    } catch (Exception e ) {
    System.out.println("caught exception " + e.toString());
    e.printStackTrace();
    } finally {
    try { if (con != null ) con.close(); } catch ( Exception e){ }
    I get the following error
    caught exception java.lang.NullPointerException:
    java.lang.NullPointerException:
    at oracle.sql.Datum.getBytes(Datum.java:147)
    at oracle.jdbc.driver.OraclePreparedStatement.setCLOB(OraclePreparedStat
    ement.java)
    at oracle.sql.CLOB.plsql_write(Compiled Code)
    at oracle.jdbc.ttc7.TTC7Protocol.lobWrite(TTC7Protocol.java)
    at oracle.sql.CLOB.putChars(CLOB.java)
    at oracle.sql.CLOB.putString(CLOB.java)
    at TestClob3.main(TestClob3.java:38)
    Can anybody tell me how I can create a CLOB in jdbc to pass it over to a PL/SQL stored proc.
    When I test the stored procedure using a PL/SQL proc ( creating a temporary clob and passing it to the stored proc ) it works fine.
    Can somebody point out the mistake in my code. Appreciate it.
    Thanks.
    null

    Hello,
    First of i must admit that i am naive to installation softwares. But i can tell u that u can create tables using java and jdbc. I have done it myself. As far as creating database in concerned i haven't tried it out yet. But my gut feeling is that u can create it. I u are interested in having a look at the sample code then here it is.
    import java.sql.*;
    public class demoddl
    public static void main(String[] args) throws SQLException
    try
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection con = DriverManager.getConnection("jdbc:oracle:thin:@10.0.0.8:1521:oraserv","scott","lion");
    Statement stmt = con.createStatement();
    boolean b = stmt.execute("create table demoddl(a number)");
    System.out.println("Boolean
    catch(Exception e)
    System.out.println("Exception="+e.toString());
    }

  • Problem using CLOB in JDBC (NewLOBAPISample)

    I've just tried to run the JDBC NewLOBAPISample, and everything works fine until I try to insert or update on the CLOB column using any characters other than base ASCII. For example, if I attempt to insert the String "$100", it works just fine, but "£100" results in:
    java.sql.SQLException: No more data to read from socket
    I've experimented with this issue with a much smaller test case of my own, and I've been able to narrow down the problem, as I've outlined below. In all cases, PreparedStatement is used for executing.
    Let's say we have a table named "Test" with one CLOB column named "text".
    The original "official" API for inserting a CLOB using the latest 1.4 JDBC Oracle thin driver is:
    // first insert an "empty CLOB"
    PreparedStatement ps;
    ps = con.prepareStatement("INSERT INTO Test (text) VALUES (empty_clob())");
    ps.executeUpdate();
    // then select the empty CLOB
    con.setAutoCommit(false);
    ps = con.prepareStatement("SELECT text FROM Test FOR UPDATE");
    ResultSet rs = ps.executeQuery();
    rs.next();
    CLOB clob = ((OracleResultSet)rs).getCLOB(1);
    // now write to the CLOB
    Writer out = clob.getCharacterOutputStream();
    out.write(myLongText);
    out.close();
    // we're done
    connection.commit();
    The method that is advertised in NewLOBAPISample, and which I've also seen on the Java Developer Forum, is outlined here:
    // first, create statement to insert
    PreparedStatement ps;
    ps = con.prepareStatement("INSERT INTO Test (text) VALUES (?)");
    // create a temporary CLOB and write to it
    CLOB clob = CLOB.createTemporary(con, true, CLOB.DURATION_SESSION);
    Writer out = clob.getCharacterOutputStream();
    out.write(myLongText);
    // set the CLOB on the PreparedStatement and execute
    ps.setClob(1, clob);
    ps.executeUpdate();
    Now, in the above two cases, if "myLongText" has any characters in it besides standard alpha-numerics, the latter approach will fail, although the former (original) approach will still work. In my case, I need to save Danish characters in the CLOB data. (I can't type these characters in this message, as for some reason they are being converted to "æ å ø" during posting, instead of the letters I've typed on my keyboard.)
    Here is a stack trace when I try the createTemporary approach with a short String that contains one or more non-standard characters:
    java.io.IOException: No more data to read from socket
         at oracle.jdbc.dbaccess.DBError.SQLToIOException(DBError.java:716)
         at oracle.jdbc.driver.OracleClobWriter.flushBuffer(OracleClobWriter.java:270)
         at oracle.jdbc.driver.OracleClobWriter.close(OracleClobWriter.java:232)
    Here's the strack trace when the insert String contains only ONE character that is non-standard:
    java.sql.SQLException: No more data to read from socket
         at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
         at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
         at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:1160)
         at oracle.jdbc.ttc7.MAREngine.unmarshalUB1(MAREngine.java:963)
         at oracle.jdbc.ttc7.MAREngine.unmarshalSB1(MAREngine.java:893)
         at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:369)
         at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
         at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
         at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
         at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)
         at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
    Any help with this would be MUCH appreciated.
    Thanks,
    David Karlton

    hi David,
    i tried inserting non-alphanumeric chars but still it goes thru fine.
    here is what i did,
    create table testlob ( id number(5),lobcol clob);
    LobInJava.java
    import java.sql.*;
    import oracle.jdbc.*;
    import oracle.sql.*;
    class LobInJava
    public static void main(String args[]) throws Exception
    DriverManager.registerDriver(new
    oracle.jdbc.driver.OracleDriver());
    Connection conn = DriverManager.getConnection
    ("jdbc:oracle:thin:@host:1522:ora9idb", "scott", "tiger");
    StringBuffer myLongText = new StringBuffer("nm{H$ñVmZ".length() * 10 );
    for(int i=0 ;i < 1000 ;i++ )
    myLongText.append("nm{H$ñVmZ");
    System.out.println( myLongText.length());
    PreparedStatement ps;
    ps = conn.prepareStatement("INSERT INTO Testlob (id,lobcol) VALUES (2,empty_clob())");
    ps.executeUpdate();
    // then select the empty CLOB
    conn.setAutoCommit(false);
    ps = conn.prepareStatement("SELECT lobcol FROM Testlob where id=2 FOR UPDATE");
    ResultSet rs = ps.executeQuery();
    rs.next();
    CLOB clob = ((OracleResultSet)rs).getCLOB(1);
    // now write to the CLOB
    java.io.Writer out = clob.getCharacterOutputStream();
    out.write(myLongText.toString());
    out.close();
    // we're done
    conn.commit();
    ps.close();
    // first, create statement to insert
    PreparedStatement ps;
    ps = conn.prepareStatement("INSERT INTO Testlob (id,lobcol) VALUES (1,?)");
    // create a temporary CLOB and write to it
    CLOB clob = CLOB.createTemporary(conn, true, CLOB.DURATION_SESSION);
    java.io.Writer out = clob.getCharacterOutputStream();
    out.write(myLongText.toString());
    out.close();
    // set the CLOB on the PreparedStatement and execute
    ps.setClob(1, clob);
    ps.executeUpdate();
    ps.close();
    conn.close();
    i am using jdk 1.3 and Oracle9i v9.0.1
    Regards
    Elango.

  • Oracle 10.1.0 jdbc driver and 9i Database

    Are there any known issues with using the Oracle 10.1.0 jdbc drivers and 9i Database. I was lead to believe that the Jdbc drivers are backward compatible.
    Thanks

    Sorry for not including my error:
    Hello all,
    I am getting an error "Bigger type length than Maximum" when calling a stored procedure that returns a small result set. I am not working with BLOBs or CLOBs and cannot find anything on the web that addresses my specific situation.
    I would greatly appreciate any help available in solving this problem.
    Here is my data access object:
    package my.app.access;
    import java.sql.CallableStatement;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import oracle.jdbc.OracleTypes;
    import oracle.jdbc.OracleTypes.*;
    import my.app.beans.Person;
    import my.app.util.Database;
    public class PersonAccess {
         public Person getPerson(Person person) throws SQLException, Exception {
              Database db = new Database();
              Connection con = db.connect();
              ResultSet rs;
              CallableStatement cs = con
                        .prepareCall("{call SP_GET_PERSON_BY_USER_ID (?,?)}");
              cs.setString(1, person.getUserId());
              cs.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);
              cs.execute(); // ################### ERROR HAPPENS ON THIS LINE
              rs = (ResultSet) cs.getObject(2);
              if (rs.next() == true) {
                   person.setId(new Integer(rs.getString("id")).intValue());
                   person.setFirstName((String) rs.getString("first_name"));
                   person.setLastname((String) rs.getString("last_name"));
                   person.setPhoneNumber((String) rs.getString("phone_number"));
                   person.setEmailAddress((String) rs.getString("email_addr"));
                   person.setRoleId(new Integer(rs.getInt("role_id")).intValue());
                   //this.roleName = rs.getString("role_name");
                   person.setPassword((String) rs.getString("password"));
                   person.setAgencyId(new Integer(rs.getInt("agency_id")).intValue());
                   if (rs.getString("account_disabled").equals("1"))
                        person.setAccountDisabled(true);
                   if (rs.getString("pwd_change_reqd").equals("0"))
                        person.setPasswordChangeRequired(false);
              return person;
    And here is a test object:
    package my.app.access;
    import my.app.beans.*;
    public class testAccess {
         * @param args
         public static void main(String[] args) {
              // TODO Auto-generated method stub
              PersonAccess pa = new PersonAccess();
              Person person = new Person();
              person.setUserId("jrlaughlin");
              try {
                   pa.getPerson(person);
              } catch (Exception e) {
                   e.printStackTrace();
              System.out.println("done");
    And here is the output from this test app
    java.sql.SQLException: Bigger type length than Maximum
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161)
         at oracle.jdbc.driver.DatabaseError.check_error(DatabaseError.java:884)
         at oracle.jdbc.driver.T4CMAREngine.buffer2Value(T4CMAREngine.java:2230)
         at oracle.jdbc.driver.T4CMAREngine.unmarshalUB4(T4CMAREngine.java:1146)
         at oracle.jdbc.driver.T4CTTIoac.unmarshal(T4CTTIoac.java:215)
         at oracle.jdbc.driver.T4C8TTIuds.unmarshal(T4C8TTIuds.java:121)
    done
         at oracle.jdbc.driver.T4CTTIdcb.receiveCommon(T4CTTIdcb.java:125)
         at oracle.jdbc.driver.T4CTTIdcb.receiveFromRefCursor(T4CTTIdcb.java:103)
         at oracle.jdbc.driver.T4CResultSetAccessor.unmarshalOneRow(T4CResultSetAccessor.java:165)
         at oracle.jdbc.driver.T4CTTIrxd.unmarshal(T4CTTIrxd.java:787)
         at oracle.jdbc.driver.T4CTTIrxd.unmarshal(T4CTTIrxd.java:704)
         at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:526)
         at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:179)
         at oracle.jdbc.driver.T4CCallableStatement.execute_for_rows(T4CCallableStatement.java:782)
         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1027)
         at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2887)
         at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:2978)
         at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4102)
         at my.app.access.PersonAccess.getPerson(PersonAccess.java:68)
         at my.app.access.testAccess.main(testAccess.java:17)
    I am only having this problem when using the 10g jdbc driver, 9.2.0.4 and up are fine.
    Thanks again.....

  • JDBC Drviers and Linux

    What driver should I use for O8.1.6 using RedHat 6.2 Linux
    Thanks
    P.S. Please respond to [email protected]

    the jdbc driver readme file:
    Oracle JDBC Drivers release 8.1.7 README
    ========================================
    What Is New In This Release?
    These are the major new features/enhancements in this release:
    - Statement Caching
    * Implicit Statement Caching
    * Explicit Statement Caching
    - Full XA Support
    * Including XA Recover and Forget
    * OracleXid independent implementation for 8.1.7 servers and above
    - Connection Caching
    * New Scheme (FIXED_WAIT_SCHEME)
    * Statement Caching coupling
    - PLSQL Tables Support for Scalar types (for OCI driver only)
    - User-Defined Datatypes Performance Enhancement
    - Object Types Extensions
    * Serializable Type Descriptors
    * Accessing collection elements in Java primitive types
    * Buffering and indexing collection elements
    * Creating empty Lobs
    - Support for 56-bit encryption algorithms for connection using
    the Thin JDBC driver.
    These are the major bug fixes:
    - BUG-903011
    The JDBC Thin driver could not be used with usernames that
    contained Latin-1 characters when the server used UTF8 character
    set. This problem has been fixed in release 8.1.7.
    - BUG-1052489
    There was a problem with PreparedStatements being executed
    multiple times and the length of one of the bind variables (bound
    with setBinaryStream or setCharacterStream) increased. This
    problem has been fixed in release 8.1.7.
    - BUG-1069768
    There was a problem with insertion of ADTs with an image bigger
    than 4K with the JDBC Thin driver. This problem has been fixed
    in release 8.1.7.
    - BUG-1247015
    When using ResultSet::getObject() to access CHAR or VARCHAR columns
    in scrollable result sets, ResultSet::getObject() returned null.
    - BUG-1349713
    getString() of scrollable result sets returns incorrect values if
    the column data contains multibyte characters.
    Driver Versions
    These are the driver versions in the 8.1.7 release:
    - JDBC OCI Driver 8.1.7
    Client-side JDBC for use on a machine where OCI 8.1.7 is installed.
    - JDBC Thin Driver 8.1.7
    100% Java client-side JDBC for use in applets and applications.
    - JDBC Thin Server-side Driver 8.1.7
    JDBC for use by Java Stored Procedures or by Java CORBA objects
    running in Oracle 8.1.7. This driver is typically used in a middle
    tier server.
    - JDBC Server-side Internal Driver 8.1.7
    Server-side JDBC for use by Java Stored procedures or by Java CORBA
    objects running in Oracle 8.1.7. This driver used to be called the
    "JDBC Kprb Driver".
    For complete documentation, please refer to "JDBC Developer's Guide
    and Reference".
    Contents Of This Release
    The [ORACLE_HOME]/jdbc/lib directory contains:
    - classes111.zip
    Classes for use with JDK 1.1.x. It contains the JDBC driver
    classes except classes necessary for NLS support in Object and
    Collection types.
    - nls_charset11.zip
    NLS classes for use with JDK 1.1.x. It contains classes necessary
    for NLS support in Object and Collection types.
    - classes111_g.zip
    Same as classes111.zip, except that classes were compiled with
    "javac -g".
    - classes12.zip
    Classes for use with JDK 1.2.x. It contains the JDBC driver
    classes except classes necessary for NLS support in Object and
    Collection types.
    - nls_charset12.zip
    NLS classes for use with JDK 1.2.x. It contains classes necessary
    for NLS support in Object and Collection types.
    - classes12_g.zip
    Same as classes12.zip, except that classes were compiled with
    "javac -g".
    Note that the packaging of the JDBC classes to support NLS was
    changed in 8i. The classes pertaining to specific character sets
    support in Object and Collection types have been separated from the
    basic zip files. These NLS classes are now packaged into the
    extension zip files. This allows the user to include the NLS
    classes only if necessary. Please refer to the "NLS Extension Zip
    Files (for client-side only)" for further details.
    [ORACLE_HOME]/lib directory contains libocijdbc8.so and
    libocijdbc8_g.so (on Solaris), which are the shared libraries used by
    the JDBC OCI driver.
    [ORACLE_HOME]/jdbc/doc/javadoc.tar contains the JDBC Javadoc. This
    release contains a beta release of the Javadoc files for the public
    API of the public classes of Oracle JDBC.
    [ORACLE_HOME]/jdbc/demo/demo.tar contains sample JDBC programs.
    Demo programs written for JDK 1.1 must be modified to run in JDK 1.2.
    Please refer to the "Support For JDK 1.2" for porting details.
    NLS Extension Zip Files (for client-side only)
    The JDBC Server-side Internal Driver provides complete NLS support.
    It does not require any NLS extension zip files, nls_charset*.zip.
    Discussions in this section do not apply to the JDBC Server-side
    Internal Driver. You can skip this section if you only use the
    Server-side Internal Driver.
    The basic zip files, classes111.zip and classes12.zip, contain all the
    necessary classes to provide complete NLS support for:
    - Oracle Character sets for CHAR/VARCHAR/LONGVARCHAR/CLOB type data
    that is not retrieved or inserted as a data member of an Oracle 8
    Object or Collection type.
    - NLS support for CHAR/VARCHAR data members of Objects and
    Collections for a few commonly used character sets. These
    character sets are: US7ASCII, WE8DEC, WE8ISO8859P1 and UTF8.
    Users must include the appropriate extension zip in their CLASSPATH
    if utilization of other character sets in CHAR/VARCHAR data members
    of Objects/Collections is desired. It is important to note that
    extension zip files are large in size due to the requirement of
    supporting a large number of character sets. Users may choose to
    include only the necessary classes from the extension zip file.
    To do so, users can first unzip the extension zip file, and then put
    only the necessary classes in the CLASSPATH. The character set
    extension class files are named in the following format:
    CharacterConverter<OracleCharacterSetId>.class
    where <OracleCharacterSetId> is the hexidecimal representation of the
    Oracle character set id of the corresponding character set.
    Installation
    Please do not try to put multiple versions of the Oracle JDBC drivers
    in your CLASSPATH. The Oracle installer installs the JDBC Drivers in
    the [ORACLE_HOME]/jdbc directory.
    Setting Up Your Environment
    On Win95/Win98/NT:
    - Add [ORACLE_HOME]\jdbc\lib\classes111.zip and
    [ORACLE_HOME]\jdbc\lib\nls_charset11.zip to your CLASSPATH.
    (Add classes12.zip and nls_charset12.zip if JDK 1.2.x is used.)
    - Add [ORACLE_HOME]\jdbc\lib to your PATH.
    On Solaris/Digital Unix:
    - Add [ORACLE_HOME]/jdbc/lib/classes111.zip and
    [ORACLE_HOME]/jdbc/lib/nls_charset11.zip to your CLASSPATH.
    (Add classes12.zip and nls_charset12.zip if JDK 1.2.x is used.)
    - Add [ORACLE_HOME]/jdbc/lib to your LD_LIBRARY_PATH.
    On HP/UX:
    - Add [ORACLE_HOME]/jdbc/lib/classes111.zip and
    [ORACLE_HOME]/jdbc/lib/nls_charset11.zip to your CLASSPATH.
    (Add classes12.zip and nls_charset12.zip if JDK 1.2.x is used.)
    - Add [ORACLE_HOME]/jdbc/lib to your SHLIB_PATH and LD_LIBRARY_PATH.
    On AIX:
    - Add [ORACLE_HOME]/jdbc/lib/classes111.zip and
    [ORACLE_HOME]/jdbc/lib/nls_charset11.zip to your CLASSPATH.
    (Add classes12.zip and nls_charset12.zip if JDK 1.2.x is used.)
    - Add [ORACLE_HOME]/jdbc/lib to your LIBPATH and LD_LIBRARY_PATH.
    Some Useful Hints In Using the JDBC Drivers
    Please refer to "JDBC Developer's Guide and Reference" for details
    regarding usage of Oracle's JDBC Drivers. This section only offers
    useful hints. These hints are not meant to be exhaustive.
    These are a few simple things that you should do in your JDBC program:
    1. Import the necessary JDBC classes in your programs that use JDBC.
    For example:
    import java.sql.*;
    import java.math.*;
    2. Register the Oracle driver before before calling other JDBC APIs.
    (This is not needed if you are using the JDBC Server-side Internal
    Driver because registration is done automatically in the server.)
    To register the Oracle driver, make sure the following statement
    is executed at least once in your Java session:
    DriverManager.registerDriver(
    new oracle.jdbc.driver.OracleDriver());
    3. Open a connection to the database with the getConnection call.
    Different connection URLs should be used for different JDBC
    drivers. The following examples demonstrate the different URLs.
    For the JDBC OCI8 Driver:
    Connection conn = DriverManager.getConnection(
    "jdbc:oracle:oci8:@<database>",
    "scott", "tiger");
    where <database> is either an entry in tnsnames.ora or a SQL*net
    name-value pair.
    For the JDBC Thin Driver, or Server-side Thin Driver:
    Connection conn = DriverManager.getConnection(
    "jdbc:oracle:thin:@<database>",
    "scott", "tiger");
    where <database> is either a string of the form
    <host>:<port>:<sid> or a SQL*net name-value pair.
    For the JDBC Server-side Internal Driver:
    Connection conn = DriverManager.getConnection(
    "jdbc:oracle:kprb:");
    Note that the trailing ':' character is necessary. When you use
    the Server-side Internal Driver, you always connect to the
    database you are executing in. You can also do this:
    Connection conn
    = new oracle.jdbc.driver.OracleDriver().defaultConnection();
    Java Stored Procedures
    Please note that examples for callins and instance methods using Oracle
    8 Object Types are provided in:
    [ORACLE_HOME]/javavm/demo/demo.zip
    Once unzipped, the directory containing the examples is:
    [ORACLE_HOME]/javavm/demo/examples/jsp
    Known Problems/Limitations In This Release
    The following is a list of known problems/limitations:
    1. There is a limitation regarding the use of stream input for LOB
    types. Stream input for LOB types can only be used for 8.1.7
    JDBC OCI driver connecting to an 8.1.7 Oracle server. The use of
    stream input for LOB types in all other configurations may result
    in data corruption. PreparedStatement stream input APIs include:
    setBinaryStream(), setAsciiStream(), setUnicodeStream(),
    setCharacterStream() and setObject().
    2. BUG-1018797
    Extra characters may be appended to the end of a CLOB value
    mistakenly under the following conditions:
    - setCharacterStream() is used to insert a CLOB value, and
    - The Oracle server uses multi-byte character set.
    (See 1 for limitation of stream input for LOB type.)
    3. Programs can fail to open 16 or more connections using our
    client-side drivers at any one time. This is not a limitation
    caused by the JDBC drivers. It is most likely that the limit of
    per-process file descriptors is exceeded. The solution is to
    increase the limit.
    4. The Server-side Internal Driver has the following limitation:
    - Data access for LONG and LONG RAW types is limited to 32K of
    data.
    - Inserts of Object Types (Oracle 8 Objects, Collections and
    References) will not work when the database compatibility mode
    is set to 8.0. This limitation does not apply when the
    compatibility mode is set to 8.1.
    - Statement.cancel() is not implemented.
    - In a chain of SQLExceptions, only the first one in the chain
    will have a getSQLState value.
    5. The JDBC OCI driver on an SSL connection hangs when the Java
    Virtual Machine is running in green threads mode. A work-around
    is to run the Java Virtual Machine in native threads mode.
    6. Date-time format, currency symbol and decimal symbols are always
    presented in American convention.
    7. When using OracleStatement.defineColumnType(), it is not necessary
    to define the column type to be the same as the column type
    declared in the database. If the types are different, the
    retrieved values are converted to the type specified in
    defineColumnType.
    Note: Most reasonable conversions work, but not all. If you find
    a conversion that you think is reasonable, but that does not wo rk,
    please submit a TAR to Oracle Support.
    8. The utility dbms_java.set_output or dbms_java.set_stream that is
    used for redirecting the System.out.println() in JSPs to stdout
    SHOULD NOT be used when JDBC tracing is turned on. This is
    because the current implementation of dbms_java.set_output and
    set_stream uses JDBC to write the output to stdout. The result
    would be an infinite loop.
    9. The JDBC OCI and Thin drivers do not read CHAR data via binary
    streams correctly. In other word, using getBinaryStream() to
    retrieve CHAR data may yield incorrect results. A work-around is
    to use either getCHAR() or getAsciiStream() instead. The other
    alternative is to use getUnicodeStream() although the method is
    deprecated.
    10. BUG-899078 (since 8.1.6 SDK):
    The JDBC Server-side Internal driver has extra space padding with
    PL/SQL CHAR OUT (2 to 3 space depending on character set).
    Problem occurs in most of the multibyte database character set
    except UTF8.
    11. There is a limitation for Triggers implemented in Java and Object
    Types. It only affects the IN argument types of triggers
    implemented using Java on the client-side. The restriction does
    not apply to JDBC programs running inside the server. Triggers
    implemented as Java methods cannot have IN arguments of Oracle 8
    Object or Collection type. This means the Java methods used to
    implement triggers cannot have arguments of the following types:
    - java.sql.Struct
    - java.sql.Array
    - oracle.sql.STRUCT
    - oracle.sql.ARRAY
    - oracle.jdbc2.Struct
    - oracle.jdbc2.Array
    - any class implementing oracle.jdbc2.SQLData or
    oracle.sql.CustomDatum
    12. The scrollable result set implementation has the following
    limitation:
    - setFetchDirection() on ScrollableResultSet is not supported.
    - refreshRow() on ScrollableResultSet does not support all
    combinations of sensitivity and concurrency. The following
    table depicts the supported combinations.
    Support Type Concurrency
    no TYPE_FORWARD_ONLY CONCUR_READ_ONLY
    no TYPE_FORWARD_ONLY CONCUR_UPDATABLE
    no TYPE_SCROLL_INSENSITIVE CONCUR_READ_ONLY
    yes TYPE_SCROLL_INSENSITIVE CONCUR_UPDATABLE
    yes TYPE_SCROLL_SENSITIVE CONCUR_READ_ONLY
    yes TYPE_SCROLL_SENSITIVE CONCUR_UPDATABLE
    13. BUG-1324918
    Repeatedly updating a clob with jdbc-oci, prepared statement,
    and setCharacterStream consumes the temporary tablespace. If
    you repeatedly update the clob, either the temp tablespace will
    continue to grow, or you may get a Exception in thread "main"
    java.sql.SQLException: ORA-01652: unable to extend segment if
    you have a limit on the tablespace size. The work-around is to
    use oracle.sql.CLOB::setCharacterOutputStream() instead.

  • HT4759 I want to use icloud mail on both iPhone 4s AND my pc. icloud mail on PC is mega glitchy and frustrating because my PC is ancient, I run XP, & these DO NOT MEET req's for iCloud.  Is there a email platform that will run well on both XP and iPhone?

    I NEED to use icloud mail on both iPhone 4s AND my PC. I need to use both. 
    Trying to use icloud mail on PC is mega glitchy (STOP SCRIPT WARNINGS EVERY FEW MINUTES) and frustrating because:
      1.  my PC is ancient (but nicely refurbished/fast)
      2.  I run XP  (with both Firefox and Chrome- newest versions)
      3.  thusly, I DO NOT MEET SYSTEM REQUIREMENTS for iCloud.
    In my passed attempts I found that
    1. Yahoo doesn't work well on iPhone
    2. Gmail doesnt work well on iPhone.
    I must be missing something... an app or... maybe a donated/ NEW FREE MAC!  (That would be sweet!  Ha.)
    Is there an email platform that will run well on both XP and iPhone?
    or... Please say it isn't true: I would love a Mac tablet or desktop. We have no money for a mac. SOL?   Is this iCloud apple tech only for wealthy middle class and above who can afford to have the newest and best of everything? 

    @Naiks, having suffered through unsuccessful synching attempts for Calendar and Contacts myself, l would suggest you try the following:
    UNINSTALL iCloud control panel from your PC. Seems silly, but do it.
    Go into Outlook, and look at the very top menu. Click FILE, then ACCOUNT SETTINGS, then click the popup box.
    You will see a list of all your email accounts. Make sure that ONE of them has a checkmark against it. If not, select the account your want as your default, and click "set as default.
    Exit out of Outlook and reboot your machine.
    Now reinstall iCloud, check CALENDAR and CONTACTS, and do as instructed when prompted.
    Reboot for good luck and now launch OUTLOOK. All that remains is to locate your iCloud Contacts and Calendar files, and make them your default.
    IMPORTANT: Don't panic if you can't find your contacts -- they're there. Click CONTACTS and you'll see you have several available contact files. Locate the one label "iCloud" in grey type. Right-click on it, select PROPERTIES, then click the Outlook Address Book tab. Check the box that says something like "Make this my default Outlook Address Book." Keep clicking "apply" and "okay" until you've exited out of the dialog box maze.
    You may have to do something similar with your Calendar files. I dd not, but if you need to, do it.
    Everything should now sync pretty seamlessly.
    I didn't have the exact same problem as you, but my dilemma was close enough. Good luck!
    Arthur P. Johnson

  • Best buy, please help me on this! very disappointed and frustrated!!

    Here is my complaint:
    1.I have been saving for weeks trying to buy this flat screen TV: the price has been $299.99
    http://www.bestbuy.com/site/westinghouse-48-class-48-diag--led-1080p-hdtv-black/6233067.p?id=1219198...
    Then finally this Tuesday I went there to buy, I checked the online price, it jumped to $329.99. I do have a mover coupon which is good for 10% off a single item. So I used, but I will have been really happy if I could have used it when the price is $299.99 instead. This mover coupon said any single item with some exclusions and I believe this Westinghouse 48" is not in the exclusion list.
    After I bought Tuesday, I checked the price online today, man, it went back to $299.99. Your price mathcing policy said if the price lowered within the return period, we could get the difference back. Then I went back to the Best Buy at Fairlawn, Ohio (Montrose) location where I bought my TV. But they refuse to return the difference saying I used that coupon.
    But key issue here is not using the coupon. That coupon DOES NOT SAY anything about not using on a sale item at all!!!!!
    If I return the TV today and they give me back that coupon, I would have been able to buy this one again at $299.99 AND using that coupon again!  So It is very UNFAIR they are doing that.
    Very disappointed and frustrated. Please help me to get this issue straightened out!! I follow all the rules, but that store clerk did not seem to understand that coupon is good for on sale items too and that TV is not on the exclusion list so they should follow the price matching promise and issue me the credit!!!!!!

    here is the detail of this mover coupon:
    http://www.bestbuy.com/site/regularcatpcmcat322300050002/movers-coupon/pcmcat322300050002.c?id=pcmca...
    It does not have Westinghouse TV mentioned in the exclusion list and I donot believe it is a UMRP product!
    Offer valid in store only.
    Excludes Unilateral Minimum Resale Price (UMRP) products, gift cards, services (both in-store and in-home), Marketplace & special order items. Not valid on Best Buy.com. Not valid in Puerto Rico. No dealers. No copies. No cash back. No cash value. Limit 1 coupon per transaction. Limit 1 coupon per customer. Coupon required at time of purchase.
    Products in the following categories are excluded from this offer:
    Projectors, DSLR cameras, Compact System Cameras, lenses & flashes; subscription software services, digital music services; music & eReader download cards; Unlocked phones; contract mobile phones; and mobile broadband devices. Select premium: TVs from LG, Samsung, Sharp and Sony; Blu-ray players from LG, Samsung and Sony; home audio products from Samsung and Sony; Select Sony camcorders, digital cameras, NEX cameras; & headphones, set top boxes; Canon XA & XF series camcorders and G1X, S110, G16 cameras; Nikon Coolpix A & P530 cameras; Wacom tablets & stylus; Apple branded accessories for iPhone, iPad, audio and computing.
    Products from the following brands are excluded from this offer: Bose®, Beats by Dr. Dre, Polk Audio, Denon, Boston Acoustics, Breville, Dyson, Go Pro, Leap, Philips; Electrolux. These brands and products available through Magnolia are excluded: Arcam, Bowers & Wilkins, JVC, Kaleidescope, Martin Logan, McIntosh, Oppo, Peachtree, Pioneer Elite, Rotel, Savant, Sennheiser, Sharp, Sonance, Sonus Faber, Universal Remote Control™ and special order merchandise. These brands and products available through Pacific Sales Kitchen & Bath are excluded: Bosch, Bertazzoni, Dacor, DCS, Fisher & Paykel, Jenn-Air, Lynx, Monogram, Sub-Zero, Thermador, U-line, Vent-A-hood, Viking, Wolf.

  • JDBC, JMS and EJB transactions - possible problem?

    Hello,
              I am using Oracle 9, Weblogic 8.1 SP 4, MyEclipse and
              XDoclet.
              In my current project I have the following piece of code
              in one of my message driven beans (code cited as pseudocode
              without unnecessary details):
              * @ejb.bean name="MyMessageProcessor"
              * display-name="Display name for a MyMessageProcessor"
              * jndi-name="ejb/MyMessageProcessor"
              * description="Bean MyMessageProcessor"
              * destination-type="javax.jms.Queue"
              * transaction-type="Container"
              * acknowledge-mode="Auto-acknowledge"
              * subscription-durability="Durable"
              * generate="false"
              * @ejb.transaction type="Required"
              public class MyMessageProcessor implements MessageDrivenBean, MessageListener {
              public void onMessage(Message msg) {
                   try {
                        //obtaining connections to two different databases via JNDi
                        java.sql.Connection connOne =
                        ((DataSource)ctx.lookup("DataSourceOne")).getConnection();          
                        java.sql.Connection connTwo =
                             ((DataSource)ctx.lookup("DataSourceTwo")).getConnection();
                        // performing some UPDATEs and INSERTs on connOne and connTwo
                        // calling some other methods of this bean
                        //creating the reply JMS message and sending it to another JMS queue
                        Message msgTwo = this.createReplyMessage(msg)
                        this.queueSender.send(msgTwo);
                        //commiting everything
                        this.queueSession.commit();          
                   } catch (Exception ex) {
                   try {
                        if (this.queueSession!=null) this.queueSession.rollback();
                   } catch (JMSException JMSEx) {};     
                   this.context.setRollbackOnly();
              Some days ago (before the final remarks from my client) there used to be only one DataSource configurated on the basis of the
              connection pool with non-XA jdbc driver. Everything worked fine
              including the transactions (if anything wrong happend not only wasn't the replymessage sent, but also no changes were written
              to database and the incomming message was thrown back to the my bean's
              queue).
              When I deployed the second DataSource I was informed by an error message, that only one non-transactional resource may
              participate in a global transaction. When I changed both datasources
              to depend on underlying datasources with transatcional (XA) jdbc drivers, everything stopped working. Even if
              EJB transaction was theoretically successfully rolledbacked, the changed were written to the database
              and the JMS message wasn't resent to the JMS queue.
              So here are my questions:
                   1. How to configure connection pools to work in such situations? What JDBC drivers should I choose?
                   Are there any global server configurations, which may influence this situation?
                   2. Which jdbc drivers should I choose so that the container was able to rollback the database transactions
                   (of course, if necessary)?
                   3. Are there any JMS Queue settings, which would disable the container to send message back to the
                   queue in case of setRollbackOnly()? How should be the Queue configurated?
              As I am new to the topic and the deadline for the project seems to be too close I would be grateful
              for any help.
              This message was sent to EJB list and JDBC list.
              Sincerely yours,
              Marcin Zakidalski

    Hi,
              I found these information extremely useful and helpful.
              The seperate transaction for sending messages was, of course, unintentional. Thanks a lot.
              Anyway, I still have some problems. I have made some changes to the
              code cited in my previous mail. These changes included changing QueueSessions
              to non-transactional. I also set the "Honorate global transactions" to true.
              I am using XA JDBC driver. After setting "Enable local transactions" to false
              (I did it, because I assume that JDBC transactions should be part on the global
              EJB transaction) I got the following error:
              java.sql.SQLException: SQL operations are not allowed with no global transaction by default for XA drivers. If the XA
              driver supports performing SQL operations with no global transaction, explicitly allow it by setting
              "SupportsLocalTransaction" JDBC connection pool property to true. In this case, also remember to complete the local
              transaction before using the connection again for global transaction, else a XAER_OUTSIDE XAException may result. To
              complete a local transaction, you can either set auto commit to true or call Connection.commit() or Connection.rollback().
              I have also inspected the calls of methods of bean inside of onMessage() method just to check, whether
              the transactions are correctly initialized (using the weblogic.transaction.Transaction class).
              My questions are as follows:
              1. Any suggestions how to solve it? I have gone through the google answers on that problem and only
              thing I managed to realize that JDBC must start its own transaction. Is there any way to prohibit it
              from doing that? Can using setAutocommit(true/false) change the situation for better?
              2. How to encourage the JDBC driver to be a part of EJB transaction?
              3. As I have noticed each of ejb method has its own transactions (transactions have different
              Xid). Each method of the bean has "required" transaction attribute. Shouldn't it work in such
              way that if already started transaction exists it is used by the called method?
              4. The DataSources are obtained in my application via JNDI and in the destination environment I will have slight
              impact on the configuration of WebLogic. What is least problematic and most common WebLogic configuration which would
              enable JDBC driver to participate in the EJB transaction? Is it the WebLogic configuration problem or can it be
              solved programmically?
              Currently my module works quite fine when "enable local transactions" for DataSources is set to true, but this way
              I am loosing the ability to perform all actions in one transaction.
              Any suggestions / hints are more than welcomed. This message was posted to jdbc list and ejb list.
              Marcin

  • It's now over 6 weeks since I made the mistake of updating my iPad and I am furious and frustrated at the lack of a solution to the problem with ios 5 audio app missing lyrics

    It’s now over 6 weeks since I made the mistake of updating my iPad and I am furious and frustrated at the lack of a solution to the problem with ios 5.
    I recently updated to ios 5.1 but nothing has been done to rectify the audio app problems ie lyrics no longer shown,
    I am extremely disappointed and angrywith those responsible for the iOS 5 update, in regard to the way it hasaffected the music app in my iPad.
    I also own an iPhone 4, am an avid Apple fan, and up until now have beenextremely pleased with the devices, and have sung their praises to friends andassociates.
    I am a professional musician, and purchased an iPad primarily to use with theperformance of my music.
    The changes made to the music app affected my performances over the weekendextremely adversely – limiting my repertoire and causing confusion and delays.
    I have spent many hours talking withApple helpline assistants (who, incidentally have been very good and have triedto help), and I have also spent a lot of time on this letter.
    I greatly regret updating to iOS 5.
    There are two major problems with the music app.
    1. Lyrics no longer displayed
    2. Layout, and appearance and consequently performance have seriouslyregressed.
    I have a repertoire of around 500 song backing tracks, organised into about 20playlists, half of which featured lyrics / chords that I have spent monthsrecently entering into iTunes so that they could be used on my iPad.
    These were working fine up until the update - now they are gone.
    Previously, the app featured large icons for playlist, artists, songs etc. atbottom of page: Now there are small, grey, indistinct barely legible buttons.
    Previously, when playlist icon was selected - all the playlists were listedclearly in order on the left hand side in black on white (as in iTunes).
    Now they are scattered across the whole page in large squares (displayingnothing if there is no album art).
    The identifying wording below eachsquare is now small, grey, indistinct & barely legible.
    Previously, when a playlist was selected - the songs were displayed in adescending list in black & white: now they appear as small, grey indistinct & barely legible.
    Previously, when a song was selected - it appeared filling the page, and withaudio controls clearly positioned at top of screen. One tap would bring uplyrics.
    Now audio controls appear at top once again small, grey, indistinct &barely legible.
    A small square representsalbum art which if tapped fills page. A further tap fails to bring up lyrics.
    Don Wilson

    Lyrics aren't supported in the Music app on iOS 5 on the iPad. These are user-to-user forums, they are not monitored by Apple (there are too many forums/threads/messages for that to happen). If you want to leave feedback for Apple then you can do so here : http://www.apple.com/feedback/ipad.html

  • Thoroughly angry and frustrated. I've run out of room and need to make more to add more songs. Once and for all, how do I, if I even CAN, delete music from my iPod Nano WITHOUT losing them from iTunes?

    Thoroughly angry and frustrated. I've run out of room and need to make more to add more songs. Once and for all, how do I, if I even CAN, delete music from my iPod Nano WITHOUT losing them from iTunes?

    You should take the time to familiarize yourself with the documentation that is available.  You can "uncheck" a song in iTunes, and then do a manual update.

  • JDBC adapter and message split

    Hello, does anybody know how I can make a split of a document created by the JDBC adapter and that should look like
    <resultset>
      <row>
         <column-name1>column-value</ column-name1>
         <column-name2>column-value</ column-name2>
         <column-name3>column-value</ column-name3>
      </row>
      <row>
         <column-name1>column-value</ column-name1>
         <column-name2>column-value</ column-name2>
         <column-name3>column-value</ column-name3>
      </row>
    </resultset>
    into several's independent documents of type:
      <row>
         <column-name1>column-value</ column-name1>
         <column-name2>column-value</ column-name2>
         <column-name3>column-value</ column-name3>
      </row>
    May I create the messages in the dispatcher?
    Thank you
    Ernesto Duran

    Hello, isn't it possible to create an inbound abap Proxy in XI that wait for the message then this inbound proxy loops into the message and call and outbound proxy for each entry(row).
    The outbound proxy is working well for me but I'm having problems routing the message back to XI... I get the problem "SAP:Code p1="No inbound interface found for sender" But when I route the message to a business systems everything is ok.????
    Anyway what I want to do is:
    jdbc adapter --> XI --> inbound proxy --> XI --> outbound proxy --> XI --> Idoc adapter --> R3
    And the steps inbound proxy --> XI --> outbound proxy --> XI are used only to split the message.
    The reason why I try to use this approach is that I don't understand how I can split a message in java or XSLT maybe someone know???
    Thank you
    Ernesto Duran

  • Com.sap.aii.adapter.jdbc.svc and com.sap.aii.adapter.jms.svc don't start

    Hello,
    In order to configure JMS Receiver Adapter to access Websphere Application Server 7.0, I have recently deployed file com.sap.aii.adapter.lib.sca with the following libraries:
    com.sap.aii.adapter.lib_api.jar
    com.ibm.ws.ejb.thinclient_7.0.0.jar
    com.ibm.ws.orb_7.0.0.jar
    com.ibm.ws.sib.client.thin.jms_7.0.0.jar
    com.ibm.ws.runtime.jar   
    javax.j2ee.jms.jar
    The communication channel can reach the queue but when I send a message it fails because services sap.com/com.sap.aii.adapter.jdbc.svc and com.sap.aii.adapter.jms.svc are not started.
    Checking dev_server0 file I found the following error.
    ==============================================================================================
    Service com.sap.aii.adapter.jdbc.svc start ================= ERROR =================
    com.sap.engine.frame.ServiceException: Could not obtain an initial context due to a communication failure. Since no provider
    URL was specified, the default provider URL of "corbaloc:iiop:1.0(at)sapdpi-lpar:2809/NameService" was used.  Make sure that any
    bootstrap address information in the URL is correct and that the target name server is running.  Possible causes other than
    an incorrect bootstrap address or unavailable name server include the network environment and workstation network configurati
    on.
    at com.sap.aii.adapter.jdbc.SapAdapterServiceFrameImpl.start(SapAdapterServiceFrameImpl.java:151)
    at com.sap.engine.core.service630.container.ServiceRunner.startFrame(ServiceRunner.java:155)
    at com.sap.engine.core.service630.container.ServiceRunner.startService(ServiceRunner.java:113)
    at com.sap.engine.core.service630.container.ServiceRunner.run(ServiceRunner.java:60)
    at com.sap.engine.frame.core.thread.Task.run(Task.java:73)
    at com.sap.engine.core.thread.impl5.SingleThread.execute(SingleThread.java:162)
    at com.sap.engine.core.thread.impl5.SingleThread.run(SingleThread.java:260)
    Caused by: javax.naming.ServiceUnavailableException: Could not obtain an initial context due to a communication failure. Sinc
    e no provider URL was specified, the default provider URL of "corbaloc:iiop:1.0(at)sapdpi-lpar:2809/NameService" was used.  Make
    sure that any bootstrap address information in the URL is correct and that the target name server is running.  Possible caus
    es other than an incorrect bootstrap address or unavailable name server include the network environment and workstation netwo
    rk configuration. [Root exception is org.omg.CORBA.TRANSIENT: java.net.ConnectException: Connection refused:host=sapdpi-lpar,
    port=2809  vmcid: 0x4942f000  minor code: 3586  completed: No]
    at com.ibm.ws.naming.util.WsnInitCtxFactory.mapInitialReferenceFailure(WsnInitCtxFactory.java:2228)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.getWsnNameService(WsnInitCtxFactory.java:1414)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.getRootContextFromServer(WsnInitCtxFactory.java:944)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.getRootJndiContext(WsnInitCtxFactory.java:865)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.getInitialContextInternal(WsnInitCtxFactory.java:545)
    at com.ibm.ws.naming.util.WsnInitCtx.getContext(WsnInitCtx.java:123)
    at com.ibm.ws.naming.util.WsnInitCtx.getContextIfNull(WsnInitCtx.java:798)
    at com.ibm.ws.naming.util.WsnInitCtx.rebind(WsnInitCtx.java:242)
    at com.ibm.ws.naming.util.WsnInitCtx.rebind(WsnInitCtx.java:255)
    at javax.naming.InitialContext.rebind(InitialContext.java:367)
    at javax.naming.InitialContext.rebind(InitialContext.java:367)
    at com.sap.aii.adapter.jdbc.SapAdapterServiceFrameImpl.start(SapAdapterServiceFrameImpl.java:100)
    ... 6 more
    Caused by: org.omg.CORBA.TRANSIENT: java.net.ConnectException: Connection refused:host=sapdpi-lpar,port=2809  vmcid: 0x4942f0
    00  minor code: 3586  completed: No
    at com.ibm.CORBA.transport.TransportConnectionBase.connect(TransportConnectionBase.java:425)
    at com.ibm.ws.orbimpl.transport.WSTransport.getConnection(WSTransport.java:436)
    at com.ibm.CORBA.transport.TransportBase.getConnection(TransportBase.java:187)
    at com.ibm.rmi.iiop.TransportManager.get(TransportManager.java:89)
    at com.ibm.rmi.iiop.GIOPImpl.getConnection(GIOPImpl.java:120)
    at com.ibm.rmi.iiop.GIOPImpl.locate(GIOPImpl.java:209)
    at com.ibm.rmi.corba.Corbaloc.locateUsingINS(Corbaloc.java:307)
    at com.ibm.rmi.corba.Corbaloc.resolve(Corbaloc.java:378)
    at com.ibm.rmi.corba.ORB.objectURLToObject(ORB.java:3721)
    at com.ibm.CORBA.iiop.ORB.objectURLToObject(ORB.java:3256)
    at com.ibm.rmi.corba.ORB.string_to_object(ORB.java:3619)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.stringToObject(WsnInitCtxFactory.java:1524)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.getWsnNameService(WsnInitCtxFactory.java:1389)
    ... 16 more
    Caused by: java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:522)
    at java.net.Socket.connect(Socket.java:470)
    at java.net.Socket.<init>(Socket.java:367)
    at java.net.Socket.<init>(Socket.java:180)
    at com.ibm.ws.orbimpl.transport.WSTCPTransportConnection.createSocket(WSTCPTransportConnection.java:270)
    at com.ibm.CORBA.transport.TransportConnectionBase.connect(TransportConnectionBase.java:354)
    ... 28 more
    Service com.sap.aii.adapter.jms.svc start ================= ERROR =================
    com.sap.engine.frame.ServiceRuntimeException: Could not obtain an initial context due to a communication failure. Since no pr
    ovider URL was specified, the default provider URL of "corbaloc:iiop:1.0(at)sapdpi-lpar:2809/NameService" was used.  Make sure t
    hat any bootstrap address information in the URL is correct and that the target name server is running.  Possible causes othe
    r than an incorrect bootstrap address or unavailable name server include the network environment and workstation network conf
    iguration.
    at com.sap.aii.adapter.jms.core.service.AdapterServiceFrameImpl.bindAdapter(AdapterServiceFrameImpl.java:171)
    at com.sap.aii.adapter.jms.core.service.AdapterServiceFrameImpl.start(AdapterServiceFrameImpl.java:125)
    at com.sap.engine.core.service630.container.ServiceRunner.startFrame(ServiceRunner.java:155)
    at com.sap.engine.core.service630.container.ServiceRunner.startService(ServiceRunner.java:113)
    at com.sap.engine.core.service630.container.ServiceRunner.run(ServiceRunner.java:60)
    at com.sap.engine.frame.core.thread.Task.run(Task.java:73)
    at com.sap.engine.core.thread.impl5.SingleThread.execute(SingleThread.java:162)
    at com.sap.engine.core.thread.impl5.SingleThread.run(SingleThread.java:260)
    Caused by: javax.naming.ServiceUnavailableException: Could not obtain an initial context due to a communication failure. Sinc
    e no provider URL was specified, the default provider URL of "corbaloc:iiop:1.0(at)sapdpi-lpar:2809/NameService" was used.  Make
    sure that any bootstrap address information in the URL is correct and that the target name server is running.  Possible caus
    es other than an incorrect bootstrap address or unavailable name server include the network environment and workstation netwo
    rk configuration. [Root exception is org.omg.CORBA.TRANSIENT: Connection state: State: ABORT (5)  vmcid: 0x4942f000  minor co
    de: 775  completed: No]
    at com.ibm.ws.naming.util.WsnInitCtxFactory.mapInitialReferenceFailure(WsnInitCtxFactory.java:2228)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.getWsnNameService(WsnInitCtxFactory.java:1414)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.getRootContextFromServer(WsnInitCtxFactory.java:944)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.getRootJndiContext(WsnInitCtxFactory.java:865)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.getInitialContextInternal(WsnInitCtxFactory.java:545)
    at com.ibm.ws.naming.util.WsnInitCtx.getContext(WsnInitCtx.java:123)
    at com.ibm.ws.naming.util.WsnInitCtx.getContextIfNull(WsnInitCtx.java:798)
    at com.ibm.ws.naming.util.WsnInitCtx.rebind(WsnInitCtx.java:242)
    at com.ibm.ws.naming.util.WsnInitCtx.rebind(WsnInitCtx.java:255)
    at javax.naming.InitialContext.rebind(InitialContext.java:367)
    at javax.naming.InitialContext.rebind(InitialContext.java:367)
    at com.sap.aii.adapter.jms.core.service.AdapterServiceFrameImpl.bindAdapter(AdapterServiceFrameImpl.java:163)
    ... 7 more
    Caused by: org.omg.CORBA.TRANSIENT: Connection state: State: ABORT (5)  vmcid: 0x4942f000  minor code: 775  completed: No
    at com.ibm.rmi.iiop.Connection.checkEstablished(Connection.java:3091)
    at com.ibm.rmi.iiop.Connection.send(Connection.java:2145)
    at com.ibm.rmi.iiop.Connection._locate(Connection.java:463)
    at com.ibm.rmi.iiop.Connection.locate(Connection.java:439)
    at com.ibm.rmi.iiop.GIOPImpl.locate(GIOPImpl.java:219)
    at com.ibm.rmi.corba.Corbaloc.locateUsingINS(Corbaloc.java:307)
    at com.ibm.rmi.corba.Corbaloc.resolve(Corbaloc.java:378)
    at com.ibm.rmi.corba.ORB.objectURLToObject(ORB.java:3721)
    at com.ibm.CORBA.iiop.ORB.objectURLToObject(ORB.java:3256)
    at com.ibm.rmi.corba.ORB.string_to_object(ORB.java:3619)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.stringToObject(WsnInitCtxFactory.java:1524)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.getWsnNameService(WsnInitCtxFactory.java:1389)
    ... 17 more
    ==============================================================================================
    Could anyone tell me why is trying to connect to "corbaloc:iiop:1.0(at)sapdpi-lpar:2809/NameService"? Do I have to configure a default provider URL for SAP PI server? If so, where I configure it? Any help will be appreciated.
    Thank you in advance.
    Roger Allué i Vall

    Hi Roger,
    we also experience the same issue and would be very keen to understand how you resolved this problem.
    Many thanks.
    Dieter

  • JDBC thin and thick clients

    What is the difference between JDBC thin and JDBC thick clients and their usage ?

    hi,
    in sort tearms,
    Oracle has a thin client driver which mean you can connect to a oracle database without the Oracle client installed on your machine.
    Thick client would need the Oracle Client database drivers etc.. Drivers include JDBC-ODBC bridge drivers JDBC drivers depending on tns resolution.
    thanks

  • How to use JDBC II and III Type Drivers?

    Hi To All
    I am learning JDBC Programming in Java. i got some couple of examples on JDBC I and IV type of Drivers. but i am not able to understand, and use 2nd and 3rd Type of JDBC Drivers. i did not find those examples anywhere. if you know how to use them, please help me. Thanks in advance.

    that's not for you to worry about. The native code is part of the driver, and supplied with it.
    In other words, the driver calls some DLL (or whatever, depending on operating system) which is most part of or calls the database client also installed on the client.
    This in turn calls the server.
    Your Java code never notices all that going on under the hood, except that it may well be slightly slower than using a type 4 driver (depending on the database, some may have highly optimised native network traffic, which is so much faster than the IP traffic of a type 4 driver that it makes up for the extra work needed to communicate between applications and application layers).

  • JDBC Scenario with JDBC Lookup and Updates

    Dear Experts,
    I am working on a JDBC receiver scenario.
    In this scenario, we are also using JDBC lookup to check the maximum EntyNumber which is a primary key. We are manually incrementing this primary key by one and inserting the record into the database.
    Both JDBC lookup and JDBC Insert are two differnt tasks. Thus when we send multiple IDOC's concurrently JDBC lookup fetches old values and when we try to insert the record if gives error of PRIMARY KEY VIOLATION.
    For example, consider the below scenario,
    Assume that there are already 10 records in the database.
    1. Two IDOCs No 1 and 2 sent from SAP system at the same time.
    2. Now, during the mapping of 1st IDOC we did a lookup and found that latest entry number in the database table is 10 and we mapped the entry number to 11 ( 10+1, i.e. next record )
    3. Before updating this record in the database, second IDOC triggered. During JDBC lookup of the sceond IDOC, we got the same entry as the earlier record has yet to be updated.
    4. During JDBC call we get the SQL error that "Primary Key Violation" because both the records have same primary key as "11".
    Kindly share your ideas.
    (SAP system is not sending the IDOC's in any certain order and we need a solution in PI itself. )
    - Shri

    >>> I am actually sending the primary key value to more than one table as a foreign key. I am looking for some solution
    If you are passing primary key value to many tables then jdbc lookup would not be solution. Use stored procedure.
    Refer this link for data type creation for stored procedure
    http://help.sap.com/saphelp_nw04/helpdata/en/2e/96fd3f2d14e869e10000000a155106/content.htm

Maybe you are looking for

  • Contacts from my mac desktop are no longer syncing to my iphone

    I have an iPhone 5.  I just updated to maverick.  Currently have itunes sync set to computer backup (versus cloud).  If I enter a new contact on my desktop it is not syncing, nor can I find a way on iTunes to make it happen.  Any ideas?

  • Complete Check Box in Version

    Dear All User has entered values for version change, and he forgot to click the "complete" check box and saves the document. So release is not get effected. I want this "complete" check box to be mandatory, in the case of purchase order. Any user Exi

  • Possible to Remove, Then Load All Text Styles?

    I'd like to remove all the Paragraph Styles and Character Styles from an InDesign CS4 document, and replace them with Paragraph Styles and Character Styles from another InDesign document. A search of this forum resulted in a similar discussion, http:

  • Pdf font problem

    Good afternoon to everyone  I have a problem with this pdf article  http://hotfile.com/dl/86909478/7a0c189/Eye_10_DuoTrav_vs_Xalacom_24-hr_XFG.pdf.html  when I use acroread 9.4-1 maverick, at first I get this message:  `Cannot extract the embedded fo

  • When i install latest itunes gives an error the configuration data for this product is corrupt.how can i i fix it

    hi there i was trying to install latest itunes it gives error the configuration data for this product is corrupt contact your personal support how can i fix it and what is the reason for this error