Author: eric
Date: Mon Dec 13 16:08:45 2010
New Revision: 1045211
URL: http://svn.apache.org/viewvc?rev=1045211&view=rev
Log:
Introduce separate files and beans per mailbox impl (JAMES-1054) (MAILBOX-19)
Added:
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jcr-context.xml
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jpa-context.xml
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-maildir-context.xml
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-memory-context.xml
Modified:
james/server/trunk/container-spring/pom.xml
james/server/trunk/container-spring/src/main/config/examples/smtpserver.xml
james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml
Modified: james/server/trunk/container-spring/pom.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/container-spring/pom.xml?rev=1045211&r1=1045210&r2=1045211&view=diff
==============================================================================
--- james/server/trunk/container-spring/pom.xml (original)
+++ james/server/trunk/container-spring/pom.xml Mon Dec 13 16:08:45 2010
@@ -665,11 +665,22 @@
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
+ <artifactId>apache-james-mailbox-memory</artifactId>
+ <version>0.2-M2-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
<artifactId>james-server-mail-api</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
+ <artifactId>apache-james-mailbox-copier</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
<artifactId>james-server-mail-library</artifactId>
<scope>runtime</scope>
</dependency>
Modified:
james/server/trunk/container-spring/src/main/config/examples/smtpserver.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/examples/smtpserver.xml?rev=1045211&r1=1045210&r2=1045211&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/config/examples/smtpserver.xml
(original)
+++ james/server/trunk/container-spring/src/main/config/examples/smtpserver.xml
Mon Dec 13 16:08:45 2010
@@ -47,7 +47,7 @@
<secret>yoursecret</secret>
<provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>
<!-- The algorithm is optional and only needs to be specified when
using something other
- than the Sun JCE provider. -->
+ than the Sun JCE provider - You could use IbmX509 with IBM Java
runtime. -->
<algorithm>SunX509</algorithm>
</tls>
Added:
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jcr-context.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jcr-context.xml?rev=1045211&view=auto
==============================================================================
---
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jcr-context.xml
(added)
+++
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jcr-context.xml
Mon Dec 13 16:08:45 2010
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
+
+ <!--
+ Mailbox JCR
+ -->
+
+ <bean id="jcr-mailboxmanager"
class="org.apache.james.mailbox.jcr.JCRMailboxManager">
+ <constructor-arg index="0" ref="jcr-sessionMapperFactory"/>
+ <constructor-arg index="1" ref="authenticator"/>
+ <constructor-arg index="2" ref="jcr-uidProvider"/>
+ <constructor-arg index="3" ref="locker"/>
+ </bean>
+ <bean id ="jcr-subscriptionManager"
class="org.apache.james.mailbox.jcr.JCRSubscriptionManager">
+ <constructor-arg index="0" ref="jcr-sessionMapperFactory"/>
+ </bean>
+ <bean id="jcr-sessionMapperFactory"
class="org.apache.james.mailbox.jcr.JCRMailboxSessionMapperFactory">
+ <constructor-arg index="0" ref="jcr-sessionJcrRepository"/>
+ </bean>
+ <bean id="jcr-uidProvider"
class="org.apache.james.mailbox.jcr.mail.JCRCachingUidProvider">
+ <constructor-arg index="0" ref="jcr-sessionJcrRepository"/>
+ </bean>
+ <bean id ="jcr-sessionJcrRepository"
class="org.apache.james.mailbox.jcr.GlobalMailboxSessionJCRRepository"
depends-on="imapCndLoader">
+ <constructor-arg index="0" ref="jcrRepository"/>
+ <constructor-arg index="1" value="james"/>
+ <constructor-arg index="2" value="james"/>
+ <constructor-arg index="3" value="james"/>
+ </bean>
+ <bean id="jcrRepository" class="org.apache.jackrabbit.core.RepositoryImpl"
destroy-method="shutdown">
+ <constructor-arg index="0" ref="config" />
+ </bean>
+ <bean id="imapCndLoader"
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
+ <property name="targetObject"><ref local="jcrUtils"/></property>
+ <property name="targetMethod"><value>registerCnd</value></property>
+ <property name="arguments">
+ <list>
+ <ref local="jcrRepository"/>
+ <value>james</value>
+ <value>james</value>
+ <value>james</value>
+ </list>
+ </property>
+ </bean>
+ <bean id="jcrUtils" class="org.apache.james.mailbox.jcr.JCRUtils"/>
+ <bean id="config"
class="org.apache.jackrabbit.core.config.RepositoryConfig"
factory-method="create">
+ <constructor-arg index="0"
value="filesystem=file://conf/jcr-repository.xml"/>
+ <constructor-arg index="1"
value="filesystem=file://var/store/jackrabbit" />
+ </bean>
+
+</beans>
Added:
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jpa-context.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jpa-context.xml?rev=1045211&view=auto
==============================================================================
---
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jpa-context.xml
(added)
+++
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-jpa-context.xml
Mon Dec 13 16:08:45 2010
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
+
+ <!--
+ Mailbox JPA
+ -->
+
+ <bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
+ <bean id="jpa-mailboxmanager"
class="org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager">
+ <constructor-arg index="0" ref="jpa-sessionMapperFactory"/>
+ <constructor-arg index="1" ref="authenticator"/>
+ <constructor-arg index="2" ref="jpa-uidProvider"/>
+ <constructor-arg index="3" ref="locker"/>
+ <constructor-arg index="4" value="${openjpa.streaming}"/>
+ </bean>
+ <bean id ="jpa-subscriptionManager"
class="org.apache.james.mailbox.jpa.JPASubscriptionManager">
+ <constructor-arg index="0" ref="jpa-sessionMapperFactory"/>
+ </bean>
+ <bean id="jpa-sessionMapperFactory"
class="org.apache.james.mailbox.jpa.JPAMailboxSessionMapperFactory">
+ <constructor-arg index="0" ref="entityManagerFactory"/>
+ </bean>
+ <bean id="jpa-uidProvider"
class="org.apache.james.mailbox.jpa.mail.JPACachingUidProvider">
+ <constructor-arg index="0" ref="entityManagerFactory"/>
+ </bean>
+
+</beans>
Added:
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-maildir-context.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-maildir-context.xml?rev=1045211&view=auto
==============================================================================
---
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-maildir-context.xml
(added)
+++
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-maildir-context.xml
Mon Dec 13 16:08:45 2010
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
+
+ <!--
+ Mailbox Maildir
+ -->
+ <!-- WARNING: Maildir does only work on UNIX like operation systems -->
+
+ <bean id="maildir-mailboxmanager"
class="org.apache.james.mailbox.maildir.MaildirMailboxManager">
+ <constructor-arg index="0" ref="maildir-sessionMapperFactory"/>
+ <constructor-arg index="1" ref="authenticator"/>
+ <constructor-arg index="2" ref="maildir-uidProvider"/>
+ </bean>
+ <bean id ="maildir-subscriptionManager"
class="org.apache.james.mailbox.maildir.MaildirSubscriptionManager">
+ <constructor-arg index="0" ref="maildir-sessionMapperFactory"/>
+ </bean>
+ <bean id="maildir-sessionMapperFactory"
class="org.apache.james.mailbox.maildir.MaildirMailboxSessionMapperFactory">
+ <constructor-arg index="0" ref="maildirStore"/>
+ </bean>
+ <bean id="maildirStore" name="maildir-uidProvider"
class="org.apache.james.adapter.mailbox.maildir.MaildirStoreUtil"
factory-method="create">
+ <constructor-arg index="0" ref="filesystem"/>
+ <constructor-arg index="1" ref="mailserver"/>
+ <constructor-arg index="2" value="file://var/store/maildir/"/>
+ </bean>
+
+</beans>
Added:
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-memory-context.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-memory-context.xml?rev=1045211&view=auto
==============================================================================
---
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-memory-context.xml
(added)
+++
james/server/trunk/container-spring/src/main/config/james/context/james-mailbox-memory-context.xml
Mon Dec 13 16:08:45 2010
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
+
+ <!--
+ Mailbox Memory
+ -->
+ <!-- WARNING: Memory does not persist the mailbox. -->
+ <!-- Information will be lost after server restart. -->
+
+ <bean id="memory-mailboxmanager"
class="org.apache.james.mailbox.inmemory.InMemoryMailboxManager">
+ <constructor-arg index="0" ref="memory-sessionMapperFactory"/>
+ <constructor-arg index="1" ref="authenticator"/>
+ <constructor-arg index="2" ref="memory-uidProvider"/>
+ </bean>
+ <bean id ="memory-subscriptionManager"
class="org.apache.james.mailbox.inmemory.InMemorySubscriptionManager">
+ <constructor-arg index="0" ref="memory-sessionMapperFactory"/>
+ </bean>
+ <bean id="memory-sessionMapperFactory"
class="org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory" />
+ <bean id="memory-uidProvider"
class="org.apache.james.mailbox.inmemory.mail.InMemoryCachingUidProvider" />
+
+</beans>
Modified:
james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml?rev=1045211&r1=1045210&r2=1045211&view=diff
==============================================================================
---
james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml
(original)
+++
james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml
Mon Dec 13 16:08:45 2010
@@ -26,73 +26,29 @@
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring-2.5.0.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core-5.4.1.xsd">
-
- <bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="ignoreUnresolvablePlaceholders" value="true"/>
- <property name="location" value="file://conf/jmx.properties"/>
- </bean>
-
- <bean id="restrictedRmiSocketFactory"
class="org.apache.james.container.spring.RestrictingRMISocketFactory">
- <constructor-arg value="${jmx.address}"/>
- </bean>
-
- <bean id="registry"
class="org.springframework.remoting.rmi.RmiRegistryFactoryBean">
- <property name="port" value="${jmx.port}" />
- <property name="serverSocketFactory" ref="restrictedRmiSocketFactory"/>
- <property name="clientSocketFactory" ref="restrictedRmiSocketFactory"/>
- </bean>
-
- <bean id="mbeanserver"
class="org.springframework.jmx.support.MBeanServerFactoryBean" >
- <property name="locateExistingServerIfPossible" value="true"/>
- <property name="registerWithFactory" value="true"/>
+
+ <!--
+ File System
+ -->
+ <bean class="org.apache.james.container.spring.FileSystemResolver">
+ <property name="fileSystem" ref="filesystem" />
</bean>
+ <bean id="filesystem"
class="org.apache.james.container.spring.SpringFileSystem" />
- <bean id="serverConnector"
class="org.springframework.jmx.support.ConnectorServerFactoryBean"
depends-on="registry">
- <property name="objectName" value="connector:name=rmi" />
- <property name="serviceUrl"
value="service:jmx:rmi://${jmx.address}/jndi/rmi://${jmx.address}:${jmx.port}/jmxrmi"
/>
- </bean>
-
- <bean id="exporter" class="org.springframework.jmx.export.MBeanExporter"
lazy-init="false">
- <property name="beans">
- <map>
- <entry key="org.apache.james:type=server,name=smtpserver"
value-ref="smtpserver"/>
- <entry key="org.apache.james:type=server,name=lmtpserver"
value-ref="lmtpserver"/>
- <entry key="org.apache.james:type=server,name=pop3server"
value-ref="pop3server"/>
- <entry key="org.apache.james:type=server,name=imapserver"
value-ref="imapserver"/>
- <entry key="org.apache.james:type=server,name=remotemanager"
value-ref="remotemanager"/>
- <entry key="org.apache.james:type=component,name=domainlist"
value-ref="domainlistmanagement"/>
- <entry key="org.apache.james:type=component,name=dnsservice"
value-ref="dnsservice"/>
- <entry key="org.apache.james:type=component,name=processor"
value-ref="processormanagement"/>
- <entry key="org.apache.james:type=component,name=virtualusertable"
value-ref="virtualusertablemanagement"/>
- <entry key="org.apache.james:type=component,name=usermanagement"
value-ref="usermanagement"/>
- <entry key="org.apache.james:type=component,name=fetchmail"
value-ref="fetchmail"/>
- <entry key="org.apache.james:type=component,name=mailboxmanagement"
value-ref="mailboxmanagermanagement"/>
- </map>
- </property>
-
- <property name="assembler">
- <bean
class="org.springframework.jmx.export.assembler.InterfaceBasedMBeanInfoAssembler">
- <property name="managedInterfaces"
value="org.apache.james.smtpserver.netty.SMTPServerMBean,org.apache.james.remotemanager.netty.RemoteManagerMBean,org.apache.james.pop3server.netty.POP3ServerMBean,org.apache.james.imapserver.netty.IMAPServerMBean,org.apache.james.fetchmail.FetchSchedulerMBean,org.apache.james.domainlist.api.DomainListManagementMBean,org.apache.james.dnsservice.api.DNSServiceMBean,org.apache.james.mailetcontainer.api.ProcessorManagementMBean,org.apache.james.vut.api.VirtualUserTableManagementMBean,org.apache.james.user.api.UserManagementMBean,org.apache.james.adapter.mailbox.MailboxManagerManagementMBean"/>
- </bean>
- </property>
-
+ <!--
+ Scheduler
+ -->
+ <bean id="scheduler" class="java.util.concurrent.Executors"
factory-method="newScheduledThreadPool">
+ <constructor-arg value="20"/>
</bean>
-
- <bean id="processormanagement"
class="org.apache.james.mailetcontainer.lib.ProcessorManagement"/>
-
- <bean id="usermanagement" class="org.apache.james.user.lib.UserManagement"
/>
-
- <bean id="virtualusertablemanagement"
class="org.apache.james.vut.lib.VirtualUserTableManagement" />
-
- <bean id="domainlistmanagement"
class="org.apache.james.domainlist.lib.DomainListManagement" />
-
- <bean id="mailboxmanagermanagement"
class="org.apache.james.adapter.mailbox.MailboxManagerManagement" />
+ <!--
+ Configuration Provider
+ -->
<bean
class="org.apache.james.container.spring.lifecycle.CommonsConfigurableBeanPostProcessor">
<property name="configurationProvider" ref="configurationProvider" />
<property name="order" value="1" />
</bean>
-
<bean id="configurationProvider"
class="org.apache.james.container.spring.lifecycle.SpringConfigurationProvider">
<property name="configurationMappings">
<map>
@@ -109,20 +65,13 @@
</property>
</bean>
- <bean class="org.apache.james.container.spring.FileSystemResolver">
- <property name="fileSystem" ref="filesystem" />
- </bean>
-
- <bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="ignoreUnresolvablePlaceholders" value="true"/>
- <property name = "location" value="file://conf/database.properties"/>
- </bean>
-
+ <!--
+ Log Provider
+ -->
<bean
class="org.apache.james.container.spring.lifecycle.LogEnabledBeanPostProcessor">
<property name="logProvider" ref="logProvider" />
<property name="order" value="0" />
</bean>
-
<bean id="logProvider"
class="org.apache.james.container.spring.lifecycle.SpringLogProvider">
<property name="logMappings">
<map>
@@ -139,19 +88,17 @@
</property>
</bean>
+ <!--
+ Injection
+ -->
+ <bean id="instanceFactory"
class="org.apache.james.container.spring.SpringInstanceFactory"/>
<bean class=
"org.springframework.context.annotation.CommonAnnotationBeanPostProcessor">
<property name="order" value="3" />
</bean>
- <bean id="instanceFactory"
class="org.apache.james.container.spring.SpringInstanceFactory"/>
-
- <bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
-
- <camel:camelContext id="jamesCamelContext" trace="false" >
- <camel:jmxAgent id="agent" disabled="false" createConnector="false"
serviceUrlPath="/jmxrmi/jamescamel"/>
- <camel:template id="producerTemplate"/>
- </camel:camelContext>
-
+ <!--
+ Active MQ
+ -->
<amq:broker useJmx="true" persistent="true" brokerName="james"
dataDirectory="filesystem=file://var/store/activemq/brokers"
useShutdownHook="false" schedulerSupport="false" id="broker">
<amq:destinationPolicy>
<amq:policyMap>
@@ -175,152 +122,230 @@
<amq:transportConnector uri="tcp://localhost:0" />
</amq:transportConnectors>
</amq:broker>
-
<amq:connectionFactory id="amqConnectionFactory"
brokerURL="vm://james?create=false">
<property name="blobTransferPolicy" ref="blobTransferPolicy"/>
</amq:connectionFactory>
-
<bean id="blobTransferPolicy"
class="org.apache.james.queue.activemq.FileSystemBlobTransferPolicy">
<property name="defaultUploadUrl"
value="file://var/store/activemq/blob-transfer"/>
</bean>
-
<bean id="jmsConnectionFactory"
class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory" ref="amqConnectionFactory"/>
<property name="sessionCacheSize" value="10"/>
<property name="cacheConsumers" value="false"/>
<property name="cacheProducers" value="true"/>
</bean>
-
<bean id="jmsTransactionManager"
class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
</bean>
+ <!--
+ Camel
+ -->
+ <camel:camelContext id="jamesCamelContext" trace="false" >
+ <camel:jmxAgent id="agent" disabled="false" createConnector="false"
serviceUrlPath="/jmxrmi/jamescamel"/>
+ <camel:template id="producerTemplate"/>
+ </camel:camelContext>
+
+ <!--
+ Mail Server / Queue / Spool / Mailet / Matcher
+ -->
+ <bean id="mailserver" class="org.apache.james.JamesMailServer"/>
<bean id="mailQueueFactory"
class="org.apache.james.queue.activemq.ActiveMQMailQueueFactory"
depends-on="broker"/>
-
<bean id="mailProcessor" name="processorRoute"
class="org.apache.james.mailetcontainer.camel.CamelMailProcessorList"/>
-
<bean id="spoolmanager"
class="org.apache.james.transport.JamesSpoolManager"/>
-
- <bean id="mailserver" class="org.apache.james.JamesMailServer"/>
-
<bean id="mailetcontext"
class="org.apache.james.mailetcontainer.lib.JamesMailetContext"/>
-
- <bean id="matcherloader"
class="org.apache.james.mailetcontainer.lib.JamesMatcherLoader" />
-
<bean id="mailetloader"
class="org.apache.james.mailetcontainer.lib.JamesMailetLoader" />
+ <bean id="matcherloader"
class="org.apache.james.mailetcontainer.lib.JamesMatcherLoader" />
+ <!--
+ DNS Service
+ -->
<bean id="dnsservice"
class="org.apache.james.dnsservice.dnsjava.DNSJavaService" />
+ <!--
+ Remote Manager
+ -->
<bean id="remotemanager"
class="org.apache.james.remotemanager.netty.RemoteManager" >
<property name="protocolHandlerChain"
ref="remoteProtocolHandlerChain"/>
</bean>
-
<bean id="remoteProtocolHandlerChain"
class="org.apache.james.socket.JamesProtocolHandlerChain">
<property name="coreHandlersPackage"
value="org.apache.james.remotemanager.core.CoreCmdHandlerLoader"/>
</bean>
- <bean id="pop3server"
class="org.apache.james.pop3server.netty.POP3Server" >
- <property name="protocolHandlerChain" ref="pop3ProtocolHandlerChain"/>
- </bean>
-
- <bean id="pop3ProtocolHandlerChain"
class="org.apache.james.socket.JamesProtocolHandlerChain">
- <property name="coreHandlersPackage"
value="org.apache.james.pop3server.core.CoreCmdHandlerLoader"/>
- </bean>
-
+ <!--
+ SMTP Server
+ -->
<bean id="smtpserver" class="org.apache.james.smtpserver.netty.SMTPServer">
<property name="protocolHandlerChain" ref="smtpProtocolHandlerChain"/>
</bean>
-
<bean id="smtpProtocolHandlerChain"
class="org.apache.james.socket.JamesProtocolHandlerChain">
<property name="coreHandlersPackage"
value="org.apache.james.smtpserver.CoreCmdHandlerLoader"/>
</bean>
+ <!--
+ LMTP Server
+ -->
<bean id="lmtpserver" class="org.apache.james.lmtpserver.netty.LMTPServer">
<property name="protocolHandlerChain" ref="lmtpProtocolHandlerChain"/>
</bean>
-
<bean id="lmtpProtocolHandlerChain"
class="org.apache.james.socket.JamesProtocolHandlerChain">
<property name="coreHandlersPackage"
value="org.apache.james.lmtpserver.CoreCmdHandlerLoader"/>
</bean>
+ <!--
+ Fetchmail
+ -->
<bean id="fetchmail" class="org.apache.james.fetchmail.FetchScheduler" />
- <bean id="mailstore" class="org.apache.james.mailstore.lib.JamesMailStore"
/>
-
- <bean id="usersstore" class="org.apache.james.user.lib.JamesUsersStore" >
- <property name="defaultRepository" value="LocalUsers"/>
+ <!--
+ POP3 Server
+ -->
+ <bean id="pop3server"
class="org.apache.james.pop3server.netty.POP3Server" >
+ <property name="protocolHandlerChain" ref="pop3ProtocolHandlerChain"/>
+ </bean>
+ <bean id="pop3ProtocolHandlerChain"
class="org.apache.james.socket.JamesProtocolHandlerChain">
+ <property name="coreHandlersPackage"
value="org.apache.james.pop3server.core.CoreCmdHandlerLoader"/>
</bean>
- <bean id="localusersrepository"
class="org.apache.james.user.lib.LocalUsersRepository" />
-
- <bean id="filesystem"
class="org.apache.james.container.spring.SpringFileSystem" />
-
- <bean id="virtualusertable"
class="org.apache.james.vut.lib.JamesVirtualUserTable" />
-
- <bean id="domainlist"
class="org.apache.james.domainlist.lib.JamesDomainList" />
-
+ <!--
+ IMAP Server
+ -->
<bean id="imapserver" class="org.apache.james.imapserver.netty.IMAPServer">
<property name="imapDecoder" ref="imapDecoder"/>
<property name="imapEncoder" ref="imapEncoder"/>
</bean>
-
<bean id="imapProcessor"
class="org.apache.james.imap.processor.main.DefaultImapProcessorFactory"
factory-method="createDefaultProcessor">
<constructor-arg index="0" ref="mailboxmanager"/>
<constructor-arg index="1" ref="subscriptionManager"/>
</bean>
-
- <bean id="imapDecoderFactory"
class="org.apache.james.imap.main.DefaultImapDecoderFactory"/>
-
<bean id="imapDecoder" factory-bean="imapDecoderFactory"
factory-method="buildImapDecoder"/>
-
- <bean id="imapEncoderFactory"
class="org.apache.james.imap.encode.main.DefaultImapEncoderFactory"/>
-
+ <bean id="imapDecoderFactory"
class="org.apache.james.imap.main.DefaultImapDecoderFactory"/>
<bean id="imapEncoder" factory-bean="imapEncoderFactory"
factory-method="buildImapEncoder"/>
+ <bean id="imapEncoderFactory"
class="org.apache.james.imap.encode.main.DefaultImapEncoderFactory"/>
- <bean id="authenticator"
class="org.apache.james.adapter.mailbox.store.UserRepositoryAuthenticator"/>
-
- <bean id="sessionMapperFactory"
class="org.apache.james.mailbox.jpa.JPAMailboxSessionMapperFactory">
- <constructor-arg index="0" ref="entityManagerFactory"/>
- </bean>
-
- <bean id ="subscriptionManager"
class="org.apache.james.mailbox.jpa.JPASubscriptionManager">
- <constructor-arg index="0" ref="sessionMapperFactory"/>
+ <!--
+ Users
+ -->
+ <bean id="usersstore" class="org.apache.james.user.lib.JamesUsersStore" >
+ <property name="defaultRepository" value="LocalUsers"/>
</bean>
+ <bean id="localusersrepository"
class="org.apache.james.user.lib.LocalUsersRepository" />
+ <bean id="virtualusertable"
class="org.apache.james.vut.lib.JamesVirtualUserTable" />
- <bean id="mailboxmanager"
class="org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager">
- <constructor-arg index="0" ref="sessionMapperFactory"/>
- <constructor-arg index="1" ref="authenticator"/>
- <constructor-arg index="2" ref="uidProvider"/>
- <constructor-arg index="3" ref="locker"/>
- <constructor-arg index="4" value="${openjpa.streaming}"/>
- </bean>
+ <!--
+ Domain List
+ -->
+ <bean id="domainlist"
class="org.apache.james.domainlist.lib.JamesDomainList" />
- <bean id="locker"
class="org.apache.james.mailbox.store.JVMMailboxPathLocker"/>
-
- <bean id="uidProvider"
class="org.apache.james.mailbox.jpa.mail.JPACachingUidProvider">
- <constructor-arg index="0" ref="entityManagerFactory"/>
- </bean>
+ <!--
+ MailStore
+ -->
+ <bean id="mailstore" class="org.apache.james.mailstore.lib.JamesMailStore"
/>
- <bean id="scheduler" class="java.util.concurrent.Executors"
factory-method="newScheduledThreadPool">
- <constructor-arg value="20"/>
+ <!--
+ Mailstore Import 2.3
+ INFO: This sections still needs to be completed with beans responsible
to import James 2.3 mailstore.
+ -->
+
+ <!--
+ Mailbox
+ -->
+ <bean id="mailboxmanager" parent="jcr-mailboxmanager" />
+ <bean id="subscriptionManager" parent="jpa-subscriptionManager" />
+ <bean id="locker"
class="org.apache.james.mailbox.store.JVMMailboxPathLocker"/>
+ <bean id="authenticator"
class="org.apache.james.adapter.mailbox.store.UserRepositoryAuthenticator"/>
+ <import resource="classpath:context/james-mailbox-jpa-context.xml" />
+ <import resource="classpath:context/james-mailbox-jcr-context.xml" />
+ <import resource="classpath:context/james-mailbox-maildir-context.xml" />
+ <import resource="classpath:context/james-mailbox-memory-context.xml" />
+
+ <!--
+ Mailbox Tools
+ -->
+ <bean id="mailboxCopier"
class="org.apache.james.mailbox.copier.MailboxCopierImpl">
+ <property name="srcMailboxManager" ref="jpa-mailboxmanager"/>
+ <property name="dstMailboxManager" ref="jcr-mailboxmanager"/>
+ </bean>
+
+ <!--
+ Database DataSource
+ -->
+ <bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+ <property name="ignoreUnresolvablePlaceholders" value="true"/>
+ <property name = "location" value="file://conf/database.properties"/>
</bean>
-
<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${database.driverClassName}" />
<property name="url" value="${database.url}" />
<property name="username" value="${database.username}" />
<property name="password" value="${database.password}" />
</bean>
-
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="datasource"/>
<property name="jpaVendorAdapter" ref="vendorAdapter"/>
</bean>
-
<bean id="vendorAdapter"
class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter">
<property name="database" value="${vendorAdapter.database}"/>
<!-- set this to true for debugging purposes -->
<property name="showSql" value="false"/>
</bean>
+ <!--
+ JMX Server
+ -->
+ <bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+ <property name="ignoreUnresolvablePlaceholders" value="true"/>
+ <property name="location" value="file://conf/jmx.properties"/>
+ </bean>
+ <bean id="mbeanserver"
class="org.springframework.jmx.support.MBeanServerFactoryBean" >
+ <property name="locateExistingServerIfPossible" value="true"/>
+ <property name="registerWithFactory" value="true"/>
+ </bean>
+ <bean id="serverConnector"
class="org.springframework.jmx.support.ConnectorServerFactoryBean"
depends-on="registry">
+ <property name="objectName" value="connector:name=rmi" />
+ <property name="serviceUrl"
value="service:jmx:rmi://${jmx.address}/jndi/rmi://${jmx.address}:${jmx.port}/jmxrmi"
/>
+ </bean>
+ <bean id="registry"
class="org.springframework.remoting.rmi.RmiRegistryFactoryBean">
+ <property name="port" value="${jmx.port}" />
+ <property name="serverSocketFactory" ref="restrictedRmiSocketFactory"/>
+ <property name="clientSocketFactory" ref="restrictedRmiSocketFactory"/>
+ </bean>
+ <bean id="restrictedRmiSocketFactory"
class="org.apache.james.container.spring.RestrictingRMISocketFactory">
+ <constructor-arg value="${jmx.address}"/>
+ </bean>
+
+ <!--
+ JMX Export
+ -->
+ <bean id="exporter" class="org.springframework.jmx.export.MBeanExporter"
lazy-init="false">
+ <property name="beans">
+ <map>
+ <entry key="org.apache.james:type=server,name=smtpserver"
value-ref="smtpserver"/>
+ <entry key="org.apache.james:type=server,name=lmtpserver"
value-ref="lmtpserver"/>
+ <entry key="org.apache.james:type=server,name=pop3server"
value-ref="pop3server"/>
+ <entry key="org.apache.james:type=server,name=imapserver"
value-ref="imapserver"/>
+ <entry key="org.apache.james:type=server,name=remotemanager"
value-ref="remotemanager"/>
+ <entry key="org.apache.james:type=component,name=domainlist"
value-ref="domainlistmanagement"/>
+ <entry key="org.apache.james:type=component,name=dnsservice"
value-ref="dnsservice"/>
+ <entry key="org.apache.james:type=component,name=processor"
value-ref="processormanagement"/>
+ <entry key="org.apache.james:type=component,name=virtualusertable"
value-ref="virtualusertablemanagement"/>
+ <entry key="org.apache.james:type=component,name=usermanagement"
value-ref="usermanagement"/>
+ <entry key="org.apache.james:type=component,name=fetchmail"
value-ref="fetchmail"/>
+ <entry key="org.apache.james:type=component,name=mailboxmanagement"
value-ref="mailboxmanagermanagement"/>
+ <entry key="org.apache.james:type=mailbox,name=mailboxcopier"
value-ref="mailboxcopiermanagement"/>
+ </map>
+ </property>
+ <property name="assembler">
+ <bean
class="org.springframework.jmx.export.assembler.InterfaceBasedMBeanInfoAssembler">
+ <property name="managedInterfaces"
value="org.apache.james.smtpserver.netty.SMTPServerMBean,org.apache.james.remotemanager.netty.RemoteManagerMBean,org.apache.james.pop3server.netty.POP3ServerMBean,org.apache.james.imapserver.netty.IMAPServerMBean,org.apache.james.fetchmail.FetchSchedulerMBean,org.apache.james.domainlist.api.DomainListManagementMBean,org.apache.james.dnsservice.api.DNSServiceMBean,org.apache.james.mailetcontainer.api.ProcessorManagementMBean,org.apache.james.vut.api.VirtualUserTableManagementMBean,org.apache.james.user.api.UserManagementMBean,org.apache.james.adapter.mailbox.MailboxManagerManagementMBean,org.apache.james.mailbox.copier.MailboxCopierManagementMBean"/>
+ </bean>
+ </property>
+ </bean>
+ <bean id="processormanagement"
class="org.apache.james.mailetcontainer.lib.ProcessorManagement"/>
+ <bean id="usermanagement" class="org.apache.james.user.lib.UserManagement"
/>
+ <bean id="virtualusertablemanagement"
class="org.apache.james.vut.lib.VirtualUserTableManagement" />
+ <bean id="domainlistmanagement"
class="org.apache.james.domainlist.lib.DomainListManagement" />
+ <bean id="mailboxmanagermanagement"
class="org.apache.james.adapter.mailbox.MailboxManagerManagement" />
+ <bean id="mailboxcopiermanagement"
class="org.apache.james.mailbox.copier.MailboxCopierManagement" />
+
</beans>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]