ADOCE Object creation problem
Hi,
Using Oracle lite release 5.0.2 I did packaged the Transport tutorial and successfully deployed it to a Pocket PC. For this I followed the instructions listed in the Oracle Lite 9i Developers Guide for Windows CE. (All the s/w and h/w requirements are fulfilled.)
On executing the Transport application on the Pocket PC the application is throwing an error, "Error creating ActiveX component". This error is occuring on a statement which creates the Connection object using the OLADOCE dll. The OLADOCE.dll file is present in the Windows folder. To ensure the availability of the dll file I copied the file in the same folder where the Transport file is located on the Pocket PC. But the problem persisted.
Can any one guide me so to resolve this issue?
Thanks in Advance,
Sachin.
Sachin,
Please try to re-register OLADOCE.dll using ceregsvr.exe. If this does not work, please reinstall the client and try the tutorial again.
- Junius
Similar Messages
-
ARRAY object creation problem in Java
Hi I am encountring when trying to create ARRAY in one case
while the same code works perfectly in other case.
The following code works fine:
Connection con=getConnection();
String[][] elements = new String[1][2];
elements[0][0] =new Long(1111).toString();
elements[0][1] =new Long(2222).toString();
ArrayDescriptor desc = ArrayDescriptor.createDescriptor("TYPE1",con);
toReturn = new ARRAY(desc,con,elements);
The following CODE GIVES ERROR :
Connection con=getConnection();
String[] elements = new String[1];
elements[0] =new Long(1111).toString();
ArrayDescriptor desc = ArrayDescriptor.createDescriptor("TYPE2",con);
toReturn = new ARRAY(desc,con,elements);
Please help.
FYI :
type TYPE1 is table of OBJECT : (ID NUMBER, Name VARCHAR2(50));
type TYPE2 is table of OBJECT : (ID NUMBER);
I tried to pass array of long ,int etc in case of TYPE2 but with no advantage.Hi Lawrence,
I have checked the system in the correct path only. I am checking in the following path
System Admnistration -->System Landscape-->then Portal content (on the left hand side)
What do you mean by consistancy problem ??? Mean while i will check with basis guys Apart from consulting them , As a Ep consultant do i need to check anything???
please correct me if i am wrong..... -
Hibernate child object creation problem
hi,
i have two java classes named "user" and "writer"
writer is subclass of user.
with hibernate mapping files , i 'm mapping objects with table-per-subclass strategy...
here is my mapping code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="User" table="User">
<id name="id" type="long" column="id">
<generator class="increment"/>
</id>
<property name="userName" column="userName"/>
<joined-subclass name="Writer" table="Writer">
<key column="user_id"/>
<set name="articles" table="writer_articles" lazy="false">
<key column="user_id"/>
<many-to-many column="Article_id"
unique="true"
class="Article"/>
</set>
</joined-subclass>
</class>
</hibernate-mapping>
when i create a writer(child) object, writer record is inserted to two tables with the same id column.it's good.not a problem
but when i create a user(parent) object then if i want to change role of user to writer it's a problem...
for example:
User user=new User(..); user is inserted to user table with id =10
i want to save same user as a writer with same id number to writer table
Writer writer =new Writer(..); writer must be inserted to writer table with id=10_
in hibernate writer is inserted to writer table with different id number...
what must i do to solve problem ??nobody replied about my problem...
i searched on google and learned some information
i think ,there is two way to resolve this issue:
1) -delete parent record - and -create child record-
but this could not be efficient.
2) insert child record with same id number to child table manually (by HQL )
Regards. -
Xdb_installation_trigger does not support object creation of type SNAPSHOT
hi everyone, i'm using Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit on solaris sparc 5.10
we like to send an email through SSL, and after searching here and there I found out that oracle DB 11g able to go throught the SSL.
since upgrade our DB to 11g would not be an option, so i tried to export XDB of 11g and import it into XDB 10gR2 schema, it was a mess...
then i just reinstall XDB using catnoqm.sql & catqm.sql
and now one of our programmer cant run some script like above
CREATE MATERIALIZED VIEW FIFSYS_MKT_SCHEME_MV_COY
TABLESPACE MARKETING_TABLES
PCTUSED 40
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
+)+
NOCACHE
LOGGING
NOCOMPRESS
NOPARALLEL
BUILD IMMEDIATE
REFRESH FORCE ON DEMAND
WITH PRIMARY KEY
AS
+/* Formatted on 9/23/2010 1:07:42 PM (QP5 v5.114.809.3010) */+
SELECT coy_id,
appl_branch_id,
appl_object_code,
product_type,
ppdcf_paid_date,
SUM (scheme_adm) scheme_adm,
SUM (appl_unit) appl_unit,
SYSDATE mkt_sysdate
FROM (SELECT NVL (a.coy_id, '01') coy_id,
a.branch_id appl_branch_id,
DECODE (a.buss_unit, 'NMC', '2101', 'UMC', '2102', '2352')
appl_object_code,
a.platform product_type,
TRUNC (c.contract_active_date) ppdcf_paid_date,
NVL (s.ms_amt, 0) scheme_adm,
NVL (o.total_item, 0) appl_unit
FROM ordmgmt.om_trn_appl_ms_lvl_object s,
ordmgmt.om_trn_appl_hdr a,
acctmgmt.ar_trn_sum_contracts c,
+( SELECT appl_no, COUNT ( * ) total_item+
FROM ordmgmt.om_trn_appl_object
GROUP BY appl_no) o
WHERE s.appl_no = a.appl_no
AND a.appl_no = o.appl_no
AND s.ms_code IN ('MS03', 'MS14')
AND c.appl_no = a.appl_no
AND c.contract_no = a.contract_no
+/*AND c.office_code = a.branch_id*/+
AND NVL (a.coy_id, '01') = NVL (c.coy_id, '01'))
GROUP BY coy_id,
appl_branch_id,
appl_object_code,
product_type,
ppdcf_paid_date;
COMMENT ON MATERIALIZED VIEW FIFSYS_MKT_SCHEME_MV_COY IS 'snapshot table for snapshot MARKETING.FIFSYS_MKT_SCHEME_MV_COY';
and this error shown:
ORA-00604 error occurred at recursive SQL level 1
ORA-20000 Trigger xdb_installation_trigger does not support object creation of type SNAPSHOT
ORA-06512 at line 32
maybe some of you know how to solve this problem??
and, this in the script of the xdb_installation_trigger
DROP TRIGGER SYS.XDB_INSTALLATION_TRIGGER;
CREATE OR REPLACE TRIGGER SYS.xdb_installation_trigger
BEFORE
CREATE ON DATABASE
DECLARE
sql_text varchar2(200);
val number;
BEGIN
if (dictionary_obj_owner != 'XDB') then
if (dictionary_obj_type = 'FUNCTION' or
dictionary_obj_type = 'INDEX' or
dictionary_obj_type = 'PACKAGE' or
dictionary_obj_type = 'PACKAGE BODY' or
dictionary_obj_type = 'PROCEDURE' or
dictionary_obj_type = 'SYNONYM' or
dictionary_obj_type = 'TABLE' or
dictionary_obj_type = 'TABLESPACE' or
dictionary_obj_type = 'TYPE' or
dictionary_obj_type = 'VIEW' or
dictionary_obj_type = 'USER'
+)then+
if (dictionary_obj_type != 'PACKAGE BODY'
+) then+
sql_text := 'select count(*) from ALL_OBJECTS where owner = :1 and object_name = :2 and object_type = :3';
execute immediate sql_text into val using dictionary_obj_owner, dictionary_obj_name, dictionary_obj_type;
if (val = 0) then
sql_text := 'select count(*) from dropped_xdb_instll_tab where owner = :1 and object_name = :2 and object_type = :3';
execute immediate sql_text into val using dictionary_obj_owner, dictionary_obj_name, dictionary_obj_type;
if (val = 0) then
insert into xdb_installation_tab values
+(dictionary_obj_owner, dictionary_obj_name, dictionary_obj_type);+
end if;
end if;
end if;
else
raise_application_error(-20000, 'Trigger xdb_installation_trigger does not support object creation of type '||dictionary_obj_type);
end if;
end if;
end;
+/+
/********************************************************************************/i'm so careless, after checking a fresh installation of the same version DB, i dont found xdb_installation_trigger.
so just by simply remove that trigger & everything works just fine. :) -
XML Document object access problem?
Hi,
I have created a servlet,which will call .sh file, which will call java application.........
this java application is working as a search engine,which will do search in the XML document object...........This is working fine when only one user run this servlet...........But when more than servlet do the same it is not working......... But once first servlet create the Document object,which is main source for serching..........then second servlet will work fine.......same thing with third servlet and so on...... I used the thread.sleep()/synchronize but it is not working...bcoz i am accessing the same application.....Then instead of servlet i tried to run the java application from the Dos prompt..........But i am facing the same problem......So pl guide me bcoz everything is working excluding this..........Becoz this document object creation is taking some time........ i am creating the object shown below
Document doc =parseXmlFile("Article.xml", false);
Element docElem = doc.getDocumentElement();
public static org.w3c.dom.Document parseXmlFile(String filename, boolean validating)
try {
// Create a builder factory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(validating);
// Create the builder and parse the file
// org.w3c.dom.Document doc = factory.newDocumentBuilder().parse(filename);
org.w3c.dom.Document doc = factory.newDocumentBuilder().parse(new File(filename));
return doc;
} catch (SAXException e) {
// A parsing error occurred; the xml input is not valid
} catch (ParserConfigurationException e) {
} catch (IOException e) {
return null;
}Hi,
This is my Servlet code..............
package PW.Feed;
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.StreamResult;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.util.*;
public class PrintDom extends HttpServlet
Document doc;
Element docElem;
Connection Conn=null;
Statement stmt=null,stmt1=null;
ResultSet rs1=null,rs=null;
PrintWriter out;
Vector myVector1=new Vector();
Vector myVector2=new Vector();
String strSql="";
public void doGet(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException
res.setContentType("text/html");
out=res.getWriter();
try
String pubtype=req.getParameter("PubType");
String pubDate=req.getParameter("PubDate");
String toDate=req.getParameter("ToDate");
String fromDate=req.getParameter("FromDate");
if(pubDate==null)pubDate="2";
if(toDate==null)toDate="02/09/2005";
if(fromDate==null)fromDate="02/08/2005";
Class.forName("org.firebirdsql.jdbc.FBDriver");
Conn = DriverManager.getConnection("jdbc:firebirdsql:192.168.0.15/3050:D:/FBDatabases/PW1.GDB","SYSDBA","cohezia");
//Conn = DriverManager.getConnection("jdbc:firebirdsql:192.168.0.99/3050:/share/pw1.gdb","SYSDBA","cohezia");
stmt = Conn.createStatement( );
if(pubDate.equals("2"))
strSql="Select sh.ARTICLEID,sh.cuttingsdate,sh.READDATE,sh.headline,sh.SUMMARY,sh.AUTHOR,sh.PAGEFROM,sh.PUB_NAME,sh.READER_NAME,sh.PARENTTITLE,sh.CANMAIL,sh.PUBLICATION_ID,sh.JOURNALIST_ID,sh.ISPDF FROM SCANSHEADER sh,PUBLICATIONS p where sh.publication_id=p.publication_id and sh.readdate>'"+fromDate+"' and sh.readdate<'"+toDate+"' and p.pubtype='"+ pubtype +"' order by sh.ARTICLEID";
else
strSql="Select sh.ARTICLEID,sh.cuttingsdate,sh.READDATE,sh.headline,sh.SUMMARY,sh.AUTHOR,sh.PAGEFROM,sh.PUB_NAME,sh.READER_NAME,sh.PARENTTITLE,sh.CANMAIL,sh.PUBLICATION_ID,sh.JOURNALIST_ID,sh.ISPDF FROM SCANSHEADER sh,PUBLICATIONS p where sh.publication_id=p.publication_id and sh.cuttingsdate>'"+fromDate+"' and sh.cuttingsdate<'"+toDate+"' and p.pubtype='"+ pubtype +"' order by sh.ARTICLEID";
rs=stmt.executeQuery(strSql);
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
doc = builder.newDocument();
docElem = doc.createElement("RECORDLIST");
doc.appendChild(docElem);
Element rootElem = doc.createElement("RECORDS");
docElem.appendChild(rootElem);
String artid="";
while(rs.next())
Element artElem = doc.createElement("RECORD");
if((rs.getString("ARTICLEID")).length()>0)artElem.setAttribute("id",rs.getString("ARTICLEID"));
rootElem.appendChild(artElem);
Element rootFieldElem = doc.createElement("FIELDS");
artElem.appendChild(rootFieldElem);
Element eleCuttingDate = doc.createElement("FIELD");
rootFieldElem.appendChild(eleCuttingDate);
eleCuttingDate.setAttribute("fieldName","CUTTINGSDATE");
if((rs.getString("CUTTINGSDATE")).length()>0) eleCuttingDate.appendChild(doc.createTextNode(rs.getString("CUTTINGSDATE")));
Element eleReadDate = doc.createElement("FIELD");
rootFieldElem.appendChild(eleReadDate);
eleReadDate.setAttribute("fieldName","READDATE");
if((rs.getString("READDATE")).length()>0) eleReadDate.appendChild(doc.createTextNode(rs.getString("READDATE")));
Element eleHeadLine = doc.createElement("FIELD");
rootFieldElem.appendChild(eleHeadLine);
eleHeadLine.setAttribute("fieldName","HEADLINE");
if((rs.getString("HEADLINE")).length()>0) eleHeadLine.appendChild(doc.createTextNode(rs.getString("HEADLINE")));
Element eleSummary = doc.createElement("FIELD");
rootFieldElem.appendChild(eleSummary);
eleSummary.setAttribute("fieldName","SUMMARY");
if(rs.getString("SUMMARY")==null){
//out.println("String is null");
else
{eleSummary.appendChild(doc.createTextNode(rs.getString("SUMMARY")));}
Element eleAuthor = doc.createElement("FIELD");
rootFieldElem.appendChild(eleAuthor);
eleAuthor.setAttribute("fieldName","AUTHOR");
if((rs.getString("AUTHOR")).length()>0) eleAuthor.appendChild(doc.createTextNode(rs.getString("AUTHOR")));
Element elePageFrom = doc.createElement("FIELD");
rootFieldElem.appendChild(elePageFrom);
elePageFrom.setAttribute("fieldName","PAGEFROM");
if((rs.getString("PAGEFROM")).length()>0) elePageFrom.appendChild(doc.createTextNode(rs.getString("PAGEFROM")));
Element elePubName = doc.createElement("FIELD");
rootFieldElem.appendChild(elePubName);
elePubName.setAttribute("fieldName","PUBNAME");
if((rs.getString("PUB_NAME")).length()>0) elePubName.appendChild(doc.createTextNode(rs.getString("PUB_NAME")));
Element eleReaderName = doc.createElement("FIELD");
rootFieldElem.appendChild(eleReaderName);
eleReaderName.setAttribute("fieldName","READER NAME");
if((rs.getString("READER_NAME")).length()>0) eleReaderName.appendChild(doc.createTextNode(rs.getString("READER_NAME")));
Element eleParentTitle = doc.createElement("FIELD");
rootFieldElem.appendChild(eleParentTitle);
eleParentTitle.setAttribute("fieldName","PARENTTITLE");
if((rs.getString("PARENTTITLE")).length()>0)eleParentTitle.appendChild(doc.createTextNode(rs.getString("PARENTTITLE")));
Element eleCanMail = doc.createElement("FIELD");
rootFieldElem.appendChild(eleCanMail);
eleCanMail.setAttribute("fieldName","CANMAIL");
if((rs.getString("CANMAIL")).length()>0) eleCanMail.appendChild(doc.createTextNode(rs.getString("CANMAIL")));
Element elePublicationID = doc.createElement("FIELD");
rootFieldElem.appendChild(elePublicationID);
elePublicationID.setAttribute("fieldName","PUBLICATION_ID");
if((rs.getString("PUBLICATION_ID")).length()>0) elePublicationID.appendChild(doc.createTextNode(rs.getString("PUBLICATION_ID")));
Element eleJournlistID = doc.createElement("FIELD");
rootFieldElem.appendChild(eleJournlistID);
eleJournlistID.setAttribute("fieldName","JOURNALIST_ID");
if((rs.getString("JOURNALIST_ID")).length()>0) eleJournlistID.appendChild(doc.createTextNode(rs.getString("JOURNALIST_ID")));
Element eleIspdf = doc.createElement("FIELD");
rootFieldElem.appendChild(eleIspdf);
eleIspdf.setAttribute("fieldName","ISPDF");
if((rs.getString("ISPDF")).length()>0) eleIspdf.appendChild(doc.createTextNode(rs.getString("ISPDF")));
Element rootKeyElem=doc.createElement("KEYWORDS_CODES");
String[] arrCodes=getKeyCodes(rs.getString("ARTICLEID"));
int count1 = myVector1.size();
String[] myArray1=new String[count1];
myVector1.copyInto(myArray1);
int count2 = myVector2.size();
String[] myArray2=new String[count2];
myVector2.copyInto(myArray2);
for(int j=0;j<arrCodes.length;j++)
Element eleKeyword= doc.createElement("KEYWORD_CODE");
eleKeyword.setAttribute("CodeId",arrCodes[j]);
eleKeyword.setAttribute("LongName",myArray1[j]);
eleKeyword.setAttribute("CodeType",myArray2[j]);
rootKeyElem.appendChild(eleKeyword);
artElem.appendChild(rootKeyElem);
Source source = new DOMSource(docElem);
//File file = new File("/share/PrintDom.xml");
StringWriter rw=new StringWriter();
Result result = new StreamResult(rw);
//Result result = new DOMResult();
// Write the DOM document to the file
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.transform(source, result);
out.println(rw);
catch (ClassNotFoundException e)
out.println("Unable to load Driver Class" + e);
return;
//fileLog.log(e,"PressWatchFrame1.PressWatchFrame1()");
catch (SQLException se)
out.println(se);
catch (Exception e)
out.println(e);
finally{
try{
if(Conn!=null) Conn.close();
catch(SQLException ignored){}
public String[] getKeyCodes(String strArticleId)
Vector myVector=new Vector();
myVector1.removeAllElements();
myVector2.removeAllElements();
try{
stmt1=Conn.createStatement( );
//String strSql1="Select codeid FROM SCANSSUBJECT where articleid='"+ strArticleId +"'";
String strSql1="Select ss.codeid,c.longname,c.codetype FROM SCANSSUBJECT ss,CODES c where ss.codeid=c.codeid and articleid='"+ strArticleId +"'";
rs1=stmt1.executeQuery(strSql1);
String strCodes="";
while(rs1.next())
myVector.add(rs1.getString("codeid"));
myVector1.add(rs1.getString("longname"));
myVector2.add(rs1.getString("codetype"));
}catch (SQLException se)
out.println(se);
int count = myVector.size();
String[] myArray = new String[count];
myVector.copyInto(myArray);
return myArray;
..................Thanx -
Use String Variable in New Object Creation
Thanks to those who review and respond. I am new to Java, so please be patient with my terminoloy mistakes and fumblings. I am reading in a file and I want to create a new object based on specific field (car for example). As you will notice I grab field 8 here label sIID.
String sIID = dts.group(8);
BTW this regex grouping works fine. The problem is seen when I try to use the sIID variable in my new object creation process.
DateParse sIID = new DateParse();
My IDE is reporting "Variable sIID is already defined in the scope"
Is this possible? The assumption is that the sIID will have different value during the processing of the file. For example, car could mean truck, sedan, etc with operators like color, number of doors, mileage, top speed, etc.Thanks for the reply. I have include similar and much shorter code for the sake of brevity.
My problems are centered around the x variable/object below. Ideally this would translate to three objects PersonA, PersonB, etc that I could reference later in the code as PersonA.newname if I wanted to. Hopefully this makes sense.
public class TestingObjects {
public static void main(String[] argv) {
String [] names;
names = new String[3];
names[0] = "PersonA";
names[1] = "PersonB";
names[2] = "PersonC";
for (String x:names) {
PN x = new PN(); // <- Problem
x.name = x;
x.SayName();
System.out.println(x.newname);
public class PN {
String name;
String newname;
public String SayName() {
newname = "Name = " + name;
System.out.println(name);
return newname;
} -
Hi ,
Static Object Creation :
Eg:
<mx:Fade id="ViewStack_EffectStart" duration="500" alphaFrom="0.0" alphaTo="1.0"/>
<mx:Fade id="ViewStack_EffectEnd" duration="500" alphaFrom="1.0" alphaTo="0.0"/>
<comp:ErrorBox id="errorBox" active="{active}" showEffect="{ViewStack_EffectStart}" hideEffect="{ViewStack_EffectEnd}"/> .
The above static objects is working fine, but the problem is that we have lot of similiar static object which creates a memory issue.If we create dynamic objects, will it avoid the issue.Is dynamic objects advisible?.
Thanks in advance.Please reply ASAP.
Thanks ,
San.hmn.. I don't understand your questions fully.
What about create the fade object in "Model" and reference the same Fade object for all dynamic objects?
or r u asking to find out how to create fade in actionscript?
var fade:Fade = new Fade();
fade.target = this;
fade.alphaFrom = 0;
fade.alphaTo = 1;
fade.play();
hope this helps,
BaBo, -
JVM 1.5.0, parallelism and object creation
Hi.
I am currently running Java 1.5.0 on a production server. This server is a 4-cpu 2gb ram beast running Red Hat ES 3. It provides MySQL backend and a Java server to be accessed through a Flash client.
So far, the Flash client fares well. MySQL takes worst cast 16% of one CPU for very heavy selections. But I am having problems with optimizing the Java part that does everything.
First and foremost, I cannot change the way it is. Our java code is mostly vendor code, thus we can't really expect to be able to easily change the code. Whatever code we added to the vendor code is definitely not the bottleneck, it's optimized, it's properly synchronized and it's very effective.
I would like to give you an idea of how things fares. You will see my problem soon.
- I am running one process of Java. This process is -Xms and Xmx'ed to 384 megs.
- The total DSize of the Java environment is more than a gigabyte due to the 1000+ threads that runs through it. More so, every client that runs through it adds up at least two threads.
- There are massive object creation and destruction happening. For a 100-client system, the "eden" memory is filled up and GC'ed at least twice per second. Since 1.5.0, the "old" memory of 384m gets filled up in 10 minutes, and GC'ed at that point.
- CPU usage is having fun between 80% and 150% of one CPU (remember I have 4 CPUs so 150% is 150/400% total usage)
- GC is the major speed bump for my server, as if I put 768 megs of Xmm instead of 384, cpu usage drops to 60%-90% CPU, that is, until memory gets filled up and swap gets used (do the math: 768m + 1200 thread stacks)
Now it works fine. 100 users, it's perfect. My major problem is that from next week on, we are planning 300+ users. Ouch.
So my few questions are:
- In knowing that garbage must constantly be collected, is there something I can do in the environment to make it happen all the time in background? Or am I bound to have all 4 cpu's stopped momentarily twice per second so that it might happen?
- In 1.4.x, I could change "eden" memory block size. It doesn't seem to be the same for 1.5.x. What's up with that? I used to increase it dramatically, making GC longer but less frequent, increasing parallelism force.
I am asking the questions because I am not in position of trying "what if"s with my production server. The test server handles well our 8 internal users ... but we are not close of making the same amount of request as our 100-users production server... so we cannot reliably try out options. Best case is see if it crashes or now.
Thanks
MikeMikle -- please make sure that you are using either the
UseParallelGC collector or the UseConcMarkSweepCollector.
Both would appear to address some of the problems you
mention.
You may need to tune the size of the young generation
explicitly. Check out the GC tuning documents/tips
at:
http://java.sun.com/docs/hotspot
You should make sure your application is not paging.
Since the default thread stack sizes are large (2 MB?)
and you may not need that much, you can try -Xss256k
(for example) to reduce the virtual memory requirements
for your thread stacks and free up more address space
for the Java heap.
In the end, for an application of the kind you describe you
probably need to go 64-bit and use a larger Java heap
along with the parallel/concurrent collector to deal with the
attendant GC overheads. That (going 64-bit) should be easy
(trivial) if your application is pure Java.
Hi.
I am currently running Java 1.5.0 on a production
server. This server is a 4-cpu 2gb ram beast running
Red Hat ES 3. It provides MySQL backend and a Java
server to be accessed through a Flash client.
So far, the Flash client fares well. MySQL takes worst
cast 16% of one CPU for very heavy selections. But I
am having problems with optimizing the Java part that
does everything.
First and foremost, I cannot change the way it is. Our
java code is mostly vendor code, thus we can't really
expect to be able to easily change the code. Whatever
code we added to the vendor code is definitely not the
bottleneck, it's optimized, it's properly synchronized
and it's very effective.
I would like to give you an idea of how things fares.
You will see my problem soon.
- I am running one process of Java. This process is
-Xms and Xmx'ed to 384 megs.
- The total DSize of the Java environment is more than
a gigabyte due to the 1000+ threads that runs through
it. More so, every client that runs through it adds up
at least two threads.
- There are massive object creation and destruction
happening. For a 100-client system, the "eden" memory
is filled up and GC'ed at least twice per second.
Since 1.5.0, the "old" memory of 384m gets filled up
in 10 minutes, and GC'ed at that point.
- CPU usage is having fun between 80% and 150% of one
CPU (remember I have 4 CPUs so 150% is 150/400% total
usage)
- GC is the major speed bump for my server, as if I
put 768 megs of Xmm instead of 384, cpu usage drops to
60%-90% CPU, that is, until memory gets filled up and
swap gets used (do the math: 768m + 1200 thread
stacks)
Now it works fine. 100 users, it's perfect. My major
problem is that from next week on, we are planning
300+ users. Ouch.
So my few questions are:
- In knowing that garbage must constantly be
collected, is there something I can do in the
environment to make it happen all the time in
background? Or am I bound to have all 4 cpu's stopped
momentarily twice per second so that it might happen?
- In 1.4.x, I could change "eden" memory block size.
It doesn't seem to be the same for 1.5.x. What's up
with that? I used to increase it dramatically, making
GC longer but less frequent, increasing parallelism
force.
I am asking the questions because I am not in position
of trying "what if"s with my production server. The
test server handles well our 8 internal users ... but
we are not close of making the same amount of request
as our 100-users production server... so we cannot
reliably try out options. Best case is see if it
crashes or now.
Thanks
Mike -
Oracle 8i Lite: Command Object Creation Failed
Hi Everyone,
I use Windows XP everything works except navigator and I get the message that Command Object Creation Failed
Does Anyone know how to fix this and I have to use 8i Lite as it for a school database project
Thanks in advance for everyone's help
J SHi. I know this response is too many years late, but I'm putting it in case someone (like me a few days ago) needs to connect to a legacy server using legacy tools:
This error is caused by the installer, sometimes it does not adequately register the OLE/COM objects provided in nav8cmd.dll
So, to correct it:
- open a command window
- change to the directory where the navigator program files reside (In my case c:\orant\bin)
- type the following command: regsvr32 nav8cmd.dll
You should receive a message that the DLL was correctly registered. After that you can use the navigator without problems.
Cheers. -
Frequent Object Creation vs. synchronized
HI all,
I'm just looking to prompt a discussion I can learn from. Apologies if I'm missing something.
Having just read the excellent articles over at:
http://www-106.ibm.com/developerworks/java/library/j-threads1.html
http://www-106.ibm.com/developerworks/java/library/j-threads2.html
http://www-106.ibm.com/developerworks/java/library/j-threads3.html
I was left wondering about the (largely unmentioned) trade-off between object creation and use of synchronization.
If a particular part of a given system is heavily accessed then one might consider instantiating, and caching references to, components in an initialisation stage. In a multithreaded environment, this can obviously pose a problem.
If these components aren't threadsafe then at some point use will have to be made of a synchronized block, unless the unsafe components are instantiated for every thread.
The articles do mention the overrated cost of synchronization - how does this compare with the cost of frequent object instantiation?
Thanks for your time,
JohnGWell, let's time it (test program below):
using no synchronization: 180 ms (baseline measurement, not thread safe)
using new: 1111 ms
using uncontended sync: 491 ms
using contended sync: 49531 ms
new is fast - ten million temporary object allocations and frees per second. A magnitude faster than in traditional malloc()/free() -based languages. new is rarely a performance problem in Java programs.
Uncontended locks are fast - twenty million per second.
Heavily contended locks slow you down. Way down. A second becomes a minute.
Don't try to optimize unless you have measured a real performance bottleneck.
Object pooling is unlikely to help. Exceptions being objects that are expensive to initialize and are created often (e.g. large buffers or arrays, cryptographic engines that take time to initialize, or connections to external systems such as databases). You'll need to measure first if object creation really is the bottleneck.
public class t
static class Calculator
private int value;
void initialize(int n)
value = n;
int result()
return value * 2;
static class NewThread
extends Thread
int result;
public void run()
for (int n = 0; n < 1000 * 1000; n++) {
Calculator x = new Calculator();
x.initialize(n);
result += x.result();
static class SyncThread
extends Thread
static Calculator x = new Calculator();
int result;
public void run()
for (int n = 0; n < 1000 * 1000; n++) {
synchronized (x) {
x.initialize(n);
result += x.result();
// Not thread safe
static class BaselineThread
extends Thread
static Calculator x = new Calculator();
int result;
public void run()
for (int n = 0; n < 1000 * 1000; n++) {
x.initialize(n);
result += x.result();
public static void main(String args[])
throws Exception
int thread_count = 10;
for (int n = 0; n < 5; n++) {
Thread threads[] = new Thread[thread_count];
long start = System.currentTimeMillis();
for (int m = 0; m < thread_count; m++) {
// threads run consecutively, not in parallel
(threads[m] = new BaselineThread()).start();
threads[m].join();
long end = System.currentTimeMillis();
System.out.println("using no synchronization: " +
(end - start) + " ms");
for (int n = 0; n < 5; n++) {
Thread threads[] = new Thread[thread_count];
long start = System.currentTimeMillis();
for (int m = 0; m < thread_count; m++)
(threads[m] = new NewThread()).start();
for (int m = 0; m < thread_count; m++)
threads[m].join();
long end = System.currentTimeMillis();
System.out.println("using new: " + (end - start) + " ms");
for (int n = 0; n < 5; n++) {
Thread threads[] = new Thread[thread_count];
long start = System.currentTimeMillis();
for (int m = 0; m < thread_count; m++) {
// threads run consecutively, not in parallel
(threads[m] = new SyncThread()).start();
threads[m].join();
long end = System.currentTimeMillis();
System.out.println("using uncontended sync: " +
(end - start) + " ms");
for (int n = 0; n < 5; n++) {
Thread threads[] = new Thread[thread_count];
long start = System.currentTimeMillis();
for (int m = 0; m < thread_count; m++)
(threads[m] = new SyncThread()).start();
for (int m = 0; m < thread_count; m++)
threads[m].join();
long end = System.currentTimeMillis();
System.out.println("using contended sync: " +
(end - start) + " ms");
} -
How to show object creation in UML
How to show object creation in UML
In a sequence diagram, it's a line (with arrow) pointing to the new object and the <creates> or <new> tag as mentioned above.
| obj 1 |
|
| <creates> ----------
| --------------> | obj 2 |
| ----------or----------
| obj 1 |
|
| <new> ----------
| --------------> | obj 2 |
| ---------- -
FIM MA Export errors. There is an error executing a web service object creation.
While checking for the permission, we have figured that the Built-In Synchronization account is being deleted by an Expiration Workflow.
FIM MA Export errors. There is an error executing a web service object creation.
While checking for the permission, we have figured that the Built-in Synchronization account was deleted by an Expiration Workflow
Is there a way to restore. Thanks.I would re-run FIM setup - I think it can re-create this account
If you found my post helpful, please give it a Helpful vote. If it answered your question, remember to mark it as an Answer. -
Hello
Please tell me what is the difference between these two object creation of string.
String str = new String("Hello");.
String str="Hello";
Thanks.RGEO wrote:
hello,
Is the string pool is part of a heap? Huh? I suppose yes, you could regard the String pool as part of the heap... but (I guess) that interned String objects would be placed directly into the permanent generation, which is not garbage collected... and therefore I don't really think of the permanent generation as part of the heap (except when tuning heap allocations)... but I think I'm talking over your noob head here, yes... and so to the noob-stuff.
If you get bored you might like to scan (for now) http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html#generations ... and come back to it in a couple of years time (when every second word isn't new and baffling to you;-)
jvm what will do when he encounter the following code,
String s1 = new String ("hello");The VM will:
1. Create a new String object, and then
2. copy the characters 'h','e','l','l','o' from the interned String "hello" to the new String,
3. and then assign a reference to the new String to variable s1.
Note that the result is subtley different from String s1 = "hello", which just does step 3... it assigns a reference to the existing interned String object "hello" to the variable s1... it does not create and "populate" a new String object.
Try this just for fun... what is the output of the following program? Why?
package forums;
public class StringEquals
public static void main(String[] args) {
try {
String a = "Hello";
String b = "Hello";
System.out.println("a==b is "+(a==b));
String c = new String("Hello");
System.out.println("a==c is "+(a==c));
} catch (Exception e) {
e.printStackTrace();
}Now, what's the correct way to evaluate equality of String objects in Java?
HTH. Cheers. Keith. -
Cost of object creation vs reflection?
How does the cost of invoking a method using reflection compare to the cost of object creation? Thank you,
rankoi agree. in such cases, you should do the simplest thing that could possibly work. there are legitimate uses for reflection. without reflection, we have no core serialization mechanism. without serialization, we have no core RPC mechanism (RMI). no dynamic proxies without reflection. all those neat visual building tools are hampered without reflection. ORBs and scripting languages like Jython are hindered.
note that the legitimate uses of reflection shown above tend to be for core JDK, or for development tools. that should be a clue to the developer that unless you're building these kinds of systems, you should reconsider whether reflection is necessary.
that said, reflection has a high "cool" factor. i think that's what sucks developers toward it. it sucked me in, that's for sure. 8^)
--p -
Hello,
I have a question on object creation and while loops. Have a look at the following code snippet:
while(true)
Object obj = new Object();
// Pass off obj to a new thread
Thread job = new Thread(new ObjectHandler(obj));
job.start();
}My question is, do I have to wait until the newly created Thread is finished with the Object obj before I can create a new Object called obj in the while loop?
Also does anyone have any documentation on this sort of thing?
Thanks,
Tony.Jaxie wrote:
I'm still not sure you get what I'm on about, you might want to read up on java methods and pass by value.I think we know how it works. Most of us have been programming in Java for serveral years.
>
When you pass an object to a method in java you pass it a copy of a reference to that object. Leading on from that, before an object is eligible for garbage collection in java, all references to that object must be dropped.
So with all that in place, my question was, is the creation of an object in a while loop dependent on previous objects of the same name? Objects don't have names. Have we mentioned that before?
You have a reference, larry that is referencing an unnamed object. You can also create other references that reference the same object. The thread will have one reference. You can then make larry reference another object. That will not change anything in the thread. It will still reference the old object, and that object will not be claimed by the gc until that thread stops referencing it.
So the second time we go through the loop below, do we have to wait until larry has been garbage collected, before a new larry can be created?Read the articles/tutorials and what I have written above. What do you think?
Do also note that the GC isn't executed synchronously.
Maybe you are looking for
-
After transfer only sound in 1 headphone
Hey all, When i import my CDs using itunes, they import in stereo format. When i update my ipod 20G with these albums, however, some of the albums play through one earphone only - the rest are fine. It is not a problem with the earphones as i have tr
-
i have a grey screen at startup, it loads for a while then shuts down. I have already tried safe boot and resetting RAM with no success. Any ideas?
-
When my computer performs a backup while I'm using the battery, it just says Preparing Backup and doesn't progress. On the other hand when my computer performs a backup with the power adapter plugged into my computer, the backup works fine. I can't a
-
Which video format is best to import into PrPro?
I everyone: I seem to have a "lag issue" when trying to work with videos in my brand-new laptop. Here are the specs for the laptop: Dell Inspiron 17 w/Vista x64 Intel Core 2 Duo P8600 (2.4GHz/1066MHz FSB/ 3MB) 4GB, DDR2, 800MHz 2 Dimm 500G 5400RPM SA
-
Events on iTouch are disappearing!!!
I KNOW I entered an event on my iTouch last week, but when I synched, it disappeared and didn't appear on my Outlook. HELP! I've searched my settings on iTunes, but can't figure out what would cause it to do that.