Added null check on AbstractSSLAwareChannelPipelineFactory part of
james-protocols project, seems that enabledCipherSuites could be null
this.enabledCipherSuites = new
String[enabledCipherSuites.length];
for (int i = 0; i < enabledCipherSuites.length; i++) {
this.enabledCipherSuites[i] = new
String(enabledCipherSuites[i]);
}
On Mon, Mar 7, 2011 at 1:30 PM, Larry Ruiz <[email protected]> wrote:
> I built james from the source code and tried to run it, I got the following
> exception
>
> jvm 1 | org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'smtpserver': Invocation of init method failed;
> nested exception is java.lang.NullPointerException
> jvm 1 | at
> org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133)
> jvm 1 | at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394)
> jvm 1 | at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1413)
> jvm 1 | at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
> jvm 1 | at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
> jvm 1 | at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
> jvm 1 | at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
> jvm 1 | at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
> jvm 1 | at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
> jvm 1 | at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
> jvm 1 | at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
> jvm 1 | at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
> jvm 1 | at
> org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
> jvm 1 | at
> org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
> jvm 1 | at
> org.apache.james.container.spring.context.JamesServerApplicationContext.<init>(JamesServerApplicationContext.java:39)
> jvm 1 | at org.apache.james.container.spring.Main.main(Main.java:39)
> jvm 1 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> jvm 1 | at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> jvm 1 | at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> jvm 1 | at java.lang.reflect.Method.invoke(Method.java:597)
> jvm 1 | at
> org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)
> jvm 1 | at java.lang.Thread.run(Thread.java:662)
> jvm 1 | Caused by: java.lang.NullPointerException
> jvm 1 | at
> org.apache.james.protocols.impl.AbstractSSLAwareChannelPipelineFactory.<init>(AbstractSSLAwareChannelPipelineFactory.java:49)
> jvm 1 | at
> org.apache.james.smtpserver.netty.SMTPServer$SMTPChannelPipelineFactory.<init>(SMTPServer.java:290)
> jvm 1 | at
> org.apache.james.smtpserver.netty.SMTPServer.createPipelineFactory(SMTPServer.java:282)
> jvm 1 | at
> org.apache.james.protocols.impl.AbstractAsyncServer.bind(AbstractAsyncServer.java:107)
> jvm 1 | at
> org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer.init(AbstractConfigurableAsyncServer.java:259)
> jvm 1 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> jvm 1 | at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> jvm 1 | at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> jvm 1 | at java.lang.reflect.Method.invoke(Method.java:597)
> jvm 1 | at
> org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:340)
> jvm 1 | at
> org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:293)
> jvm 1 | at
> org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:130)
> jvm 1 | ... 21 more
>
>
Index: impl/src/main/java/org/apache/james/protocols/impl/AbstractSSLAwareChannelPipelineFactory.java
===================================================================
--- impl/src/main/java/org/apache/james/protocols/impl/AbstractSSLAwareChannelPipelineFactory.java (revision 1078731)
+++ impl/src/main/java/org/apache/james/protocols/impl/AbstractSSLAwareChannelPipelineFactory.java (revision )
@@ -18,13 +18,13 @@
****************************************************************/
package org.apache.james.protocols.impl;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLEngine;
-
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.group.ChannelGroup;
import org.jboss.netty.handler.ssl.SslHandler;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLEngine;
+
/**
* Abstract base class for {@link ChannelPipeline} implementations which use TLS
*
@@ -46,11 +46,13 @@
// We need to copy the String array becuase of possible security issues.
// See https://issues.apache.org/jira/browse/PROTOCOLS-18
+ if (enabledCipherSuites != null) {
- this.enabledCipherSuites = new String[enabledCipherSuites.length];
- for (int i = 0; i < enabledCipherSuites.length; i++) {
- this.enabledCipherSuites[i] = new String(enabledCipherSuites[i]);
- }
- }
+ this.enabledCipherSuites = new String[enabledCipherSuites.length];
+ for (int i = 0; i < enabledCipherSuites.length; i++) {
+ this.enabledCipherSuites[i] = new String(enabledCipherSuites[i]);
+ }
+ }
+ }
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]