Weblogic 8.1 SP2 + Sybase: Problem with Insufficient Procedure Cache Memory
Hi all,
Our Weblogic server(8.1, SP2) encountered a problem this week.
It connects to Sybase.
For a particular database query (which involves temporary tables), the DB seems to have run out of "Procedure Cache memory". And as a result, has thrown an exception.
What is a bit wierd is that, the Weblogic, slowly, seems to have exhausted all its DB resources, and all the subsequent database queries (even the simple ones) have failed due to some error or the other.
The weblogic required a re-start for it to acquire back its DB resources.
Has somebody faced a similar problem before, please?
On reading the Release Notes for WLS: 8.1, I see that the Service Packs SP4, SP5 seem to have a few bug fixes related to memory leaks (especially, in case a Prepared statement failed).
[Related CRs are CR233948, CR179600, CR183190].
Does this mean that an Upgrade to 8.1: SP5 or maybe even SP6 help, please?
Would welcome any kind of advice/suggestions.
Thanks you!!!!
Rhishi.
Rhishikesh Anandamoorthy wrote:
Hi Joe,
Thanks a lot for your reply.
I should have mentioned in my previous post that the DBA had indeed recommended
an increase to the Sybase's Procedure Cache Memory size. (We have a separate
DBA team out here, and I do not have DBA access to my database).
But I am a bit apprehensive on two counts:
1. From the DB logs, I see that the query which seems to have failed is something
which is fired day in and day out (though this involves the usage of temporary tables,
which might have filled up the Cache). I should also add that the "DB statistics" was
also being run (automatically) about the same time when the query failed. But again,
the "DB statistics" is run everyday. So, cant see much of a problem here.Nevertheless, it is an internal DBMS issue.
2. The CR179600 and CR183190 of the Weblogic Release Notes suggests that: "Under
certain statement failure conditions, cached statements are leaked without being
closed, which can lead to DBMS resource problems."
So, I am just wondering if this is indeed the actual cause. If so, it might mean
that there is a chance, though slight, that the problem might re-occur.
There seems to be a fix for this in SP5.I certainly advocate upgrading to 81sp6, but that issue had to do with Oracle,
which retains DBMS 'cursors' for each open prepared statement. This will have
no effect on a Sybase DBMS.
I can certainly upgrade to SP6. But, the application seems to have been pretty
stable with SP2 for the past 4 years.
I understand that an upgrade to SP6 may not be such a big change. But, it would
still be a change.
And the webapp which the server supports is very critical to our customer
[which webapp is not? :-) ], and a server-restart again for this issue would
certainly not be acceptable.
So, would want to be doubly sure, if an upgrade is indeed the right way out.
Thank you!!!
Rhishi.In that case, I would stay comfortable with SP2 if you like. In my professional
opinion, at this time, it is a purely DBMS-side issue, based on the current
evidence. Note that the same WLS was fine for these same previous years. The
problem may have to do with a gradual or recent change in the load or size of
the DBMS.
Joe Weinstein at BEA Systems ( nee [email protected] 1988-1996 )
Similar Messages
-
People,
I'm having a problem with a procedure in the moment I'm trying to execute it, could someone help.
CREATE OR REPLACE PROCEDURE CARREGA IS
begin
declare
strSQL VARCHAR2(250);
NCham number(9);
cursor n_chamados is
SELECT NumeroChamado, Planta, Instalacao, Defeito,
DescricaoDefeito, Servico, DataChamado,Horas, Minutos
FROM DEFEITOS_AUX;
begin
For reg_chamado in n_chamados
Loop
begin
NCham := reg_chamado.numerochamado;
strSQL := 'SELECT numerochamado FROM Defeitos';
strSQL := strSQL || ' WHERE numerochamado =';
strSQL := strSQL || NCham || ' GROUP BY numerochamado';
EXECUTE IMMEDIATE strSQL;
exception
when no_data_found then
strSQL := 'INSERT INTO Defeitos (';
strSQL := strSQL || 'NumeroChamado, ';
strSQL := strSQL || 'Planta, ';
strSQL := strSQL || 'Instalacao, ';
strSQL := strSQL || 'Defeito, ';
strSQL := strSQL || 'DescricaoDefeito, ';
strSQL := strSQL || 'Servico, ';
strSQL := strSQL || 'DataChamado, ';
strSQL := strSQL || 'Horas, ';
strSQL := strSQL || 'Minutos) ';
strSQL := strSQL || 'VALUES ( ';
strSQL := strSQL || reg_chamado.NumeroChamado || ', ';
strSQL := strSQL || reg_chamado.Planta || ', ';
strSQL := strSQL || reg_chamado.Instalacao || ', ';
strSQL := strSQL || reg_chamado.Defeito || ', ';
strSQL := strSQL || reg_chamado.DescricaoDefeito || ', ';
strSQL := strSQL || reg_chamado.Servico || ', ';
strSQL := strSQL || reg_chamado.DataChamado || ', ';
strSQL := strSQL || reg_chamado.Horas || ', ';
strSQL := strSQL || reg_chamado.Minutos || ')';
EXECUTE Immediate strSQL;
end;
strSQL := 'UPDATE Defeitos SET ';
strSQL := strSQL || 'Planta = ' || reg_chamado.Planta;
strSQL := strSQL || ', Instalacao = ' || reg_chamado.Instalacao;
strSQL := strSQL || ', Defeito = ' || reg_chamado.Defeito;
strSQL := strSQL || ', DescricaoDefeito = ' || reg_chamado.DescricaoDefeito;
strSQL := strSQL || ', Servico = ' || reg_chamado.Servico;
strSQL := strSQL || ', DataChamado = ' || reg_chamado.DataChamado;
strSQL := strSQL || ', Horas = ' || reg_chamado.Horas;
strSQL := strSQL || ', Minutos = ' || reg_chamado.Minutos;
strSQL := strSQL || ' WHERE NumeroChamado = ' || NCham;
EXECUTE Immediate strSQL;
end loop;
end;
end;Hi Erika,
there is no need for dynamic SQL.
I suppose the NumeroChamado is your primary key and has an unique index on it.
Just insert the rows and if there is already an existing row, catch the exception and update the row.
CREATE OR REPLACE PROCEDURE CARREGA IS
CURSOR n_chamados IS
SELECT NumeroChamado,
Planta,
Instalacao,
Defeito,
DescricaoDefeito,
Servico,
DataChamado,
Horas,
Minutos
FROM DEFEITOS_AUX;
BEGIN
FOR reg_chamado IN n_chamados LOOP
BEGIN
INSERT INTO Defeitos (;
NumeroChamado, ';
Planta,
Instalacao,
Defeito,
DescricaoDefeito,
Servico,
DataChamado,
Horas,
Minutos
) VALUES (
reg_chamado.NumeroChamado,
reg_chamado.Planta,
reg_chamado.Instalacao,
reg_chamado.Defeito,
reg_chamado.DescricaoDefeito,
reg_chamado.Servico,
reg_chamado.DataChamado,
reg_chamado.Horas,
reg_chamado.Minutos
EXCEPTIONS
WHEN DUP_VAL_ON_INDEX THEN
UPDATE Defeitos SET
Planta = reg_chamado.Planta,
Instalacao = reg_chamado.Instalacao,
Defeito = reg_chamado.Defeito,
DescricaoDefeito = reg_chamado.DescricaoDefeito,
Servico = reg_chamado.Servico,
DataChamado = reg_chamado.DataChamado,
Horas = reg_chamado.Horas,
Minutos = reg_chamado.Minutos
WHERE NumeroChamado = reg_chamado.NumeroChamado;
END;
END LOOP;
END; -
WLS 7.0 sp2 - Servlet Problems with SOAP messages
I'm using Weblogic 7.0 SP2 and trying to create a Servlet to receive SOAP wrapped
XML messages. I'm getting the following error. Is this a problem with WLS7.0sp2's
support of JAXM? The System.out.println's indicate I have successfully received
the incoming SOAP request and then successfully formatted the SOAP response, but
upon returning saving the response it appears to blow up. Does anyone have any
suggestions?
I need to do the following in a servlet:
- receive an incoming SOAP request with an embedded XML message
- perform some processing
- return a SOAP response with an embedded XML message
Should I be using JAXM? Or can I do this same task easily with JAX-RPC?
<Feb 24, 2004 4:10:42 PM AST> <Error> <HTTP> <101017> <[ServletContext(id=260434
7,name=isd.war,context-path=)] Root cause of ServletException
java.lang.Error: NYI
at weblogic.webservice.core.soap.SOAPMessageImpl.saveRequired(SOAPMessag
eImpl.java:360)
at javax.xml.messaging.JAXMServlet.doPost(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
(ServletStubImpl.java:1058)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:401)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:306)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.run(WebAppServletContext.java:5445)
at weblogic.security.service.SecurityServiceManager.runAs(SecurityServic
eManager.java:780)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:3105)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2588)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)
>
I've stripped the code down so that all it does is verifies the incoming SOAP/XML
request and creates a hard-coded response... be gentle... I'm a novice at this
import javax.xml.soap.*;
import javax.servlet.*;
import javax.servlet.http.*;
// import javax.xml.transform.*;
import java.util.*;
import java.io.*;
public class RegisterServlet extends HttpServlet
static MessageFactory fac = null;
static
try
fac = MessageFactory.newInstance();
catch (Exception ex)
ex.printStackTrace();
public void init(ServletConfig servletConfig) throws ServletException
super.init(servletConfig);
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException
try
System.out.println("** Note: doPost() Entering req = " + req);
// Get all the headers from the HTTP request
MimeHeaders headers = getHeaders(req);
// Get the body of the HTTP request
InputStream is = req.getInputStream();
// Now internalize the contents of a HTTP request
// and create a SOAPMessage
SOAPMessage msg = fac.createMessage(headers, is);
System.out.println("** Note: doPost() Step A");
SOAPMessage reply = null;
reply = onMessage(msg);
System.out.println("** Note: doPost() Step B reply = " + reply);
if (reply != null)
* Need to call saveChanges because we're
* going to use the MimeHeaders to set HTTP
* response information. These MimeHeaders
* are generated as part of the save.
if (reply.saveRequired())
System.out.println("** Note: doPost() Step C reply.saveRequired()");
reply.saveChanges();
resp.setStatus(HttpServletResponse.SC_OK);
putHeaders(reply.getMimeHeaders(), resp);
// Write out the message on the response stream
OutputStream os = resp.getOutputStream();
System.out.println("** Note: doPost() Step D os = " + os);
reply.writeTo(os);
os.flush();
else
resp.setStatus(HttpServletResponse.SC_NO_CONTENT);
catch (Exception ex)
throw new ServletException("** Error: SAAJ POST failed: " + ex.getMessage());
static MimeHeaders getHeaders(HttpServletRequest req)
Enumeration enum = req.getHeaderNames();
MimeHeaders headers = new MimeHeaders();
while (enum.hasMoreElements())
String headerName = (String)enum.nextElement();
String headerValue = req.getHeader(headerName);
StringTokenizer values =
new StringTokenizer(headerValue, ",");
while (values.hasMoreTokens())
headers.addHeader(headerName,
values.nextToken().trim());
return headers;
static void putHeaders(MimeHeaders headers, HttpServletResponse res)
Iterator it = headers.getAllHeaders();
while (it.hasNext())
MimeHeader header = (MimeHeader)it.next();
String[] values = headers.getHeader(header.getName());
if (values.length == 1)
res.setHeader(header.getName(),
header.getValue());
else
StringBuffer concat = new StringBuffer();
int i = 0;
while (i < values.length)
if (i != 0)
concat.append(',');
concat.append(values[i++]);
res.setHeader(header.getName(), concat.toString());
// This is the application code for handling the message.
public SOAPMessage onMessage(SOAPMessage message)
SOAPMessage replymsg = null;
try
System.out.println("** Note: OnMessage() Entering msg = " + message);
//Extract the ComputerPart element from request message and add to reply SOAP
message.
SOAPEnvelope reqse = message.getSOAPPart().getEnvelope();
SOAPBody reqsb = reqse.getBody();
//System.out.println("** Note: OnMessage() Step B");
System.out.println("** Note: OnMessage () Step A Soap Request Message Body = "
+ reqsb);
//Create a reply mesage from the msgFactory of JAXMServlet
System.out.println("** Note: OnMessage () Step B");
replymsg = fac.createMessage();
SOAPPart sp = replymsg.getSOAPPart();
SOAPEnvelope se = sp.getEnvelope();
SOAPBody sb = se.getBody();
System.out.println("** Note: OnMessage () Step C Soap Reply Before Message Body
= " + sb);
se.getBody().addBodyElement(se.createName("RegisterResponse")).addChildElement(se.createName("ErrorCode")).addTextNode("000");
System.out.println("** Note: OnMessage () Step D Soap Reply After Message Body
= " + sb);
replymsg.saveChanges();
System.out.println("** Note: OnMessage() Exiting replymsg = " + (replymsg));
catch (Exception ex)
ex.printStackTrace();
return replymsg;
Michael,
I got the same error on WLS8.1/Win2K professional and apache FOP (old version).
After digging into the WLS code and FOP(old version). i found the conflict happens
on
the "org.xml.sax.parser" system property. In WLS code, they hard coded like the
following when startup weblogic server:
System.setProperty("org.xml.sax.parser", "weblogic.xml.jaxp.RegistryParser");
But the FOP code try to use the "org.xml.sax.parser" system property to find the
sax parser then conlict happens.
Here is the response from BEA support :
"I consulted with our developers regarding the question of whether we can change
the hard-coded value for the java system property: org.xml.sax.parser by using
a configuration parameter and I found that unfortunately there is no specific
setting to change the value. As you had mentioned in your note the org.xml.sax.parser
system property can be changed programmatically in your application code."
I solve my problem by using newer apache FOP (it never use the system property:org.xml.sax.parser
any more) and XML Registy for WLS8.1.
Good luck.
David Liu
Point2 Technologies Inc.
"p_michael" <[email protected]> wrote:
>
Help.
When we migrated from WLS 6.1 to WLS 7.0 SP2 when encountered a problem
with XML
parsing that did not previously exist.
We get the error "weblogic.xml.jaxp.RegistryParser is not a SAX driver".
What does this mean? And, what should we do about it.
p_michael -
Weblogic 10.3.5.0 problem with hibernate criteria
Hi,
I have problim with using Hibernate Criteria on Weblogic server. Everithing works fine on Tomcat.
On weblogic I can execute this on Weblogic :
Query query = sessionFactory.getCurrentSession().createSQLQuery("select sysdate from dual");//To get string date
String result = query.uniqueResult().toString();
,but I have problem with executing criteria which work on tomcat:
Criteria crit=sessionFactory.getCurrentSession().createCriteria(MyclassWithHibernate.class);
crit.setFirstResult(0);
crit.setMaxResults(1);
return (MyclassWithHibernate) crit.uniqueResult();
On weblogic, same criteria return me null and I get this exception:
java.lang.NullPointerException
at test.Rasa.getValueTest(Rasa.java:68)
at test.Rasa$$FastClassByCGLIB$$b6e6c0b9.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:692)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625)
at test.Rasa$$EnhancerByCGLIB$$e20363db.getValueTest(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:418)
at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1400)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:1005)
at flex.messaging.endpoints.AbstractEndpoint$$FastClassByCGLIB$$1a3ef066.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:692)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.flex.core.MessageInterceptionAdvice.invoke(MessageInterceptionAdvice.java:66)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.adapter.ThrowsAdviceInterceptor.invoke(ThrowsAdviceInterceptor.java:124)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.Cglib2AopProxy$FixedChainStaticTargetInterceptor.intercept(Cglib2AopProxy.java:576)
at flex.messaging.endpoints.AMFEndpoint$$EnhancerByCGLIB$$64941f01.serviceMessage(<generated>)
at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:103)
at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)
at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:166)
at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:291)
at flex.messaging.endpoints.AMFEndpoint$$EnhancerByCGLIB$$64941f01.service(<generated>)
at org.springframework.flex.servlet.MessageBrokerHandlerAdapter.handle(MessageBrokerHandlerAdapter.java:101)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94)
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
Enwironment is :
WebLogic Server 10.3.5.0
Hibernate 3.x
Spring 3.x
I am using this configuration i application context:
<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close">
<property name="connectionCachingEnabled" value="true" />
<property name="URL" value="jdbc:oracle:thin:@address:port:db" />
<property name="user" value="myuser"></property>
<property name="password" value="mypass"></property>
<property name="connectionCacheProperties">
<props merge="default">
<prop key="MinLimit">3</prop>
<prop key="MaxLimit">20</prop>
</props>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref ="dataSource"/>
<property name="packagesToScan" value="test*" />
<property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.use_sql_comments">true</prop>
<prop key="hibernate.generate_statistics">true</prop>
</props>
</property>
</bean>
Thanks for any help.Which code snippet is throwing the nullpointerexception?
Does Spring create the SessionFactory?
Maybe it is related but when running Hibernate on WebLogic you have to take care of a classloading issue with the antlr libary,
more information can be found here: http://middlewaremagic.com/weblogic/?p=5861 -
Problem with "Insufficient data for image" and embedded JPEG 2000 Images
I frequently download pdf from the http://www.glorecords.blm.gov web site. They are reporting a problem with Reader Reader 10.1.4 and the pdf files they have.
"("Insufficient data for image" and embedded JPEG 2000 Images)"
I am experiencing the same "Insufficient data for image" error when opening their downloaded pdf and viewing in ACROBAT X 10.1.4.
Can someone address this please?
Win 7 sp1Read this:
http://blogs.adobe.com/dmcmahon/2012/08/21/acrobat-insufficient-data-for-an-image-error-af ter-updating-to-10-1-4-or-9-5-2/ -
Problem with optional attribute caching on a custom tag
Hello,
I've created a tag by extending TagSupport. I have one attribute that is optional. I'm having a problem with this attribute since the tag is cached. If the value is not specified in the tag, it is always using the previous value from the past request.
I understand why this is happening, but I wonder if there is anyway to reset this value besides doing it at the end of the doStartTag or in the doEndTag methods? I simply want it to be an empty string if it is not in the request.
Thanks,
TimThats abit overkill in my opinion.Probably yes, but its a cleaner option. In case your doEndTag handles custom exceptions, you would anyhow need to put this code in a finally block, right ?
public int doEndTag() throws JspException {
try {
call some methods that throws other checked exceptions;
}catch(Exception1 e){
throw JspException(e);
}catch(Exception2 e){
//log and ignore
}finally{
//clean up here
return an int;
Having said that, different containers implement the spec a bit differently. For example, in our project, we use weblogic and for wl, we put our clean up code in the release() method which according to the spec, needs to be called only before gc. Weblogic implementation is a bit different - its called after doEnd() for every use of the tag.
This is from jsp spec regarding tag life cycle especially with reuse
Some setters may be called again before a tag handler is reused. For
instance, setParent() is called if it�s reused within the same page but at a dif-ferent
level, setPageContext() is called if it�s used in another page, and
attribute setters are called if the values differ or are expressed as request-time
attribute values.
�Check the TryCatchFinally interface for additional details related to exception handling and resource management.
cheers,
ram.
} -
Problem with threads and/or memory
I'm developing an application where there are 3 threads. One of them sends a request to the other, and if the 2nd can't answer it, it sends it to the 3rd (similar to CPU -> CACHE -> MEMORY). When i run the program with 1000-10.000 requests, no problem occurs. When i run it with 300.000-1.000.000 requests, it sometimes hangs. Is this a problem with the garbage collector, or should it be related to the threads mecanism.
(note: eache thread is in execution using a finite state machine)i had been running the program inside Netbeans.
Running the jar using the command line outside
Netbeans i have no more problems... Does Netbeans use
it's own JVM?Depends how you set it up, but look under the options. There are settings for the compiler and jvm that it uses. -
Hi,
We have a problem with a Oracle procedure call using the Sql Execute
Procedure statement.
The call gives us this error :
SYSTEM ERROR: (This error was converted)
(This error was converted)
OpenCursor failed for SQL statement in project LFB010, class
ClsDemarreLFB010,
method Demarre, methodId 4, line 32, error from database is:
ORA-01036: illegal variable name/num
Class: qqdb_ResourceException
Distributed method called: qqdb_SessionProxy.OpenCursor!22 (object
name
instance/d4745a10-c8e4-11d1-97fd-90cad1e7aa77:0x196:0x4/lfb010_cl0/lfb010_cl
0-fonctiondbservice0x196:0x2)
from partition "LFB010_CL0_Client", (partitionId =
D4745A10-C8E4-11D1-97FD-90CAD1E7AA77:0x196:0x4, taskId =
[D4745A10-C8E4-11D1-97FD-90CAD1E7AA77:0x196.3]) in application
"FTLaunch_cl0", pid 4290975297 on node LAXOU146 in environment
CentralEnv
Oracle error: 1036, Server: sipre_tcp, UserName: forte
Database Statement: begin
:qqReturnValue := AID_CUMUL_ELTVAL;
end;
Class: qqdb_ResourceException ..........
And this is the TOOL code :
BEGIN TRANSACTION
TmpEtat : IntegerData = new;
TmpEtat.SetValue (( SQL EXECUTE PROCEDURE AID_CUMUL_ELTVAL ON SESSION
FonctionDBService ));
Etat = TmpEtat.Value;
END TRANSACTION;
Our procedure has no parameter and when we put a dummy parameter to the
procedure and pass it in the TOOL SQL statement, it works fine althoug the
Forté help says the parameter list is optionnal !
We tried to execute the procedure in a "SQL Select OurProdecure Into ..."
statement, but it does'nt work because there is a SQL update in the
procedure and it is forbidden by Oracle.
Has anyone seen this error before ?
Any ideas would be greatly appreciated.
Many thanks and regards,
Manuel DEVEAUX
Previade, France
e-mail : deveauxpreviade.frHi,
We have a problem with a Oracle procedure call using the Sql Execute
Procedure statement.
The call gives us this error :
SYSTEM ERROR: (This error was converted)
(This error was converted)
OpenCursor failed for SQL statement in project LFB010, class
ClsDemarreLFB010,
method Demarre, methodId 4, line 32, error from database is:
ORA-01036: illegal variable name/num
Class: qqdb_ResourceException
Distributed method called: qqdb_SessionProxy.OpenCursor!22 (object
name
instance/d4745a10-c8e4-11d1-97fd-90cad1e7aa77:0x196:0x4/lfb010_cl0/lfb010_cl
0-fonctiondbservice0x196:0x2)
from partition "LFB010_CL0_Client", (partitionId =
D4745A10-C8E4-11D1-97FD-90CAD1E7AA77:0x196:0x4, taskId =
[D4745A10-C8E4-11D1-97FD-90CAD1E7AA77:0x196.3]) in application
"FTLaunch_cl0", pid 4290975297 on node LAXOU146 in environment
CentralEnv
Oracle error: 1036, Server: sipre_tcp, UserName: forte
Database Statement: begin
:qqReturnValue := AID_CUMUL_ELTVAL;
end;
Class: qqdb_ResourceException ..........
And this is the TOOL code :
BEGIN TRANSACTION
TmpEtat : IntegerData = new;
TmpEtat.SetValue (( SQL EXECUTE PROCEDURE AID_CUMUL_ELTVAL ON SESSION
FonctionDBService ));
Etat = TmpEtat.Value;
END TRANSACTION;
Our procedure has no parameter and when we put a dummy parameter to the
procedure and pass it in the TOOL SQL statement, it works fine althoug the
Forté help says the parameter list is optionnal !
We tried to execute the procedure in a "SQL Select OurProdecure Into ..."
statement, but it does'nt work because there is a SQL update in the
procedure and it is forbidden by Oracle.
Has anyone seen this error before ?
Any ideas would be greatly appreciated.
Many thanks and regards,
Manuel DEVEAUX
Previade, France
e-mail : deveauxpreviade.fr -
Problems with increasing/decreasing cache size when live
Hello,
I have configured multiple environments which I'm compacting sequentially and to achieve this I allocate a bigger cache to the env currently being compacted as follows:
Initialization:
DB_ENV->set_cachesize(gbytes, bytes, 1); // Initial cache size.
DB_ENV->set_cache_max(gbytes, bytes); // Maximum size.
While live, application decreases cache of current env when finished and then increases cache of next env using:
DB_ENV->set_cachesize(gbytes, obytes, 0); // Decrease cache size of current env to initial size
DB_ENV->set_cachesize(gbytes, obytes, 0); // Increase cache size of next env to max size.
When I print statistics about the memory pool using DB_ENV->memp_stat I can see that everyting is going normally:
memp_stat: env1 ncache= 8 cache_size=20973592 // env1 is current env
memp_stat: env2 ncache= 1 cache_size=20973592
and then after changing current env:
memp_stat: env1 ncache= 1 cache_size=20973592
memp_stat: env2 ncache= 8 cache_size=20973592 // env2 is now current env
But the problem is that over time memory is leaked (as if the extra memory of each env was not freed) and I'm totally sure that the problem comes from this code.
I'm running Berkeley DB 4.7.25 on FreeBSD.
Maybe some leak was fixed in newer versions and you could suggest to me a patch? or I don't use the API correctly?
Thanks!
Edited by: 894962 on Jan 23, 2012 6:40 AMHi,
Thanks for providing the information.
Unfortunately, I don't remember exact test case I was doing, so I did a new one with 32 env.
I set the following for each env:
- Initial cache=512MB/32
- Max=1GB
Before open, I do:
DBEnvironment->set_cachesize((u_int32_t)0, (u_int32_t)512*1024*1024/32, 1);
DBEnvironment->set_cache_max(1*1024*1024*1024, 0);
DBEnvironment->get_cache_max(&gbytes, &obytes); // gives gbytes=1 and obytes=0
After open, I have the following:
DBEnvironment->get_cache_max(&gbytes, &obytes); // gives gbytes=0 and obytes=9502720
memp_stat: cache_size=18644992 cache_ncache=1
So here, the values returned by memp_stat are normal but get_cache_max is strange. Then after increasing the cache to the strange value returned by get_cache_max (gbytes=0, obytes=9502720), I have the following:
DBEnvironment->get_cache_max(&gbytes, &obytes); // gives gbytes=0 and obytes=9502720
memp_stat: outlinks cache_size=27328512 cache_ncache=54
with cache_size being: ((ui64)sp->st_gbytes * GIGA + sp->st_bytes);.
So cache is actually increased...
I try to reproduce this case by opening 1 env as follows.
//Before open
DbEnv->set_cachesize(); 512MB, 1 cache
DbEnv->set_cache_max; 1GB
//After open
DbEnv->get_cachesize; 512MB, 1cache
DbEnv->get_caceh_max; 1GB
memp_stat: cache:512MB, ncache:1, cache_max:1GB
//Decrease the cache size
DbEnv->set_cachesize(); 9MB(9502720B), 1 cache
DbEnv->get_cachesize; 512MB, 1cache
DbEnv->get_caceh_max; 1GB
memp_stat: cache:512MB, ncache:1, cache_max:1GB
All the result is expected. Since when resizing the cache after DbEnv is open, it is rounded to the nearest multiple of the region size. Region size means the size of each region specified initially. Please refer to BDB doc: [http://docs.oracle.com/cd/E17076_02/html/api_reference/C/envset_cachesize.html|http://docs.oracle.com/cd/E17076_02/html/api_reference/C/envset_cachesize.html]. Here region size is 512MB/1cache = 512MB. And I don't think you can resize the cache smaller than 1 region.
Since you are opening 32 env at the same time with 512MB cache and 1GB maximum for each, when the env is open, whether it can allocate as much as that specified for the cache, is dependent on the system. I am guess the number 9502720 got from get_cache_max after opening the env is probably based on the system and app request, the cache size you can get when opening the env.
And for the case listed in the beginning of the post
While live, application decreases cache of current env when finished and then increases cache of next env using:
DB_ENV->set_cachesize(gbytes, obytes, 0); // Decrease cache size of current env to initial size
DB_ENV->set_cachesize(gbytes, obytes, 0); // Increase cache size of next env to max size.
When I print statistics about the memory pool using DB_ENV->memp_stat I can see that everyting is going normally:
memp_stat: env1 ncache= 8 cache_size=20973592 // env1 is current env
memp_stat: env2 ncache= 1 cache_size=20973592
and then after changing current env:
memp_stat: env1 ncache= 1 cache_size=20973592
memp_stat: env2 ncache= 8 cache_size=20973592 // env2 is now current envWhen env1 is finishing soon, what numbers do you set in set_cachesize to decrease the cache, including the number of caches and cache size?
When decreasing the cache, I do:
env->GetDbEnv()->set_cachesize((u_int32_t)0, (u_int32_t)20973592, 0);
I mean, in all cases I simply set cachesize to its original value (obtained after open through get_cachesize) when decreasing and set cachesize to its max value when increasing (obtained though get_cache_max; plus I do something like cacheMaxSize * 0.75 if < 500MB).I can reproduce this case. And I think the result is expected. When using DBEnv->set_cachesize() to resize the cache after env is opened, the ncache para is ignored. Please refer to BDB doc here: [http://docs.oracle.com/cd/E17076_02/html/api_reference/C/envset_cachesize.html|http://docs.oracle.com/cd/E17076_02/html/api_reference/C/envset_cachesize.html] . Hence I don't think you can decrease the cache size by setting the number of cache to 0.
Hope it helps. -
Problems with invalidating web cache
Currently we display the current date (portal smart link) in the top region of each portal page. We have been having problems with the date not refreshing, rather old pages continue to be served up. I set up a database job using wvuxtil to send an XML document to invalidate all documents in the web cache under root at midnight. (The caching of every portal page is set to "content and definiton at system level" for 1440 min). This morning, the job ran but when checking the pages from a client machine, the date still displayed as yesterday's for SOME of the pages (not all)- clearing the clients IE cache made no difference. Logging on to the server, I accessed the relevant pages displaying yesterday's date on the client - and they showed the correct date on the server. Going back to the client machine, the dates are now correct ? Help anyone ? What should I be checking/looking at next ?
Cheers
Brent HarlowHi Brent,
Which version of Web Cache and Portal are you using? A similar problem with dates and invalidation has been reported before, so you may want to check with Oracle Support for the appropriate patch. -
Post Author: Ranjith.403
CA Forum: General
Hi,
Am new to crystal reports with stored procedures
am created a report using a stored procedure in oracle. In that Stored Procedure am Using a temporary table.
After inserting values into the table am assigning to ref cursor.
Refcursor having fields like item,onhandstock,purchase rate
This report working fine in oracle version 9.2.0.1.0 where comes to oracle version 9.2.0.8.0 it's giving the varchar values correctly.
The Number values are showing as 0.
Help me to solve it.
Thanks in Advance,
RanjithTry modularising this large procedure into smaller procedures and functions, and determine which part is causing you trouble.
-
SB Live with XP Pro (SP2) causes problems with no sou
Ok, my computer rs relativley "old". It's a gateway from about... 2000, with a Pentium IV, .3 Ghrz, NVIDIA GeForce2 MX/MX 400 video card, and I'm not sure exactly what sound card it is, I think it's SB Li've! 24-bit... or whatever came standard with these gateways from back then. Now, for some reason, after I reformatted my comp and put XP pro with SP2 on there, SB Li've doesn't work. It worked fine on XP pro without SP2 (except for the devldr32.exe thing, but I fixed that). I put the CD in, say to install it fully, then a message comes up saying that there is no CD... after auto-playing off of it! So I hit continue and the message popped right back up, so I hit cancel and it continued with the installation. I chose to restart the comp now, and I heard the sound of windows logging off, so I assumed it was working. But then when it came back on, my taskbar wouldn't some up all of the way and there was no sound. I right-clicked on the taskbar and chose to view quick launch and it popped up, but I couldn't adjust the length of the quicklaunch section, even when i unlocked it, the right border thing wasn't there. It is very irritating and I couldn't find any drivers that would help this. Anyone know what's wrong? I would e-mail for support, but I highly doubt the warranty is still good. I would be EXTREMELY thankful for anyone who could even lead me in the right direction. Thank you.
And, you can be certain it's not a Li've! 24-bit. They didn't make them back then! It's either a Li've! 5. (probable) or a Li've! 4. (unlikely if the computer was really manufactured in 2000).
You can try removing anything that was possibly added by your using the cd, then letting XP install its nati've driver for it. I would download DriverCleaner from driverheaven.net. If there's nothing in Add/Remove Programs (as there probably isn't if your attempt to install the cd version of the driver (provided by Gateway?) failed before finishing), then go into device manager and remove anything related to the card and reboot to Safe Mode and run DriverCleaner. Delete the Creative Folder in Program Files that your cd probably made. Reboot and let XP install its driver. Reboot again.
That's probably the best your going to get if Gateway didn't update the Creative software for SP2. You could attempt to install the Li've Uni-Pack stuff from the download section here, but it might or might not work on the OEM card you have. If the software on your Gateway/Creative cd had problems then your probably going to just be able to use the nati've Windows XP driver. You will still be able to adjust your settings with the Windows audio controls, but won't be able to use Creative software.
You would need to contact Gateway to see if they really don't have a package for this. Did you check their website for updates for your model? -
Exchange 2010 SP2: Different problems with E_ACCESSDENIED on exchange servers
Hello All,
I'm observing a strange problem in an AD 2008 R2 / Exchange 2010 SP2 environment:
When creating a DAG and adding 1 or more servers to the DAG, the following error occurs:
Summary: 2 item(s). 0 succeeded, 2 failed.
Elapsed time: 00:00:05
<MAILBOX SERVER 1> Failed
Error:
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
Exchange Management Shell command attempted:
Add-DatabaseAvailabilityGroupServer -MailboxServer '<MAILBOX SERVER 1>' -Identity '<NAME DAG>'
Elapsed Time: 00:00:02
<MAILBOX SERVER 2> Failed
Error:
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
Exchange Management Shell command attempted:
Add-DatabaseAvailabilityGroupServer -MailboxServer '<MAILBOX SERVER 2>' -Identity '<NAME DAG>'
Elapsed Time: 00:00:02
There are no logs created on the Mailservers, so I have no more detailed information. Where to start with troubleshooting this issue?
Edit: BTW I already checked the local admin membership of the "Exchange Trusted Subsystem" domain group.
Also commands like get-owavirtualdirectory give the Access Denied error (except on the CAS servers themselves).
You know you're an engineer when you have no life and can prove it mathematicallyHi Frank,
The DAG is not yet populated. When inserting the first server(s) in the freshly created DAG, the error appeared.
[PS] C:\Program Files\Microsoft\Exchange Server\V14\Scripts>Get-DatabaseAvailabilityGroup
Name Member Servers
Operational Servers
IICT-DAG-002 {}
[PS] C:\Program Files\Microsoft\Exchange Server\V14\Scripts>Get-DatabaseAvailabilityGroup IICT-DAG-002 -Status | fl
RunspaceId : cc985264-fa89-48f8-8aba-c1b0c89eb097
Name : IICT-DAG-002
Servers : {}
WitnessServer : iict-srvp00-011.insourceict.local
WitnessDirectory : C:\IICT-DAG-002
AlternateWitnessServer :
AlternateWitnessDirectory :
NetworkCompression : InterSubnetOnly
NetworkEncryption : InterSubnetOnly
DatacenterActivationMode : Off
StoppedMailboxServers : {}
StartedMailboxServers : {}
DatabaseAvailabilityGroupIpv4Addresses : {10.100.0.54}
DatabaseAvailabilityGroupIpAddresses : {10.100.0.54}
AllowCrossSiteRpcClientAccess : False
OperationalServers :
PrimaryActiveManager :
ServersInMaintenance :
ThirdPartyReplication : Disabled
ReplicationPort : 0
NetworkNames : {}
WitnessShareInUse :
AdminDisplayName :
ExchangeVersion : 0.10 (14.0.100.0)
DistinguishedName : CN=IICT-DAG-002,CN=Database Availability Groups,CN=Exchange Administrative Gro
up (FYDIBOHF23SPDLT),CN=Administrative
Groups,CN=InsourceICT,CN=Microsoft Exch
ange,CN=Services,CN=Configuration,DC=insourceict,DC=local
Identity : IICT-DAG-002
Guid : 71d5d869-03ac-4f8a-8de7-fc15bc6a0ae1
ObjectCategory : insourceict.local/Configuration/Schema/ms-Exch-MDB-Availability-Group
ObjectClass : {top, msExchMDBAvailabilityGroup}
WhenChanged : 8-6-2012 14:35:59
WhenCreated : 8-6-2012 13:35:21
WhenChangedUTC : 8-6-2012 12:35:59
WhenCreatedUTC : 8-6-2012 11:35:21
OrganizationId :
OriginatingServer : IICT-SRV003.insourceict.local
IsValid : True
You know you're an engineer when you have no life and can prove it mathematically -
Hi,
I am having the following problem. Any help is greatly appreciated.
I have a servlet which in its doPost method says..
response.setHeader ("Pragma", "no-cache");
The browser gets this page. Then the user goes from this page to another
page.
When the user then uses the "Back" button of the browser, the browser
does not show a "Warning: This page has expired". Instead it displays the
original page
that the servlet had sent.
My servlet works fine with WebSphere but not with WebLogic 4.5.1 and 5.1
Anybody encounter this problem before?
Am I doing something wrong? Do I need to do something extra for Weblogic so
that
the page does not get cached?
Thanks,
Ullas.
([email protected])
You try to delete the cache and retry once again. If this not solves your probelm then follow this url:
Inconsistant Cache (SXI_CACHE)
Cache Refresh
---Mohan -
Problem with Photoshop CS5. Memory and Harddisk spaces
Just got CS5 Master Suite. Whenever I open photoshop it takes a ton of memory 1 gig +. When I open files it takes up more and more until it takes up all my memory and hard disk space. I open a simple multi layered file that is 25 megs in size to work on it. Before I know it photoshop is taking 20gigs+ of my hard disk space along with 3+ gigs of system memory. Is there a memory problem in photoshop cs5?
Thanks!
JosephSo I just opened the 25 meg file in photoshop cs5 and watched my free space on my hard drive go down 8 gigs the instant I opened it. It went from 27 gigs of freespace to 19 instantly.
I am running a Macbook Pro with OSX 10.6., 4 gigs of ram on board.
anyone else having simular problems?
Maybe you are looking for
-
Golden Gate, DBFS and SUN ODM
Gents, DBFS - way of storing files as LOBS - cool feature, no bullet proof POCs yet. POC that I worked on got .78TB/hour to load data using external table, Oracle advertised 5TB/hour. There has been recommendation flowing around on using DBFS for sto
-
Thumbnails showing up as white boxes / squares.
I recently loaded up iPhoto and went through the library and deleted a whole bunch of photos - mostly poorly taken shots or things that I no longer want around. When I went back into iPhoto, all of those photos I delelted are now showing as white box
-
Mixing emails and message as in Japan
Hi, im currently in Japan for holidays at my friends and he noticed me his emails appeared directly in the message app on the iphone. is there anyway to do this in another country? thanks
-
How do I delete unwanted e-mail addresses
Did a search but couldn't find any answer. I know how to delete addresses (cards, individuals) from the address book, but how do I delete unwanted addresses from the mail-program memory, or maybe it's the address-book memory? Whatever it is, it store
-
Is there any way to log in to active directory from a mac without joining the AD domain?
I am looking for a way to log in to active directory without having the Mac join the AD domain. Basically i have not been able to understand all the ramifications of joining the AD domain. From what I have read in various documentations on the apple