Author: norman
Date: Thu Oct 14 16:22:08 2010
New Revision: 1022598
URL: http://svn.apache.org/viewvc?rev=1022598&view=rev
Log:
Make jmx optional in CamelMailProcessorList by move it to extra class
(JAMES-1057)
Added:
james/server/trunk/mailetcontainer-impl/src/main/java/org/apache/james/mailetcontainer/ProcessorManagement.java
Modified:
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailProcessorList.java
james/server/trunk/spring-deployment/src/main/config/james/spring-beans.xml
Modified:
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailProcessorList.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailProcessorList.java?rev=1022598&r1=1022597&r2=1022598&view=diff
==============================================================================
---
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailProcessorList.java
(original)
+++
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailProcessorList.java
Thu Oct 14 16:22:08 2010
@@ -29,9 +29,6 @@ import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import javax.mail.MessagingException;
-import javax.management.MBeanServer;
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
import org.apache.camel.CamelContext;
import org.apache.camel.CamelContextAware;
@@ -94,7 +91,6 @@ public class CamelMailProcessorList impl
private ProducerTemplate producerTemplate;
private CamelContext camelContext;
- private MBeanServer mbeanserver;
@@ -103,16 +99,8 @@ public class CamelMailProcessorList impl
getCamelContext().addRoutes(new SpoolRouteBuilder());
producerTemplate = getCamelContext().createProducerTemplate();
- registerMBeans();
-
}
- @Resource(name = "mbeanserver")
- public void setMbeanServer(MBeanServer mbeanServer) {
- this.mbeanserver = mbeanServer;
- }
-
-
/**
* Destroy all mailets and matchers
*/
@@ -325,209 +313,149 @@ public class CamelMailProcessorList impl
this.camelContext = camelContext;
}
-
- private void registerMBeans() {
-
- String baseObjectName =
"org.apache.james:type=component,name=processor,";
-
- String[] processorNames = getProcessorNames();
- for (int i = 0; i < processorNames.length; i++) {
- String processorName = processorNames[i];
- createProcessorMBean(baseObjectName, processorName, mbeanserver);
- continue;
- }
- }
-
- private void createProcessorMBean(String baseObjectName, String
processorName, MBeanServer mBeanServer) {
- String processorMBeanName = baseObjectName + "processor=" +
processorName;
- registerMBean(mBeanServer, processorMBeanName,
getProcessor(processorName));
-
-
- // add all mailets but the last, because that is a terminator (see
LinearProcessor.closeProcessorLists())
- List<Mailet> mailets = ((MailetContainer)
getProcessor(processorName)).getMailets();
- for (int i = 0; i < mailets.size(); i++) {
- MailetManagement mailet = (MailetManagement) mailets.get(i);
-
- String mailetMBeanName = processorMBeanName +
",subtype=mailet,index=" + (i+1) + ",mailetname=" + mailet.getMailetName();
- registerMBean(mBeanServer, mailetMBeanName, mailet);
- }
-
-
-
- // add all matchers but the last, because that is a terminator (see
LinearProcessor.closeProcessorLists())
- List<Matcher> matchers =
((MailetContainer)getProcessor(processorName)).getMatchers();
- for (int i = 0; i < matchers.size(); i++) {
- MatcherManagement matcher = (MatcherManagement) matchers.get(i);
-
- String matcherMBeanName = processorMBeanName +
",subtype=matcher,index=" + (i+1) + ",matchername=" + matcher.getMatcherName();
+
+ private final class SpoolRouteBuilder extends RouteBuilder {
+ /*
+ * (non-Javadoc)
+ * @see org.apache.camel.builder.RouteBuilder#configure()
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void configure() throws Exception {
+ Processor terminatingMailetProcessor = new MailetProcessor(new
TerminatingMailet(), logger);
+ Processor disposeProcessor = new DisposeProcessor();
+ Processor mailProcessor = new MailCamelProcessor();
+ Processor removePropsProcessor = new RemovePropertiesProcessor();
+
+ List<HierarchicalConfiguration> processorConfs =
config.configurationsAt("processor");
+ for (int i = 0; i < processorConfs.size(); i++) {
+ final HierarchicalConfiguration processorConf =
processorConfs.get(i);
+ String processorName = processorConf.getString("[...@name]");
- registerMBean(mBeanServer, matcherMBeanName, matcher);
- }
-
+
+ mailets.put(processorName, new ArrayList<MailetManagement>());
+ matchers.put(processorName, new
ArrayList<MatcherManagement>());
- }
+ RouteDefinition processorDef =
from(getEndpoint(processorName)).inOnly()
+ // store the logger in properties
+ .setProperty(MatcherSplitter.LOGGER_PROPERTY,
constant(logger));
+
+ final List<HierarchicalConfiguration> mailetConfs =
processorConf.configurationsAt("mailet");
+ // Loop through the mailet configuration, load
+ // all of the matcher and mailets, and add
+ // them to the processor.
+ for (int j = 0; j < mailetConfs.size(); j++) {
+ HierarchicalConfiguration c = mailetConfs.get(j);
+
+ // We need to set this because of correctly parsing comma
+ String mailetClassName = c.getString("[...@class]");
+ String matcherName = c.getString("[...@match]", null);
+ String invertedMatcherName = c.getString("[...@notmatch]",
null);
+
+ Mailet mailet = null;
+ Matcher matcher = null;
+ try {
+
+ if (matcherName != null && invertedMatcherName !=
null) {
+ // if no matcher is configured throw an Exception
+ throw new ConfigurationException("Please configure
only match or nomatch per mailet");
+ } else if (matcherName != null) {
+ matcher = matcherLoader.getMatcher(matcherName);
+ } else if (invertedMatcherName != null) {
+ matcher = new
MatcherInverter(matcherLoader.getMatcher(invertedMatcherName));
+
+ } else {
+ // default matcher is All
+ matcher = matcherLoader.getMatcher("All");
+ }
+
+ // The matcher itself should log that it's been inited.
+ if (logger.isInfoEnabled()) {
+ StringBuffer infoBuffer = new
StringBuffer(64).append("Matcher ").append(matcherName).append("
instantiated.");
+ logger.info(infoBuffer.toString());
+ }
+ } catch (MessagingException ex) {
+ // **** Do better job printing out exception
+ if (logger.isErrorEnabled()) {
+ StringBuffer errorBuffer = new
StringBuffer(256).append("Unable to init matcher
").append(matcherName).append(": ").append(ex.toString());
+ logger.error(errorBuffer.toString(), ex);
+ if (ex.getNextException() != null) {
+ logger.error("Caused by nested exception: ",
ex.getNextException());
+ }
+ }
+ System.err.println("Unable to init matcher " +
matcherName);
+ System.err.println("Check spool manager logs for more
details.");
+ // System.exit(1);
+ throw new ConfigurationException("Unable to init
matcher", ex);
+ }
+ try {
+ mailet = mailetLoader.getMailet(mailetClassName, c);
+ if (logger.isInfoEnabled()) {
+ StringBuffer infoBuffer = new
StringBuffer(64).append("Mailet ").append(mailetClassName).append("
instantiated.");
+ logger.info(infoBuffer.toString());
+ }
+ } catch (MessagingException ex) {
+ // **** Do better job printing out exception
+ if (logger.isErrorEnabled()) {
+ StringBuffer errorBuffer = new
StringBuffer(256).append("Unable to init mailet
").append(mailetClassName).append(": ").append(ex.toString());
+ logger.error(errorBuffer.toString(), ex);
+ if (ex.getNextException() != null) {
+ logger.error("Caused by nested exception: ",
ex.getNextException());
+ }
+ }
+ System.err.println("Unable to init mailet " +
mailetClassName);
+ System.err.println("Check spool manager logs for more
details.");
+ throw new ConfigurationException("Unable to init
mailet", ex);
+ }
+ if (mailet != null && matcher != null) {
+ MailetManagement wrappedMailet = new
MailetManagement(mailet);
+ MatcherManagement wrappedMatcher = new
MatcherManagement(matcher);
+ String onMatchException = null;
+ MailetConfig mailetConfig =
wrappedMailet.getMailetConfig();
+
+ if (mailetConfig instanceof MailetConfigImpl) {
+ onMatchException = ((MailetConfigImpl)
mailetConfig).getInitAttribute("onMatchException");
+ }
+
+ MailetProcessor mailetProccessor = new
MailetProcessor(wrappedMailet, logger);
+ // Store the matcher to use for splitter in properties
+ processorDef
+ .setProperty(MatcherSplitter.MATCHER_PROPERTY,
constant(wrappedMatcher)).setProperty(MatcherSplitter.ON_MATCH_EXCEPTION_PROPERTY,
constant(onMatchException))
+
+ // do splitting of the mail based on the stored
matcher
+
.split().method(MatcherSplitter.class).aggregationStrategy(aggr).parallelProcessing()
+ .choice().when(new
MatcherMatch()).process(mailetProccessor).end()
+
+ .choice().when(new
MailStateEquals(Mail.GHOST)).process(disposeProcessor).stop().otherwise().process(removePropsProcessor).end()
+
+ .choice().when(new
MailStateNotEquals(processorName)).process(mailProcessor).stop().end();
+
+ // store mailet and matcher
+ mailets.get(processorName).add(wrappedMailet);
+ matchers.get(processorName).add(wrappedMatcher);
+ }
+
- private void registerMBean(MBeanServer mBeanServer, String mBeanName,
Object object) {
- ObjectName objectName = null;
- try {
- objectName = new ObjectName(mBeanName);
- } catch (MalformedObjectNameException e) {
- logger.info("Unable to register mbean", e);
-
- return;
- }
- try {
- mBeanServer.registerMBean(object, objectName);
- } catch (javax.management.JMException e) {
- logger.error("Unable to register mbean", e);
+ }
+
+ processorDef
+ // start choice
+ .choice()
+
+ // when the mail state did not change till yet ( the end
of the route) we need to call the TerminatingMailet to
+ // make sure we don't fall into a endless loop
+ .when(new
MailStateEquals(processorName)).process(terminatingMailetProcessor).stop()
+
+
+ // dispose when needed
+ .when(new
MailStateEquals(Mail.GHOST)).process(disposeProcessor).stop()
+
+ // route it to the next processor
+ .otherwise().process(mailProcessor).stop();
+
+ processors.put(processorName, new
ProcessorDetail(processorName,new ChildProcessor(processorName)));
+ }
+
}
}
-
-
- private final class SpoolRouteBuilder extends RouteBuilder {
- /*
- * (non-Javadoc)
- * @see org.apache.camel.builder.RouteBuilder#configure()
- */
- @SuppressWarnings("unchecked")
- @Override
- public void configure() throws Exception {
- Processor terminatingMailetProcessor = new MailetProcessor(new
TerminatingMailet(), logger);
- Processor disposeProcessor = new DisposeProcessor();
- Processor mailProcessor = new MailCamelProcessor();
- Processor removePropsProcessor = new
RemovePropertiesProcessor();
-
- List<HierarchicalConfiguration> processorConfs =
config.configurationsAt("processor");
- for (int i = 0; i < processorConfs.size(); i++) {
- final HierarchicalConfiguration processorConf =
processorConfs.get(i);
- String processorName =
processorConf.getString("[...@name]");
-
-
- mailets.put(processorName, new
ArrayList<MailetManagement>());
- matchers.put(processorName, new
ArrayList<MatcherManagement>());
-
- RouteDefinition processorDef =
from(getEndpoint(processorName)).inOnly()
- // store the logger in properties
- .setProperty(MatcherSplitter.LOGGER_PROPERTY,
constant(logger));
-
-
- final List<HierarchicalConfiguration> mailetConfs =
processorConf.configurationsAt("mailet");
- // Loop through the mailet configuration, load
- // all of the matcher and mailets, and add
- // them to the processor.
- for (int j = 0; j < mailetConfs.size(); j++) {
- HierarchicalConfiguration c = mailetConfs.get(j);
-
- // We need to set this because of correctly parsing
comma
- String mailetClassName = c.getString("[...@class]");
- String matcherName = c.getString("[...@match]", null);
- String invertedMatcherName =
c.getString("[...@notmatch]", null);
-
- Mailet mailet = null;
- Matcher matcher = null;
- try {
-
- if (matcherName != null && invertedMatcherName !=
null) {
- // if no matcher is configured throw an
Exception
- throw new ConfigurationException("Please
configure only match or nomatch per mailet");
- } else if (matcherName != null) {
- matcher = matcherLoader.getMatcher(matcherName);
- } else if (invertedMatcherName != null) {
- matcher = new
MatcherInverter(matcherLoader.getMatcher(invertedMatcherName));
-
- } else {
- // default matcher is All
- matcher = matcherLoader.getMatcher("All");
- }
-
- // The matcher itself should log that it's been
inited.
- if (logger.isInfoEnabled()) {
- StringBuffer infoBuffer = new
StringBuffer(64).append("Matcher ").append(matcherName).append("
instantiated.");
- logger.info(infoBuffer.toString());
- }
- } catch (MessagingException ex) {
- // **** Do better job printing out exception
- if (logger.isErrorEnabled()) {
- StringBuffer errorBuffer = new
StringBuffer(256).append("Unable to init matcher
").append(matcherName).append(": ").append(ex.toString());
- logger.error(errorBuffer.toString(), ex);
- if (ex.getNextException() != null) {
- logger.error("Caused by nested exception:
", ex.getNextException());
- }
- }
- System.err.println("Unable to init matcher " +
matcherName);
- System.err.println("Check spool manager logs for
more details.");
- // System.exit(1);
- throw new ConfigurationException("Unable to init
matcher", ex);
- }
- try {
- mailet = mailetLoader.getMailet(mailetClassName, c);
- if (logger.isInfoEnabled()) {
- StringBuffer infoBuffer = new
StringBuffer(64).append("Mailet ").append(mailetClassName).append("
instantiated.");
- logger.info(infoBuffer.toString());
- }
- } catch (MessagingException ex) {
- // **** Do better job printing out exception
- if (logger.isErrorEnabled()) {
- StringBuffer errorBuffer = new
StringBuffer(256).append("Unable to init mailet
").append(mailetClassName).append(": ").append(ex.toString());
- logger.error(errorBuffer.toString(), ex);
- if (ex.getNextException() != null) {
- logger.error("Caused by nested exception:
", ex.getNextException());
- }
- }
- System.err.println("Unable to init mailet " +
mailetClassName);
- System.err.println("Check spool manager logs for
more details.");
- throw new ConfigurationException("Unable to init
mailet", ex);
- }
- if (mailet != null && matcher != null) {
- MailetManagement wrappedMailet = new
MailetManagement(mailet);
- MatcherManagement wrappedMatcher = new
MatcherManagement(matcher);
- String onMatchException = null;
- MailetConfig mailetConfig =
wrappedMailet.getMailetConfig();
-
- if (mailetConfig instanceof MailetConfigImpl) {
- onMatchException = ((MailetConfigImpl)
mailetConfig).getInitAttribute("onMatchException");
- }
-
- MailetProcessor mailetProccessor = new
MailetProcessor(wrappedMailet, logger);
- // Store the matcher to use for splitter in
properties
- processorDef
-
.setProperty(MatcherSplitter.MATCHER_PROPERTY,
constant(wrappedMatcher)).setProperty(MatcherSplitter.ON_MATCH_EXCEPTION_PROPERTY,
constant(onMatchException))
-
- // do splitting of the mail based on the
stored matcher
-
.split().method(MatcherSplitter.class).aggregationStrategy(aggr).parallelProcessing()
-
- .choice().when(new
MatcherMatch()).process(mailetProccessor).end()
-
- .choice().when(new
MailStateEquals(Mail.GHOST)).process(disposeProcessor).stop().otherwise().process(removePropsProcessor).end()
-
- .choice().when(new
MailStateNotEquals(processorName)).process(mailProcessor).stop().end();
-
- // store mailet and matcher
- mailets.get(processorName).add(wrappedMailet);
- matchers.get(processorName).add(wrappedMatcher);
- }
-
-
- }
-
- processorDef
- // start choice
- .choice()
-
- // when the mail state did not change till yet (
the end of the route) we need to call the TerminatingMailet to
- // make sure we don't fall into a endless loop
- .when(new
MailStateEquals(processorName)).process(terminatingMailetProcessor).stop()
-
-
- // dispose when needed
- .when(new
MailStateEquals(Mail.GHOST)).process(disposeProcessor).stop()
-
- // route it to the next processor
- .otherwise().process(mailProcessor).stop();
-
- processors.put(processorName, new
ProcessorDetail(processorName,new ChildProcessor(processorName)));
- }
-
- }
- }
}
Added:
james/server/trunk/mailetcontainer-impl/src/main/java/org/apache/james/mailetcontainer/ProcessorManagement.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-impl/src/main/java/org/apache/james/mailetcontainer/ProcessorManagement.java?rev=1022598&view=auto
==============================================================================
---
james/server/trunk/mailetcontainer-impl/src/main/java/org/apache/james/mailetcontainer/ProcessorManagement.java
(added)
+++
james/server/trunk/mailetcontainer-impl/src/main/java/org/apache/james/mailetcontainer/ProcessorManagement.java
Thu Oct 14 16:22:08 2010
@@ -0,0 +1,170 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.mailetcontainer;
+
+import java.util.List;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
+import org.apache.commons.logging.Log;
+import org.apache.james.lifecycle.LogEnabled;
+import org.apache.mailet.Mailet;
+import org.apache.mailet.Matcher;
+
+/**
+ * Expose JMX functions for {...@link MailProcessorList} implementations
+ *
+ *
+ */
+public class ProcessorManagement implements ProcessorManagementMBean,
LogEnabled{
+
+ private MailProcessorList mailProcessor;
+ private MBeanServer mbeanserver;
+ private Log logger;
+
+ @Resource(name="mailProcessor")
+ public void setMailProcessorList(MailProcessorList mailProcessor) {
+ this.mailProcessor = mailProcessor;
+ }
+
+
+ @Resource(name = "mbeanserver")
+ public void setMbeanServer(MBeanServer mbeanServer) {
+ this.mbeanserver = mbeanServer;
+ }
+
+ @PostConstruct
+ public void init() throws Exception {
+ registerMBeans();
+
+ }
+
+
+ private void registerMBeans() {
+
+ String baseObjectName =
"org.apache.james:type=component,name=processor,";
+
+ String[] processorNames = getProcessorNames();
+ for (int i = 0; i < processorNames.length; i++) {
+ String processorName = processorNames[i];
+ createProcessorMBean(baseObjectName, processorName, mbeanserver);
+ continue;
+ }
+ }
+
+ private void createProcessorMBean(String baseObjectName, String
processorName, MBeanServer mBeanServer) {
+ String processorMBeanName = baseObjectName + "processor=" +
processorName;
+
+ MailProcessor processor = mailProcessor.getProcessor(processorName);
+ ProcessorDetail processorDetail;
+
+ // check if the processor is an instance of ProcessorDetail. If not
create a wrapper around it. This will give us not all
+ // statistics but at least a few of them
+ if (processor instanceof ProcessorDetail) {
+ processorDetail = (ProcessorDetail) processor;
+ } else {
+ processorDetail = new ProcessorDetail(processorName, processor);
+ }
+ registerMBean(mBeanServer, processorMBeanName, processorDetail);
+
+
+ // check if the processor holds Mailets and Matchers
+ if (processor instanceof MailetContainer) {
+ MailetContainer container = (MailetContainer) processor;
+ List<Mailet> mailets = container.getMailets();
+
+ for (int i = 0; i < mailets.size(); i++) {
+ MailetManagement mailetManagement;
+
+ Mailet mailet = mailets.get(i);
+
+ // check if the mailet is an instance of MailetManagement. If
not create a wrapper around it. This will give us not all
+ // statistics but at least a few of them
+ if (mailet instanceof MailetManagement) {
+ mailetManagement = (MailetManagement) mailet;
+ } else {
+ mailetManagement = new MailetManagement(mailet);
+ }
+ String mailetMBeanName = processorMBeanName +
",subtype=mailet,index=" + (i+1) + ",mailetname=" +
mailetManagement.getMailetName();
+ registerMBean(mBeanServer, mailetMBeanName, mailetManagement);
+ }
+
+ List<Matcher> matchers = container.getMatchers();
+ for (int i = 0; i < matchers.size(); i++) {
+ MatcherManagement matcherManagement;
+ Matcher matcher = matchers.get(i);
+
+ // check if the matcher is an instance of MatcherManagement.
If not create a wrapper around it. This will give us not all
+ // statistics but at least a few of them
+ if (matcher instanceof MatcherManagement) {
+ matcherManagement = (MatcherManagement) matcher;
+ } else {
+ matcherManagement = new MatcherManagement(matcher);
+ }
+
+ String matcherMBeanName = processorMBeanName +
",subtype=matcher,index=" + (i+1) + ",matchername=" +
matcherManagement.getMatcherName();
+
+ registerMBean(mBeanServer, matcherMBeanName,
matcherManagement);
+ }
+
+ }
+
+
+ }
+
+ private void registerMBean(MBeanServer mBeanServer, String mBeanName,
Object object) {
+ ObjectName objectName = null;
+ try {
+ objectName = new ObjectName(mBeanName);
+ } catch (MalformedObjectNameException e) {
+ logger.info("Unable to register mbean", e);
+
+ return;
+ }
+ try {
+ mBeanServer.registerMBean(object, objectName);
+ } catch (javax.management.JMException e) {
+ logger.error("Unable to register mbean", e);
+ }
+ }
+
+
+
+ /*
+ * (non-Javadoc)
+ * @see
org.apache.james.mailetcontainer.ProcessorManagementMBean#getProcessorNames()
+ */
+ public String[] getProcessorNames() {
+ return mailProcessor.getProcessorNames();
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see
org.apache.james.lifecycle.LogEnabled#setLog(org.apache.commons.logging.Log)
+ */
+ public void setLog(Log logger) {
+ this.logger = logger;
+ }
+
+}
Modified:
james/server/trunk/spring-deployment/src/main/config/james/spring-beans.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/spring-deployment/src/main/config/james/spring-beans.xml?rev=1022598&r1=1022597&r2=1022598&view=diff
==============================================================================
--- james/server/trunk/spring-deployment/src/main/config/james/spring-beans.xml
(original)
+++ james/server/trunk/spring-deployment/src/main/config/james/spring-beans.xml
Thu Oct 14 16:22:08 2010
@@ -43,7 +43,7 @@
<entry key="org.apache.james:type=server,name=remotemanager"
value-ref="remotemanager"/>
<entry key="org.apache.james:type=component,name=domainlist"
value-ref="domainlist"/>
<entry key="org.apache.james:type=component,name=dnsservice"
value-ref="dnsservice"/>
- <entry key="org.apache.james:type=component,name=processor"
value-ref="mailProcessor"/>
+ <entry key="org.apache.james:type=component,name=processor"
value-ref="processormanagement"/>
</map>
</property>
@@ -66,6 +66,8 @@
<property name="objectName" value="connector:name=rmi" />
<property name="serviceUrl"
value="service:jmx:rmi://localhost/jndi/rmi://localhost:1099/jamesmailserver" />
</bean>
+
+ <bean id="processormanagement"
class="org.apache.james.mailetcontainer.ProcessorManagement"/>
-->
<bean
class="org.apache.james.container.spring.lifecycle.CommonsConfigurableBeanPostProcessor">
@@ -170,7 +172,6 @@
<bean id="spoolmanager"
class="org.apache.james.transport.JamesSpoolManager"/>
-
<!-- mailserver implementation which use activemq for spooling the mail -->
<bean id="mailserver" class="org.apache.james.JamesMailServer"/>
@@ -268,6 +269,8 @@
<bean id="domainlist" name="domainlistmanagement"
class="org.apache.james.domain.JDBCDomainList"/>
-->
+
+
<!-- IMAP server Beans -->
<bean id="imapserver"
class="org.apache.james.imapserver.netty.NioImapServer">
<property name="imapDecoder" ref="imapDecoder"/>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]