Author: azeez Date: Mon Jan 7 05:22:14 2008 New Revision: 609597 URL: http://svn.apache.org/viewvc?rev=609597&view=rev Log: 1. Added prameter for synchronizing all nodes in a cluster 2. No need to block all requests since transport listeners do no start until the configuration context is created
Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/AckManager.java webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelListener.java webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelSender.java webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusterManager.java webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusteringConstants.java webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/context/Replicator.java webservices/axis2/trunk/java/pom.xml Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/AckManager.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/AckManager.java?rev=609597&r1=609596&r2=609597&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/AckManager.java (original) +++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/AckManager.java Mon Jan 7 05:22:14 2008 @@ -31,7 +31,7 @@ import java.util.Vector; /** - * + * This class is responsible for handling all ACKs by the members in a cluster */ public final class AckManager { private static Log log = LogFactory.getLog(AckManager.class); @@ -41,6 +41,12 @@ messageAckTable.put(command.getUniqueId(), new MessageACK(command)); } + /** + * When a particular member send an ACK for a particular message, the ACK is stored here + * + * @param messageUniqueId ID of the message being ACKed + * @param memberId The ID of the member who ACKed the above message + */ public static void addAcknowledgement(String messageUniqueId, String memberId) { MessageACK ack = (MessageACK) messageAckTable.get(messageUniqueId); @@ -51,19 +57,30 @@ } } - public static void removeMessage(String messageUniqueId){ + public static void removeMessage(String messageUniqueId) { messageAckTable.remove(messageUniqueId); } + /** + * Check whether a particular message has been ACKed by all members in a cluster. If we find that + * a particular message is not ACKed, we will retransmit the message to the member who did not ACK + * and then return false. + * + * @param messageUniqueId ID of the message being ACKed + * @param sender + * @return true - if all members have ACKed the message, false - otherwise + * @throws ClusteringFault + */ public static boolean isMessageAcknowledged(String messageUniqueId, ChannelSender sender) throws ClusteringFault { boolean isAcknowledged = false; - if(messageUniqueId == null){ + boolean isReturnValueSet = false; + if (messageUniqueId == null) { return true; } MessageACK ack = (MessageACK) messageAckTable.get(messageUniqueId); - if(ack == null){ // If the message is not found, treat it as ACKed + if (ack == null) { // If the message is not found, treat it as ACKed return true; } @@ -90,21 +107,29 @@ " to member " + memberHost); } - isAcknowledged = false; - break; + if (!isReturnValueSet) { + isAcknowledged = false; + isReturnValueSet = true; + } } else { - isAcknowledged = true; + if (!isReturnValueSet) { + isAcknowledged = true; + } } } } - // If a message is ACKed, we don't have to keep track of it in our ackTbl anymore + // If a message is ACKed by all members, we don't have to keep track of + // it in our ackTbl anymore if (isAcknowledged) { messageAckTable.remove(messageUniqueId); } return isAcknowledged; } + /** + * Data structure for holding the ACKs for each message + */ private static class MessageACK { private ContextClusteringCommand command; private List memberList = new Vector(); Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelListener.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelListener.java?rev=609597&r1=609596&r2=609597&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelListener.java (original) +++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelListener.java Mon Jan 7 05:22:14 2008 @@ -148,8 +148,7 @@ configurationManager != null) { configurationManager.process((ConfigurationClusteringCommand) msg); } else if (msg instanceof ControlCommand && controlCommandProcessor != null) { - controlCommandProcessor.process((ControlCommand) msg, - sender); + controlCommandProcessor.process((ControlCommand) msg, sender); } } } Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelSender.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelSender.java?rev=609597&r1=609596&r2=609597&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelSender.java (original) +++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelSender.java Mon Jan 7 05:22:14 2008 @@ -24,6 +24,7 @@ import org.apache.axis2.clustering.MessageSender; import org.apache.catalina.tribes.ByteMessage; import org.apache.catalina.tribes.Channel; +import org.apache.catalina.tribes.ChannelException; import org.apache.catalina.tribes.Member; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -72,6 +73,42 @@ return timeToSend; } + public long sendToGroup(ClusteringCommand msg, Member[] members) throws ClusteringFault { + if (channel == null) { + return 0; + } + long timeToSend = 0; + + // Keep retrying, since at the point of trying to send the msg, a member may leave the group + // causing a view change. All nodes in a view should get the msg + //TODO: Sometimes Tribes incorrectly detects that a member has left a group + while (true) { + if (channel.getMembers().length > 0) { + try { + long start = System.currentTimeMillis(); + channel.send(channel.getMembers(), toByteMessage(msg), Channel.SEND_OPTIONS_USE_ACK); + timeToSend = System.currentTimeMillis() - start; + log.debug("Sent " + msg + " to group"); + break; + } catch (NotSerializableException e) { + String message = "Could not send command message " + msg + + " to group since it is not serializable."; + log.error(message, e); + throw new ClusteringFault(message, e); + } catch (ChannelException e) { + + } catch (Exception e) { + String message = "Error sending command message : " + msg + + ". Reason " + e.getMessage(); + log.warn(message, e); + } + } else { + break; + } + } + return timeToSend; + } + private ByteMessage toByteMessage(ClusteringCommand msg) throws IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(bos); @@ -105,7 +142,7 @@ log.debug("Sent " + cmd + " to " + TribesUtil.getHost(member)); } } catch (NotSerializableException e) { - String message = "Could not send command message to " + TribesUtil.getHost(member) + + String message = "Could not send command message to " + TribesUtil.getHost(member) + " since it is not serializable."; log.error(message, e); throw new ClusteringFault(message, e); Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java?rev=609597&r1=609596&r2=609597&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java (original) +++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java Mon Jan 7 05:22:14 2008 @@ -46,6 +46,7 @@ import org.apache.catalina.tribes.Member; import org.apache.catalina.tribes.group.GroupChannel; import org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor; +import org.apache.catalina.tribes.group.interceptors.TcpFailureDetector; import org.apache.catalina.tribes.transport.ReceiverBase; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -83,8 +84,6 @@ public void init() throws ClusteringFault { - // Until the clustering stuff is properly initialized, we have to block. - configurationContext.setProperty(ClusteringConstants.BLOCK_ALL_REQUESTS, "true"); AxisConfiguration axisConfig = configurationContext.getAxisConfiguration(); for (Iterator iterator = axisConfig.getInFlowPhases().iterator(); iterator.hasNext();) { @@ -134,7 +133,8 @@ controlCmdProcessor.setChannelSender(sender); channel = new GroupChannel(); - String localIP = System.getProperty(ClusteringConstants.LOCAL_IP_ADDRESS); + // Set the IP address that will be advertised by this node + String localIP = System.getProperty(ClusteringConstants.LOCAL_IP_ADDRESS); if (localIP != null) { ReceiverBase receiver = (ReceiverBase) channel.getChannelReceiver(); receiver.setAddress(localIP); @@ -174,10 +174,10 @@ mcastProps.setProperty("tcpListenPort", "4000"); mcastProps.setProperty("tcpListenHost", "127.0.0.1");*/ - /*TcpFailureDetector tcpFailureDetector = new TcpFailureDetector(); - tcpFailureDetector.setPrevious(nbc); + TcpFailureDetector tcpFailureDetector = new TcpFailureDetector(); + tcpFailureDetector.setPrevious(dfi); channel.addInterceptor(tcpFailureDetector); - tcpFailureDetector.*/ +// tcpFailureDetector. channel.addChannelListener(channelListener); TribesMembershipListener membershipListener = new TribesMembershipListener(); @@ -189,7 +189,9 @@ channel.stop(Channel.DEFAULT); throw new ClusteringFault("Cannot join cluster using IP " + localHost + ". Please set an IP address other than " + - localHost + " in your /etc/hosts file and retry."); + localHost + " in your /etc/hosts file or set the " + + ClusteringConstants.LOCAL_IP_ADDRESS + + " System property and retry."); } } catch (ChannelException e) { throw new ClusteringFault("Error starting Tribes channel", e); @@ -200,12 +202,14 @@ log.info("Local Tribes Member " + TribesUtil.getLocalHost(channel)); TribesUtil.printMembers(members); - if (configurationManager != null) { // If configuration management is enabled, get the latest config from a neighbour + // If configuration management is enabled, get the latest config from a neighbour + if (configurationManager != null) { configurationManager.setSender(sender); getInitializationMessage(members, sender, new GetConfigurationCommand()); } - if (contextManager != null) { // If context replication is enabled, get the latest state from a neighbour + // If context replication is enabled, get the latest state from a neighbour + if (contextManager != null) { contextManager.setSender(sender); channelListener.setContextManager(contextManager); getInitializationMessage(members, sender, new GetStateCommand()); @@ -214,7 +218,6 @@ } configurationContext. setNonReplicableProperty(ClusteringConstants.CLUSTER_INITIALIZED, "true"); - configurationContext.removeProperty(ClusteringConstants.BLOCK_ALL_REQUESTS); } /** @@ -322,5 +325,13 @@ if (channelListener != null) { channelListener.setConfigurationContext(configurationContext); } + } + + public boolean synchronizeAllMembers() { + Parameter syncAllParam = getParameter(ClusteringConstants.SYNCHRONIZE_ALL_MEMBERS); + if (syncAllParam == null) { + return true; + } + return Boolean.parseBoolean((String) syncAllParam.getValue()); } } Modified: webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml?rev=609597&r1=609596&r2=609597&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml (original) +++ webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml Mon Jan 7 05:22:14 2008 @@ -350,6 +350,7 @@ <cluster class="org.apache.axis2.cluster.tribes.TribesClusterManager"> <parameter name="param1">value1</parameter> <parameter name="domain">apache.axis2.domain</parameter> + <parameter name="synchronizeAll">true</parameter> <configurationManager class="org.apache.axis2.cluster.configuration.TribesConfigurationManager"> <listener class="org.apache.axis2.cluster.configuration.DefaultConfigurationManagerListener"/> </configurationManager> Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusterManager.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusterManager.java?rev=609597&r1=609596&r2=609597&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusterManager.java (original) +++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusterManager.java Mon Jan 7 05:22:14 2008 @@ -21,9 +21,8 @@ import org.apache.axis2.clustering.configuration.ConfigurationManager; import org.apache.axis2.clustering.context.ContextManager; -import org.apache.axis2.description.ParameterInclude; import org.apache.axis2.context.ConfigurationContext; -import org.apache.axis2.engine.Handler; +import org.apache.axis2.description.ParameterInclude; /** * This is the main interface in the Axis2 clustering implementation. @@ -70,5 +69,15 @@ * @param configurationContext */ void setConfigurationContext(ConfigurationContext configurationContext); + + /** + * Method to check whether all members in the cluster have to be kep in sync at all times. + * Typically, this will require each member in the cluster to ACKnowledge receipt of a + * particular message, which may have a significant performance hit. + * + * @return true - if all members in the cluster should be kept in sync at all times, + * false otherwise + */ + boolean synchronizeAllMembers(); } Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusteringConstants.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusteringConstants.java?rev=609597&r1=609596&r2=609597&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusteringConstants.java (original) +++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusteringConstants.java Mon Jan 7 05:22:14 2008 @@ -20,17 +20,31 @@ package org.apache.axis2.clustering; +/** + * All constants used by the Axis2 clustering implementation + */ public final class ClusteringConstants { private ClusteringConstants() { } public static final String AVOID_INITIATION_KEY = "AvoidInitiation"; + + /** + * The clustering domain/group. Nodes in the same group will belong to the same multicast domain. + * There will not be interference between nodes in different group. + */ public static final String DOMAIN = "domain"; + public static final String NODE_MANAGER_SERVICE = "Axis2NodeManager"; public static final String REQUEST_BLOCKING_HANDLER = "RequestBlockingHandler"; public static final String CLUSTER_INITIALIZED = "local_cluster.initialized"; public static final String TIME_TO_SEND = "local_cluster.time.to.send"; public static final String BLOCK_ALL_REQUESTS = "local_wso2wsas.block.requests"; public static final String LOCAL_IP_ADDRESS = "axis2.local.ip.address"; + + /** + * Synchronize the states of all members in the cluster + */ + public static final String SYNCHRONIZE_ALL_MEMBERS = "synchronizeAll"; } Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/context/Replicator.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/context/Replicator.java?rev=609597&r1=609596&r2=609597&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/context/Replicator.java (original) +++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/context/Replicator.java Mon Jan 7 05:22:14 2008 @@ -33,6 +33,9 @@ import java.util.ArrayList; import java.util.List; +/** + * Replicates serializable properties + */ public final class Replicator { private static final Log log = LogFactory.getLog(Replicator.class); @@ -77,7 +80,9 @@ AbstractContext[] contextArray = (AbstractContext[]) contexts.toArray(new AbstractContext[contexts.size()]); String msgUUID = contextManager.updateContexts(contextArray); - waitForACKs(contextManager, msgUUID, msgContext.getRootContext()); + if (getClusterManager(msgContext).synchronizeAllMembers()) { + waitForACKs(contextManager, msgUUID, msgContext.getRootContext()); + } } } @@ -95,7 +100,9 @@ ContextManager contextManager = getContextManager(abstractContext); if (!abstractContext.getPropertyDifferences().isEmpty()) { String msgUUID = contextManager.updateContext(abstractContext); - waitForACKs(contextManager, msgUUID, abstractContext.getRootContext()); + if (getClusterManager(abstractContext).synchronizeAllMembers()) { + waitForACKs(contextManager, msgUUID, abstractContext.getRootContext()); + } } } @@ -116,14 +123,18 @@ ContextManager contextManager = getContextManager(abstractContext); String msgUUID = contextManager.updateContext(abstractContext, propertyNames); if (msgUUID != null) { - waitForACKs(contextManager, msgUUID, abstractContext.getRootContext()); + if (getClusterManager(abstractContext).synchronizeAllMembers()) { + waitForACKs(contextManager, msgUUID, abstractContext.getRootContext()); + } } } + private static ClusterManager getClusterManager(AbstractContext abstractContext) { + return abstractContext.getRootContext().getAxisConfiguration().getClusterManager(); + } + private static ContextManager getContextManager(AbstractContext abstractContext) { - ClusterManager clusterManager = - abstractContext.getRootContext().getAxisConfiguration().getClusterManager(); - return clusterManager.getContextManager(); + return getClusterManager(abstractContext).getContextManager(); } /** @@ -162,6 +173,7 @@ private static void waitForACKs(ContextManager contextManager, String msgUUID, ConfigurationContext configCtx) throws ClusteringFault { + long start = System.currentTimeMillis(); // Wait till all members have ACKed receipt & successful processing of Modified: webservices/axis2/trunk/java/pom.xml URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/pom.xml?rev=609597&r1=609596&r2=609597&view=diff ============================================================================== --- webservices/axis2/trunk/java/pom.xml (original) +++ webservices/axis2/trunk/java/pom.xml Mon Jan 7 05:22:14 2008 @@ -17,255 +17,258 @@ ~ specific language governing permissions and limitations ~ under the License. --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <parent> - <groupId>org.apache</groupId> - <artifactId>apache</artifactId> - <version>3</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <groupId>org.apache.axis2</groupId> - <artifactId>axis2</artifactId> - <version>SNAPSHOT</version> - <packaging>pom</packaging> - <name>Apache Axis 2.0 - Root</name> - <modules> - <module>modules/adb</module> - <module>modules/adb-codegen</module> - <module>modules/addressing</module> - <module>modules/codegen</module> - <module>modules/fastinfoset</module> - <module>modules/integration</module> - <module>modules/java2wsdl</module> - <module>modules/jibx</module> - <module>modules/json</module> - <module>modules/kernel</module> - <module>modules/mex</module> - <module>modules/mex-mar</module> - <module>modules/mtompolicy</module> - <module>modules/parent</module> - <module>modules/ping</module> - <module>modules/samples/version</module> - <module>modules/soapmonitor</module> - <module>modules/spring</module> - <module>modules/tool/axis2-aar-maven-plugin</module> - <module>modules/tool/axis2-ant-plugin</module> - <module>modules/tool/axis2-eclipse-codegen-plugin</module> - <module>modules/tool/axis2-eclipse-service-plugin</module> - <module>modules/tool/axis2-idea-plugin</module> - <module>modules/tool/axis2-java2wsdl-maven-plugin</module> - <module>modules/tool/axis2-mar-maven-plugin</module> - <module>modules/tool/axis2-wsdl2code-maven-plugin</module> - <module>modules/webapp</module> - <module>modules/xmlbeans</module> - <module>modules/samples</module> - <module>modules/scripting</module> - <module>modules/rmi</module> - </modules> - <profiles> - <profile> - <activation> - <property> - <name>release</name> - </property> - </activation> - <modules> - <module>modules/documentation</module> - <module>modules/distribution</module> - </modules> - </profile> - <profile> - <id>java14</id> - <activation> - <jdk>1.4</jdk> - </activation> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-antrun-plugin</artifactId> - <executions> - <execution> - <id>axis2-jar</id> - <phase>package</phase> - <configuration> - <tasks> - <mkdir dir="target/lib"/> - <jar destfile="target/lib/axis2-${pom.version}.jar"> - <fileset dir="modules/java2wsdl/target/classes"/> - <fileset dir="modules/kernel/target/classes"/> - <fileset dir="modules/addressing/target/classes"/> - <fileset dir="modules/codegen/target/classes"/> - <fileset dir="modules/adb/target/classes"/> - <fileset dir="modules/adb-codegen/target/classes"/> - <fileset dir="modules/xmlbeans/target/classes"/> - </jar> - </tasks> - </configuration> - <goals> - <goal>run</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - <profile> - <id>java15</id> - <activation> - <jdk>1.5</jdk> - </activation> - <modules> - <module>modules/jaxbri</module> - <module>modules/metadata</module> - <module>modules/saaj-api</module> - <module>modules/saaj</module> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <groupId>org.apache</groupId> + <artifactId>apache</artifactId> + <version>3</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2</artifactId> + <version>SNAPSHOT</version> + <packaging>pom</packaging> + <name>Apache Axis 2.0 - Root</name> + <modules> + <module>modules/adb</module> + <module>modules/adb-codegen</module> + <module>modules/addressing</module> + <module>modules/codegen</module> + <module>modules/fastinfoset</module> + <module>modules/integration</module> + <module>modules/java2wsdl</module> + <module>modules/jibx</module> + <module>modules/json</module> + <module>modules/kernel</module> + <module>modules/mex</module> + <module>modules/mex-mar</module> + <module>modules/mtompolicy</module> + <module>modules/parent</module> + <module>modules/ping</module> + <module>modules/samples/version</module> + <module>modules/soapmonitor</module> + <module>modules/spring</module> + <module>modules/tool/axis2-aar-maven-plugin</module> + <module>modules/tool/axis2-ant-plugin</module> + <module>modules/tool/axis2-eclipse-codegen-plugin</module> + <module>modules/tool/axis2-eclipse-service-plugin</module> + <module>modules/tool/axis2-idea-plugin</module> + <module>modules/tool/axis2-java2wsdl-maven-plugin</module> + <module>modules/tool/axis2-mar-maven-plugin</module> + <module>modules/tool/axis2-wsdl2code-maven-plugin</module> + <module>modules/webapp</module> + <module>modules/xmlbeans</module> + <module>modules/samples</module> + <module>modules/scripting</module> + <module>modules/rmi</module> + </modules> + <profiles> + <profile> + <activation> + <property> + <name>release</name> + </property> + </activation> + <modules> + <module>modules/documentation</module> + <module>modules/distribution</module> + </modules> + </profile> + <profile> + <id>java14</id> + <activation> + <jdk>1.4</jdk> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java15</id> + <activation> + <jdk>1.5</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> <module>modules/jws-api</module> - <module>modules/jaxws-api</module> - <module>modules/jaxws</module> - <module>modules/clustering</module> - <module>modules/corba</module> - </modules> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-antrun-plugin</artifactId> - <executions> - <execution> - <id>axis2-jar</id> - <phase>package</phase> - <configuration> - <tasks> - <mkdir dir="target/lib"/> - <jar destfile="target/lib/axis2-${pom.version}.jar"> - <fileset dir="modules/java2wsdl/target/classes"/> - <fileset dir="modules/kernel/target/classes"/> - <fileset dir="modules/addressing/target/classes"/> - <fileset dir="modules/codegen/target/classes"/> - <fileset dir="modules/adb/target/classes"/> - <fileset dir="modules/adb-codegen/target/classes"/> - <fileset dir="modules/xmlbeans/target/classes"/> - <fileset dir="modules/clustering/target/classes"/> - </jar> - </tasks> - </configuration> - <goals> - <goal>run</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - <profile> - <id>java16</id> - <activation> - <jdk>1.6</jdk> - </activation> - <modules> - <module>modules/jaxbri</module> - <module>modules/metadata</module> - <module>modules/saaj-api</module> - <module>modules/saaj</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + <module>modules/corba</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java16</id> + <activation> + <jdk>1.6</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> <module>modules/jws-api</module> - <module>modules/jaxws-api</module> - <module>modules/jaxws</module> - <module>modules/clustering</module> - <module>modules/corba</module> - </modules> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-antrun-plugin</artifactId> - <executions> - <execution> - <id>axis2-jar</id> - <phase>package</phase> - <configuration> - <tasks> - <mkdir dir="target/lib"/> - <jar destfile="target/lib/axis2-${pom.version}.jar"> - <fileset dir="modules/java2wsdl/target/classes"/> - <fileset dir="modules/kernel/target/classes"/> - <fileset dir="modules/addressing/target/classes"/> - <fileset dir="modules/codegen/target/classes"/> - <fileset dir="modules/adb/target/classes"/> - <fileset dir="modules/adb-codegen/target/classes"/> - <fileset dir="modules/xmlbeans/target/classes"/> - <fileset dir="modules/clustering/target/classes"/> - </jar> - </tasks> - </configuration> - <goals> - <goal>run</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> - <ciManagement> - <system>continuum</system> - <url>http://vmbuild.apache.org/continuum</url> - <notifiers> - <notifier> - <configuration> - <ADDRESS>[EMAIL PROTECTED]</ADDRESS> - </configuration> - </notifier> - </notifiers> - </ciManagement> - <scm> - <connection> - scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ - </connection> - <developerConnection> - scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ - </developerConnection> - <url>http://svn.apache.org/viewvc/webservices/webservices/axis2/trunk/java/</url> - </scm> - <distributionManagement> - <repository> - <id>apache-repo</id> - <name>Maven Central Repository</name> - <url> - scpexe://people.apache.org//www/people.apache.org/repo/m2-ibiblio-rsync-repository</url> - </repository> - <snapshotRepository> - <id>apache-snapshots</id> - <name>Apache Development Repository</name> - <url>scpexe://people.apache.org//www/people.apache.org/repo/m2-snapshot-repository</url> - </snapshotRepository> - </distributionManagement> - <build> - <plugins> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>build-helper-maven-plugin</artifactId> - <executions> - <execution> - <id>axis2-jar-package</id> - <phase>package</phase> - <goals> - <goal>attach-artifact</goal> - </goals> - <configuration> - <artifacts> - <artifact> - <file>target/lib/axis2-${pom.version}.jar</file> - <type>jar</type> - </artifact> - </artifacts> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + <module>modules/corba</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <ciManagement> + <system>continuum</system> + <url>http://vmbuild.apache.org/continuum</url> + <notifiers> + <notifier> + <configuration> + <ADDRESS>[EMAIL PROTECTED]</ADDRESS> + </configuration> + </notifier> + </notifiers> + </ciManagement> + <scm> + <connection> + scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </connection> + <developerConnection> + scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </developerConnection> + <url>http://svn.apache.org/viewvc/webservices/webservices/axis2/trunk/java/</url> + </scm> + <distributionManagement> + <repository> + <id>apache-repo</id> + <name>Maven Central Repository</name> + <url> + scpexe://people.apache.org//www/people.apache.org/repo/m2-ibiblio-rsync-repository + </url> + </repository> + <snapshotRepository> + <id>apache-snapshots</id> + <name>Apache Development Repository</name> + <url>scpexe://people.apache.org//www/people.apache.org/repo/m2-snapshot-repository</url> + </snapshotRepository> + </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar-package</id> + <phase>package</phase> + <goals> + <goal>attach-artifact</goal> + </goals> + <configuration> + <artifacts> + <artifact> + <file>target/lib/axis2-${pom.version}.jar</file> + <type>jar</type> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> </project> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]