[jboss-jira] [JBoss JIRA] Closed: (JBMESSAGING-1075) MaxSize attribute being set causes a NullPointerException
Tim Fox (JIRA)
jira-events at lists.jboss.org
Fri Sep 26 04:52:21 EDT 2008
[ https://jira.jboss.org/jira/browse/JBMESSAGING-1075?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tim Fox closed JBMESSAGING-1075.
--------------------------------
> MaxSize attribute being set causes a NullPointerException
> ---------------------------------------------------------
>
> Key: JBMESSAGING-1075
> URL: https://jira.jboss.org/jira/browse/JBMESSAGING-1075
> Project: JBoss Messaging
> Issue Type: Bug
> Components: Messaging Core
> Affects Versions: 1.4.0.CR2
> Reporter: Jay Howell
> Assignee: Jay Howell
> Fix For: 1.4.0 CR3
>
>
> When the MaxSize is set, a NullPointerException is thrown. In the container, Max size is set in the ManagedDestination before the server peer is set in the managed destination. The server peer is set in the destination when start() is called in DestinationServiceSupport.
> Code in the Managed Destination...
> public void setMaxSize(int maxSize) throws Exception
> {
> Condition cond = new JMSCondition(isQueue(), name);
> PostOffice postOffice = serverPeer.getPostOfficeInstance();
> Collection subs = postOffice.getQueuesForCondition(cond, true);
> Iterator iter = subs.iterator();
> while (iter.hasNext())
> {
> Queue queue = (Queue)iter.next();
> queue.setMaxSize(maxSize);
> }
> this.maxSize = maxSize;
> }
> Code in the DestinationServiceSupport...
> public synchronized void startService() throws Exception
> {
> super.startService();
> try
> {
> serverPeer = (ServerPeer)server.getAttribute(serverPeerObjectName, "Instance");
> destination.setServerPeer(serverPeer);
> We shouldn't be putting logic like this in our getters and setters. In a pojo Object factory pattern, where we don't have total control over the creation and setting of properties, we should stay away from putting these in our setters. For instance, this function requires that start be called to set the peer before setting the property. We should move the MaxSize property back to a regular property and move this logic into another function called by the start() of the Destination.
> In order to reproduce, you only need to put a MaxSize argument in the destination.
> ex.
> <mbean code="org.jboss.jms.server.destination.TopicService"
> name="jboss.messaging.destination:service=Topic,name=testTopic"
> xmbean-dd="xmdesc/Topic-xmbean.xml">
> <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
> <depends>jboss.messaging:service=PostOffice</depends>
> <attribute name="SecurityConfig">
> <security>
> <role name="guest" read="true" write="true"/>
> <role name="publisher" read="true" write="true" create="false"/>
> <role name="durpublisher" read="true" write="true" create="true"/>
> </security>
> </attribute>
> <attribute name="MaxSize">100000</attribute>
> </mbean>
> You then get the exception...
> 13:09:00,190 INFO [ServiceConfigurator] Problem configuring service jboss.messaging.destination:service=Topic,name=testTopic
> org.jboss.deployment.DeploymentException: Exception setting attribute javax.management.Attribute at 2110fc on mbean jboss.messaging.destination:service=Topic,name=testTopic; - nested throwable: (java.lang.NullPointerException)
> at org.jboss.system.ServiceConfigurator.setAttribute(ServiceConfigurator.java:698)
> at org.jboss.system.ServiceConfigurator.configure(ServiceConfigurator.java:332)
> at org.jboss.system.ServiceConfigurator.internalInstall(ServiceConfigurator.java:460)
> at org.jboss.system.ServiceConfigurator.install(ServiceConfigurator.java:171)
> at org.jboss.system.ServiceController.install(ServiceController.java:226)
> 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:585)
> at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> at $Proxy4.install(Unknown Source)
> at org.jboss.deployment.SARDeployer.create(SARDeployer.java:249)
> at org.jboss.deployment.MainDeployer.create(MainDeployer.java:969)
> at org.jboss.deployment.MainDeployer.create(MainDeployer.java:959)
> at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:818)
> at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
> 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:585)
> at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
> at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
> at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> at $Proxy9.deploy(Unknown Source)
> at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
> at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)
> at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
> at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:336)
> at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
> at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
> at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
> at $Proxy0.start(Unknown Source)
> at org.jboss.system.ServiceController.start(ServiceController.java:417)
> at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> at $Proxy4.start(Unknown Source)
> at org.jboss.deployment.SARDeployer.start(SARDeployer.java:302)
> at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)
> at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)
> at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
> at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:766)
> 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:585)
> at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
> at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
> at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
> at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
> at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
> at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
> at $Proxy5.deploy(Unknown Source)
> at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:482)
> at org.jboss.system.server.ServerImpl.start(ServerImpl.java:362)
> at org.jboss.Main.boot(Main.java:200)
> at org.jboss.Main$1.run(Main.java:508)
> at java.lang.Thread.run(Thread.java:595)
> Caused by: java.lang.NullPointerException
> at org.jboss.jms.server.destination.ManagedDestination.setMaxSize(ManagedDestination.java:280)
> at org.jboss.jms.server.destination.DestinationServiceSupport.setMaxSize(DestinationServiceSupport.java:250)
> 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:585)
> at org.jboss.mx.interceptor.AttributeDispatcher.invoke(AttributeDispatcher.java:136)
> at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
> at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
> at org.jboss.mx.interceptor.ModelMBeanAttributeInterceptor.invoke(ModelMBeanAttributeInterceptor.java:103)
> at org.jboss.mx.interceptor.PersistenceInterceptor.invoke(PersistenceInterceptor.java:76)
> at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
> at org.jboss.mx.server.AbstractMBeanInvoker.setAttribute(AbstractMBeanInvoker.java:461)
> at org.jboss.mx.server.MBeanServerImpl.setAttribute(MBeanServerImpl.java:608)
> at org.jboss.system.ServiceConfigurator.setAttribute(ServiceConfigurator.java:694)
> ... 85 more
--
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
More information about the jboss-jira
mailing list