[JBoss JIRA] Created: (EJBTHREE-2166) no-interface view implementation based on MC constructs is brittle
by jaikiran pai (JIRA)
no-interface view implementation based on MC constructs is brittle
------------------------------------------------------------------
Key: EJBTHREE-2166
URL: https://jira.jboss.org/browse/EJBTHREE-2166
Project: EJB 3.0
Issue Type: Bug
Components: nointerface
Affects Versions: depchain-1.0.0-alpha-4
Reporter: jaikiran pai
Assignee: jaikiran pai
Currently the no-interface view proxy that gets bound into JNDI, internally uses a KernelControllerContext (MC construct) corresponding to the endpoint container of the EJB. The proxy depends just on DESCRIBED state of the endpoint. The invocation handler of that proxy, on first invocation, pushes the context to INSTALLED state (if not already in INSTALLED stated) and then invokes on the endpoint.
This approach won't work out because MC returns an UnModifiable kernel controller context which throws an exception when we try to change the state of that context. More on this in the "Important" note at the end of this MC chapter http://docs.jboss.org/jbossmc/docs/2.0.x/userGuide/ch11s04.html:
<quote>
All context information is wrapped into unmodifiable objects to prevent the user from changing anything outside of the microcontainer's control.
</quote>
It's just plain luck that no-interface view works currently, because the first invocation on the nointerface view happens after the context has already been set to INSTALLED state by MC.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 2 months
[JBoss JIRA] (JBAS-9468) JVM out of memory and memory leak error
by karthikeyan G (JIRA)
karthikeyan G created JBAS-9468:
-----------------------------------
Summary: JVM out of memory and memory leak error
Key: JBAS-9468
URL: https://issues.jboss.org/browse/JBAS-9468
Project: Application Server 3 4 5 and 6
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Clustering
Affects Versions: JBossAS-4.2.2.GA
Environment: Windows 2003 SP2 , 10 GB RAM, Java 1.5.0_22.
Reporter: karthikeyan G
Assignee: Paul Ferraro
Priority: Critical
Fix For: JBossAS-4.2.2.GA
We are getting JVM out of memory and memory leak errors frequently.
We have made adjustments on JAVA_OPTIONS and now the setting is
set JAVA_OPTIONS=%JAVA_OPTIONS% -Xms512m -Xmx1200m -XX:NewRatio=3 -XX:PermSize=256m -XX:MaxPermSize=256m -XX:SurvivorRatio=4.
Still we are getting memory error, if the load increases (Concurrancy more than 700) . Please suggest with the solution for this.
Thanks
Rengaraj.V
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 2 months
[JBoss JIRA] (JBAS-9469) Service temporary unavailable
by karthikeyan G (JIRA)
karthikeyan G created JBAS-9469:
-----------------------------------
Summary: Service temporary unavailable
Key: JBAS-9469
URL: https://issues.jboss.org/browse/JBAS-9469
Project: Application Server 3 4 5 and 6
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Clustering, Deployers, JMX
Affects Versions: JBossAS-4.2.2.GA
Environment:
Windows 2003 SP2 , 10 GB RAM, Java 1.5.0_22.
Reporter: karthikeyan G
Assignee: Paul Ferraro
Priority: Critical
Fix For: JBossAS-4.2.2.GA
Attachments: service unavialble.png
We are geeting "Service temporary unavailable" mesggage very often if the concurancy increases more than 500 users in our application. We are using Jboss 4.2.2 and SQL server 2005 as DB. As per our observastion this error is because of high load. Our application concurrancy will exceed more than 1000. Please help us to fix this issue. I have attached teh errror screen.
Thanks
Rengaraj.V
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 2 months
[JBoss JIRA] Created: (JBSER-117) Problem with JBoss serializing of dynamic proxies
by Maksym Ivanchenko (JIRA)
Problem with JBoss serializing of dynamic proxies
-------------------------------------------------
Key: JBSER-117
URL: https://jira.jboss.org/jira/browse/JBSER-117
Project: JBoss Serialization
Issue Type: Bug
Affects Versions: 1.0.3 GA
Reporter: Maksym Ivanchenko
Assignee: Clebert Suconic
When we try to serialize a proxy that contains some child entity which points to proxy itself the following exception occurs:
org.jboss.serial.exception.SerializationException: Object reference 1 was not found
Simple test case for problem reproducing:
import java.io.Serializable;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import org.jboss.serial.io.JBossObjectOutputStream;
import org.junit.Test;
public class StandaloneProxySerializationTest {
@Test
public void testSerialization() throws Exception {
ISampleEntity entity = new SampleEntityImpl();
Class<?>[] interfaces = new Class<?>[] {ISampleEntity.class};
SampleEntityInvocationHandler handler = new SampleEntityInvocationHandler(entity);
ISampleEntity proxy = (ISampleEntity) Proxy.newProxyInstance(Thread.currentThread()
.getContextClassLoader(), interfaces, handler);
ISampleEntity childEntity = new SampleEntityImpl();
proxy.setChild(childEntity);
childEntity.setParent(proxy);
JBossObjectOutputStream jbossSerializer = new JBossObjectOutputStream(null);
jbossSerializer.smartClone(proxy);
}
private static interface ISampleEntity {
public ISampleEntity getParent();
public void setParent(ISampleEntity parent);
public ISampleEntity getChild();
public void setChild(ISampleEntity child);
}
private static class SampleEntityImpl implements ISampleEntity, Serializable {
private static final long serialVersionUID = 1L;
private ISampleEntity parent;
private ISampleEntity child;
@Override
public ISampleEntity getParent() {
return parent;
}
@Override
public void setParent(ISampleEntity parent) {
this.parent = parent;
}
@Override
public ISampleEntity getChild() {
return child;
}
@Override
public void setChild(ISampleEntity child) {
this.child = child;
}
}
private static class SampleEntityInvocationHandler implements InvocationHandler, Serializable {
private static final long serialVersionUID = 1L;
private ISampleEntity entity;
public SampleEntityInvocationHandler(ISampleEntity entity) {
this.entity = entity;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return method.invoke(entity, args);
}
}
}
Upon ivestigating this issue we found that the problem is in ProxyPersister.readData() method. It reads the handler, the proxy class, constructs a proxy and only then puts it to cache. But if a proxy data contains proxy itself then it tries to find it by reference (which is not in cache yet, because the handler is still being read). So it throws "Object reference not found" exception.
We worked around this problem by introducing an InvocationHandler wrapper in ProxyPersister:
Patched ProxyPersister.java:
/*
* JBoss, Home of Professional Open Source
* Copyright 2005, JBoss Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.serial.persister;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import org.jboss.serial.classmetamodel.ClassMetaData;
import org.jboss.serial.classmetamodel.StreamingClass;
import org.jboss.serial.exception.SerializationException;
import org.jboss.serial.objectmetamodel.ObjectSubstitutionInterface;
import org.jboss.serial.objectmetamodel.ObjectsCache;
/**
* $Id: ProxyPersister.java,v 1.11 2006/04/24 23:49:40 csuconic Exp $
*
* @author <a href="mailto:clebert.suconic@jboss.com">Clebert Suconic</a>
*/
public class ProxyPersister implements Persister {
private byte id;
public byte getId() {
return id;
}
public void setId(byte id) {
this.id = id;
}
public void writeData(ClassMetaData metaData, ObjectOutput output, Object obj, ObjectSubstitutionInterface substitution) throws IOException{
Object handler = Proxy.getInvocationHandler(obj);
output.writeObject(obj.getClass());
output.writeObject(handler);
}
static class InvocationHandlerWrapper implements InvocationHandler {
private InvocationHandler wrappedHandler;
public void setWrappedHandler(InvocationHandler wrappedHandler) {
this.wrappedHandler = wrappedHandler;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return wrappedHandler.invoke(proxy, method, args);
}
}
public Object readData (ClassLoader loader, StreamingClass streaming, ClassMetaData metaData, int referenceId, ObjectsCache cache, ObjectInput input, ObjectSubstitutionInterface substitution) throws IOException{
try
{
Class proxy = (Class)input.readObject();
Constructor constructor = proxy.getConstructor(new Class[] { InvocationHandler.class });
InvocationHandlerWrapper wrapper = new InvocationHandlerWrapper();
Object obj = constructor.newInstance(new Object[]{wrapper});
cache.putObjectInCacheRead(referenceId,obj);
Object handler = input.readObject();
wrapper.setWrappedHandler((InvocationHandler) handler);
return obj;
}
catch (ClassNotFoundException e)
{
throw new SerializationException(e);
}
catch (NoSuchMethodException e)
{
throw new SerializationException(e);
}
catch (IllegalAccessException e)
{
throw new SerializationException(e);
}
catch (InstantiationException e)
{
throw new SerializationException(e);
}
catch (InvocationTargetException e)
{
throw new SerializationException(e);
}
}
public boolean canPersist(Object obj)
{
// not implemented
return false;
}
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 2 months
[JBoss JIRA] (REMJMX-4) Allow for long method calls within the protocol.
by Darran Lofthouse (JIRA)
[ https://issues.jboss.org/browse/REMJMX-4?page=com.atlassian.jira.plugin.s... ]
Darran Lofthouse updated REMJMX-4:
----------------------------------
Fix Version/s: 1.0.1.GA
(was: 1.0.0.CR1)
> Allow for long method calls within the protocol.
> ------------------------------------------------
>
> Key: REMJMX-4
> URL: https://issues.jboss.org/browse/REMJMX-4
> Project: Remoting JMX
> Issue Type: Task
> Components: Connection, RPC
> Reporter: Darran Lofthouse
> Fix For: 1.0.1.GA
>
>
> Methods such as invoke could take a long time to return depending on what the MBean is actually doing.
> This task is to build support for this into the protocol, 2 initial ideas are: -
> 1 - Allow the client to 'ping' the server after a request has timed out and ask the server is this request still running, server side the we can track the correlation IDs of current requests an check it is still in-progress.
> 2 - The server could periodically send a message to the client to say the message is still in progress, the client could cache these and on timing out check if one has been received recently and wait again if one has.
> 3 - Any other suggestions?
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 2 months