[jboss-cvs] JBoss Messaging SVN: r3627 - in trunk: docs/examples and 17 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jan 24 03:43:34 EST 2008
Author: ataylor
Date: 2008-01-24 03:43:34 -0500 (Thu, 24 Jan 2008)
New Revision: 3627
Added:
trunk/docs/examples/embedded/
trunk/docs/examples/embedded/src/
trunk/docs/examples/embedded/src/org/
trunk/docs/examples/embedded/src/org/jboss/
trunk/docs/examples/embedded/src/org/jboss/example/
trunk/docs/examples/embedded/src/org/jboss/example/embedded/
trunk/docs/examples/embedded/src/org/jboss/example/embedded/EmbeddedExample.java
trunk/docs/examples/embedded/src/org/jboss/example/embedded/MessagingServerFactory.java
trunk/src/main/org/jboss/jms/server/endpoint/ConnectionFactoryAdvisedPacketHandler.java
Removed:
trunk/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactory.java
trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionFactoryEndpoint.java
Modified:
trunk/messaging.ipr
trunk/src/etc/server/default/deploy/jbm-jndi.xml
trunk/src/main/org/jboss/jms/client/impl/ClientConnectionFactoryImpl.java
trunk/src/main/org/jboss/jms/jndi/JNDIObjectDeployer.java
trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionEndpoint.java
trunk/src/main/org/jboss/messaging/core/Configuration.java
trunk/src/main/org/jboss/messaging/core/impl/server/MessagingServerImpl.java
trunk/src/main/org/jboss/messaging/core/remoting/codec/ConnectionFactoryCreateConnectionRequestCodec.java
trunk/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConnectionRequest.java
trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/PacketTypeTest.java
trunk/tests/src/org/jboss/test/messaging/tools/container/LocalTestServer.java
Log:
changed connectionfactory so that only one packet handler deals with all requests.
Added: trunk/docs/examples/embedded/src/org/jboss/example/embedded/EmbeddedExample.java
===================================================================
--- trunk/docs/examples/embedded/src/org/jboss/example/embedded/EmbeddedExample.java (rev 0)
+++ trunk/docs/examples/embedded/src/org/jboss/example/embedded/EmbeddedExample.java 2008-01-24 08:43:34 UTC (rev 3627)
@@ -0,0 +1,65 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.example.embedded;
+
+import org.jboss.jms.client.api.ClientConnection;
+import org.jboss.jms.client.api.ClientConsumer;
+import org.jboss.jms.client.api.ClientSession;
+import org.jboss.jms.client.impl.ClientConnectionFactoryImpl;
+import org.jboss.jms.message.JBossMessage;
+import org.jboss.messaging.core.Destination;
+import org.jboss.messaging.core.DestinationType;
+import org.jboss.messaging.core.MessagingServer;
+import org.jboss.messaging.core.impl.DestinationImpl;
+import org.jboss.messaging.core.impl.MessageImpl;
+
+import javax.jms.Session;
+
+/**
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
+ */
+public class EmbeddedExample
+{
+ public static void main(String args[]) throws Exception
+ {
+ MessagingServer messagingServer = MessagingServerFactory.createMessagingServer();
+ messagingServer.start();
+ messagingServer.createQueue("Queue1");
+ ClientConnectionFactoryImpl cf = new ClientConnectionFactoryImpl("tcp://localhost:5400?timeout=5");
+ ClientConnection clientConnection = cf.createConnection(null, null);
+ ClientSession clientSession = clientConnection.createClientSession(false, Session.AUTO_ACKNOWLEDGE, false);
+
+ MessageImpl message = new MessageImpl();
+ Destination destination = new DestinationImpl(DestinationType.QUEUE, "Queue1", false);
+ message.putHeader(org.jboss.messaging.core.Message.TEMP_DEST_HEADER_NAME, destination);
+ message.setPayload("hello".getBytes());
+ clientSession.send(message);
+
+ ClientConsumer clientConsumer = clientSession.createClientConsumer(destination, null, false, "me", false);
+ clientConnection.start();
+ JBossMessage m = (JBossMessage) clientConsumer.receive(0);
+ System.out.println("m = " + new String(m.getCoreMessage().getPayload()));
+ clientConnection.close();
+
+ messagingServer.stop();
+ }
+}
Added: trunk/docs/examples/embedded/src/org/jboss/example/embedded/MessagingServerFactory.java
===================================================================
--- trunk/docs/examples/embedded/src/org/jboss/example/embedded/MessagingServerFactory.java (rev 0)
+++ trunk/docs/examples/embedded/src/org/jboss/example/embedded/MessagingServerFactory.java 2008-01-24 08:43:34 UTC (rev 3627)
@@ -0,0 +1,82 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.example.embedded;
+
+import org.jboss.jms.server.plugin.contract.JMSUserManager;
+import org.jboss.messaging.core.Configuration;
+import org.jboss.messaging.core.MessagingServer;
+import org.jboss.messaging.core.impl.bdbje.BDBJEEnvironment;
+import org.jboss.messaging.core.impl.bdbje.BDBJEPersistenceManager;
+import org.jboss.messaging.core.impl.bdbje.integration.RealBDBJEEnvironment;
+import org.jboss.messaging.core.impl.server.MessagingServerImpl;
+import org.jboss.messaging.core.remoting.impl.mina.MinaService;
+import org.jboss.messaging.microcontainer.AuthenticationManager;
+
+/**
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
+ */
+public class MessagingServerFactory
+{
+ public static MessagingServer createMessagingServer() throws Exception
+ {
+ MinaService minaService = new MinaService("tcp", "localhost", 5400);
+ minaService.start();
+ MessagingServerImpl messagingServer = new MessagingServerImpl();
+
+ messagingServer.setMinaService(minaService);
+ Configuration configuration = new Configuration();
+ configuration.setMessagingServerID(0);
+ messagingServer.setConfiguration(configuration);
+ messagingServer.setJmsUserManager(new JMSUserManager()
+ {
+ public String getPreConfiguredClientID(String username) throws Exception
+ {
+ return "0";
+ }
+
+ public void start() throws Exception
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void stop() throws Exception
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+ });
+ BDBJEPersistenceManager persistenceManager = new BDBJEPersistenceManager();
+ persistenceManager.setLargeMessageRepository("${user.home}/bdbje/large");
+ persistenceManager.setMinLargeMessageSize(1000000);
+ BDBJEEnvironment bdbjeEnvironment = new RealBDBJEEnvironment();
+ bdbjeEnvironment.setEnvironmentPath("${user.home}/bdbje/env");
+ bdbjeEnvironment.setCreateEnvironment(true);
+ bdbjeEnvironment.setSyncVM(true);
+ bdbjeEnvironment.setSyncOS(false);
+ bdbjeEnvironment.setMemoryCacheSize(-1);
+ persistenceManager.setEnvironment(bdbjeEnvironment);
+ bdbjeEnvironment.start();
+ persistenceManager.start();
+ messagingServer.setPersistenceManager(persistenceManager);
+ messagingServer.setAuthenticationManager(new AuthenticationManager());
+ return messagingServer;
+ }
+}
Modified: trunk/messaging.ipr
===================================================================
--- trunk/messaging.ipr 2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/messaging.ipr 2008-01-24 08:43:34 UTC (rev 3627)
@@ -217,59 +217,59 @@
</component>
<component name="IntelliJadProjectConfigComponent">
<config>
- <i type="boolean">false</i>
+ <safe type="boolean">false</safe>
+ <sort type="boolean">false</sort>
+ <noclass type="boolean">false</noclass>
+ <stat type="boolean">false</stat>
+ <clear-and-close-console-on-success type="boolean">false</clear-and-close-console-on-success>
+ <l type="integer">64</l>
+ <noconv type="boolean">false</noconv>
+ <s type="string">java</s>
+ <decompile-to-memory type="boolean">true</decompile-to-memory>
+ <pe type="string">_ex</pe>
+ <af type="boolean">false</af>
+ <always-exclude-recursively type="boolean">false</always-exclude-recursively>
<pm type="string">_mth</pm>
- <r type="boolean">false</r>
- <nocast type="boolean">false</nocast>
- <pl type="string">_lcl</pl>
- <nodos type="boolean">false</nodos>
- <clear-and-close-console-on-success type="boolean">false</clear-and-close-console-on-success>
- <noinner type="boolean">false</noinner>
- <lnc type="boolean">false</lnc>
- <a type="boolean">false</a>
- <lradix type="integer">10</lradix>
- <pf type="string">_fld</pf>
- <dead type="boolean">false</dead>
- <indentation type="integer">4</indentation>
- <pp type="string">_prm</pp>
+ <ff type="boolean">false</ff>
+ <decompile-on-navigation type="string">Always</decompile-on-navigation>
<space type="boolean">false</space>
- <radix type="integer">10</radix>
<v type="boolean">false</v>
- <af type="boolean">false</af>
- <reformat-according-to-style type="boolean">false</reformat-according-to-style>
- <nofd type="boolean">false</nofd>
- <noclass type="boolean">false</noclass>
<o type="boolean">false</o>
- <ff type="boolean">false</ff>
<use-project-specific-settings type="boolean">false</use-project-specific-settings>
- <noconv type="boolean">false</noconv>
- <f type="boolean">false</f>
+ <t type="boolean">false</t>
<read-only type="boolean">false</read-only>
- <nolvt type="boolean">false</nolvt>
- <pe type="string">_ex</pe>
- <safe type="boolean">false</safe>
<b type="boolean">false</b>
- <exclusion-table-model type="table-model" model-class="net.stevechaloner.intellijad.config.ExclusionTableModel" content-types="string,boolean,boolean" />
- <nocode type="boolean">false</nocode>
- <sort type="boolean">false</sort>
- <decompile-to-memory type="boolean">true</decompile-to-memory>
+ <create-output-directory type="boolean">false</create-output-directory>
+ <jad-path type="string" />
<dis type="boolean">false</dis>
<noctor type="boolean">false</noctor>
- <jad-path type="string" />
+ <pp type="string">_prm</pp>
+ <noinner type="boolean">false</noinner>
+ <indentation type="integer">4</indentation>
+ <f type="boolean">false</f>
+ <dead type="boolean">false</dead>
+ <nocast type="boolean">false</nocast>
+ <pv type="integer">3</pv>
+ <nl type="boolean">false</nl>
+ <nodos type="boolean">false</nodos>
+ <pf type="string">_fld</pf>
+ <lnc type="boolean">false</lnc>
+ <radix type="integer">10</radix>
+ <nofd type="boolean">false</nofd>
+ <r type="boolean">false</r>
+ <nolvt type="boolean">false</nolvt>
+ <reformat-according-to-style type="boolean">false</reformat-according-to-style>
+ <a type="boolean">false</a>
+ <i type="boolean">false</i>
+ <nocode type="boolean">false</nocode>
<pc type="string">_cls</pc>
- <decompile-on-navigation type="string">Always</decompile-on-navigation>
+ <pa type="string" />
+ <pl type="string">_lcl</pl>
+ <lradix type="integer">10</lradix>
+ <clear type="boolean">false</clear>
<d type="string" />
- <nl type="boolean">false</nl>
- <always-exclude-recursively type="boolean">false</always-exclude-recursively>
- <s type="string">java</s>
- <pv type="integer">3</pv>
<nonlb type="boolean">false</nonlb>
- <pa type="string" />
- <create-output-directory type="boolean">false</create-output-directory>
- <l type="integer">64</l>
- <stat type="boolean">false</stat>
- <clear type="boolean">false</clear>
- <t type="boolean">false</t>
+ <exclusion-table-model type="table-model" model-class="net.stevechaloner.intellijad.config.ExclusionTableModel" content-types="string,boolean,boolean" />
</config>
</component>
<component name="JavacSettings">
Modified: trunk/src/etc/server/default/deploy/jbm-jndi.xml
===================================================================
--- trunk/src/etc/server/default/deploy/jbm-jndi.xml 2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/etc/server/default/deploy/jbm-jndi.xml 2008-01-24 08:43:34 UTC (rev 3627)
@@ -36,10 +36,6 @@
<client-id>MyClientID</client-id>
<!-- PrefetchSize determines the approximate maximum number of messages the client consumer will buffer locally -->
<prefetch-size>150</prefetch-size>
- <!-- Paging params to be used for temporary queues -->
- <default-temp-queue-full-size>200000</default-temp-queue-full-size>
- <default-temp-queue-page-size>2000</default-temp-queue-page-size>
- <default-temp-queue-down-cache-size>2000</default-temp-queue-down-cache-size>
<!-- The batch size to use when using the DUPS_OK_ACKNOWLEDGE acknowledgement mode -->
<dups-ok-batch-size>5000</dups-ok-batch-size>
<!-- Does this connection factory support automatic failover? -->
@@ -50,8 +46,6 @@
<load-balancing-factory>org.jboss.jms.client.plugin.RoundRobinLoadBalancingFactory</load-balancing-factory>
<!-- Whether we should be strict TCK compliant, i.e. how we deal with foreign messages, defaults to false-->
<strict-tck>true</strict-tck>
- <!-- Disable JBoss Remoting Connector sanity checks - There is rarely a good reason to set this to true -->
- <disable-remoting-checks>false</disable-remoting-checks>
</connection-factory>
<queue name="DLQ">
Modified: trunk/src/main/org/jboss/jms/client/impl/ClientConnectionFactoryImpl.java
===================================================================
--- trunk/src/main/org/jboss/jms/client/impl/ClientConnectionFactoryImpl.java 2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/jms/client/impl/ClientConnectionFactoryImpl.java 2008-01-24 08:43:34 UTC (rev 3627)
@@ -21,11 +21,8 @@
*/
package org.jboss.jms.client.impl;
-import java.io.Serializable;
-
-import javax.jms.JMSException;
-
import org.jboss.jms.client.api.ClientConnection;
+import org.jboss.jms.client.plugin.LoadBalancingFactory;
import org.jboss.jms.client.remoting.ConsolidatedRemotingConnectionListener;
import org.jboss.jms.client.remoting.MessagingRemotingConnection;
import org.jboss.jms.exception.MessagingJMSException;
@@ -36,6 +33,9 @@
import org.jboss.messaging.util.Logger;
import org.jboss.messaging.util.Version;
+import javax.jms.JMSException;
+import java.io.Serializable;
+
/**
* The client-side ConnectionFactory delegate class.
*
@@ -43,6 +43,7 @@
* @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
* @author <a href="mailto:clebert.suconic at jboss.org">Clebert Suconic</a>
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
*
* @version <tt>$Revision: 3602 $</tt>
*
@@ -51,14 +52,13 @@
public class ClientConnectionFactoryImpl implements Serializable
{
// Constants ------------------------------------------------------------------------------------
+ public static final String id = "CONNECTION_FACTORY_ID";
private static final long serialVersionUID = 2512460695662741413L;
private static final Logger log = Logger.getLogger(ClientConnectionFactoryImpl.class);
// Attributes -----------------------------------------------------------------------------------
-
- private String id;
private String serverLocatorURI;
@@ -68,6 +68,20 @@
private boolean clientPing;
+ private String clientID;
+
+ private int prefetchSize = 150;
+
+ private boolean slowConsumers;
+
+ private boolean supportsFailover;
+
+ private boolean supportsLoadBalancing;
+
+ private LoadBalancingFactory loadBalancingFactory;
+
+ private int dupsOKBatchSize = 1000;
+
private boolean strictTck;
// Static ---------------------------------------------------------------------------------------
@@ -78,7 +92,7 @@
Version versionToUse;
- if (connectionVersion.getProviderIncrementingVersion() <=
+ if (connectionVersion != null && connectionVersion.getProviderIncrementingVersion() <=
clientVersion.getProviderIncrementingVersion())
{
versionToUse = connectionVersion;
@@ -93,17 +107,25 @@
// Constructors ---------------------------------------------------------------------------------
- public ClientConnectionFactoryImpl(String id, int serverID,
- String serverLocatorURI, Version serverVersion, boolean clientPing, boolean strictTck)
+ public ClientConnectionFactoryImpl( int serverID,
+ String serverLocatorURI, Version serverVersion, boolean clientPing, boolean strictTck,
+ int prefetchSize, int dupsOKBatchSize, String clientID)
{
- this.id = id;
this.serverID = serverID;
this.serverLocatorURI = serverLocatorURI;
this.serverVersion = serverVersion;
this.clientPing = clientPing;
this.strictTck = strictTck;
+ this.prefetchSize = prefetchSize;
+ this.dupsOKBatchSize = dupsOKBatchSize;
+ this.clientID = clientID;
}
-
+
+ public ClientConnectionFactoryImpl(String serverLocatorURI)
+ {
+ this.serverLocatorURI = serverLocatorURI;
+ }
+
public ClientConnectionFactoryImpl()
{
}
@@ -124,7 +146,8 @@
String sessionID = remotingConnection.getSessionID();
CreateConnectionRequest request =
- new CreateConnectionRequest(v, sessionID, JMSClientVMIdentifier.instance, username, password);
+ new CreateConnectionRequest(v, sessionID, JMSClientVMIdentifier.instance, username, password,
+ prefetchSize, dupsOKBatchSize, clientID);
CreateConnectionResponse response =
(CreateConnectionResponse)remotingConnection.sendBlocking(id, request);
@@ -190,6 +213,7 @@
return strictTck;
}
+
// Protected ------------------------------------------------------------------------------------
// Package Private ------------------------------------------------------------------------------
Modified: trunk/src/main/org/jboss/jms/jndi/JNDIObjectDeployer.java
===================================================================
--- trunk/src/main/org/jboss/jms/jndi/JNDIObjectDeployer.java 2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/jms/jndi/JNDIObjectDeployer.java 2008-01-24 08:43:34 UTC (rev 3627)
@@ -25,8 +25,6 @@
import org.jboss.jms.client.impl.ClientConnectionFactoryImpl;
import org.jboss.jms.destination.JBossQueue;
import org.jboss.jms.destination.JBossTopic;
-import org.jboss.jms.server.connectionfactory.ConnectionFactory;
-import org.jboss.jms.server.endpoint.ServerConnectionFactoryEndpoint;
import org.jboss.logging.Logger;
import org.jboss.messaging.core.MessagingServer;
import org.jboss.messaging.core.remoting.ServerLocator;
@@ -65,15 +63,11 @@
private static final String CLIENTID_ELEMENT = "client-id";
private static final String PREFETECH_SIZE_ELEMENT = "prefetch-size";
- private static final String DEF_TEMP_Q_FULL_SIZE = "default-temp-queue-full-size";
- private static final String DEF_TEMP_Q_PAGE_SIZE_SIZE = "default-temp-queue-page-size";
- private static final String DEF_TEMP_Q_DOWN_CACHE_SIZE = "default-temp-queue-down-cache-size";
private static final String DUPS_OK_BATCH_SIZE = "dups-ok-batch-size";
private static final String SUPPORTS_FAILOVER = "supports-failover";
private static final String SUPPORTS_LOAD_BALANCING = "supports-load-balancing";
private static final String LOAD_BALANCING_FACTORY = "load-balancing-factory";
private static final String STRICT_TCK = "strict-tck";
- private static final String DISABLE_REMOTING_CHECKS = "disable-remoting-checks";
private static final String ENTRY_NODE_NAME = "entry";
private static final String CONNECTION_FACTORY_NODE_NAME = "connection-factory";
private static final String QUEUE_NODE_NAME = "queue";
@@ -117,6 +111,7 @@
/**
* the names of the elements to deploy
+ *
* @return the names of the elements todeploy
*/
public String[] getElementTagName()
@@ -126,6 +121,7 @@
/**
* deploy an element
+ *
* @param node the element to deploy
* @throws Exception .
*/
@@ -172,6 +168,7 @@
/**
* creates the object to bind, this will either be a JBossConnectionFActory, JBossQueue or JBossTopic
+ *
* @param node the config
* @return the object to bind
* @throws Exception .
@@ -180,37 +177,64 @@
{
if (node.getNodeName().equals(CONNECTION_FACTORY_NODE_NAME))
{
- ConnectionFactory connectionFactory = createConnectionFactory(node);
ServerLocator serverLocator = messagingServer.getMinaService().getLocator();
log.info("Server locator is " + serverLocator);
log.info(this + " started");
// See http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4076040#4076040
- final String id = connectionFactory.getName();
+ final String id = node.getAttributes().getNamedItem(getKeyAttribute()).getNodeValue();
Version version = messagingServer.getVersion();
- ServerConnectionFactoryEndpoint endpoint =
- new ServerConnectionFactoryEndpoint(connectionFactory.getName(), id, messagingServer, connectionFactory.getClientID(),
- connectionFactory.getPrefetchSize(),
- connectionFactory.getDefaultTempQueueFullSize(),
- connectionFactory.getDefaultTempQueuePageSize(),
- connectionFactory.getDefaultTempQueueDownCacheSize(),
- connectionFactory.getDupsOKBatchSize());
+ NodeList attributes = node.getChildNodes();
+ boolean cfStrictTck = false;
+ int prefetchSize = 150;
+ int dupsOKBatchSize = 1000;
+ String clientID = null;
+ for (int j = 0; j < attributes.getLength(); j++)
+ {
+ if (STRICT_TCK.equalsIgnoreCase(attributes.item(j).getNodeName()))
+ {
+ cfStrictTck = Boolean.parseBoolean(attributes.item(j).getTextContent().trim());
+ }
+ else if (PREFETECH_SIZE_ELEMENT.equalsIgnoreCase(attributes.item(j).getNodeName()))
+ {
+ prefetchSize = Integer.parseInt(attributes.item(j).getTextContent().trim());
+ }
+ else if (CLIENTID_ELEMENT.equalsIgnoreCase(attributes.item(j).getNodeName()))
+ {
+ clientID = attributes.item(j).getTextContent();
+ }
+ if (DUPS_OK_BATCH_SIZE.equalsIgnoreCase(attributes.item(j).getNodeName()))
+ {
+ dupsOKBatchSize = Integer.parseInt(attributes.item(j).getTextContent().trim());
+ }
+ if (SUPPORTS_FAILOVER.equalsIgnoreCase(attributes.item(j).getNodeName()))
+ {
+ //setSupportsFailover(Boolean.parseBoolean(attributes.item(j).getTextContent().trim()));
+ }
+ if (SUPPORTS_LOAD_BALANCING.equalsIgnoreCase(attributes.item(j).getNodeName()))
+ {
+ //setSupportsLoadBalancing(Boolean.parseBoolean(attributes.item(j).getTextContent().trim()));
+ }
+ if (LOAD_BALANCING_FACTORY.equalsIgnoreCase(attributes.item(j).getNodeName()))
+ {
+ //setLoadBalancingFactory(attributes.item(j).getTextContent().trim());
+ }
+ }
+// The server peer strict setting overrides the connection factory
+ boolean useStrict = messagingServer.getConfiguration().isStrictTck() || cfStrictTck;
- //The server peer strict setting overrides the connection factory
- boolean useStrict = messagingServer.getConfiguration().isStrictTck() || connectionFactory.isStrictTck();
-
ClientConnectionFactoryImpl delegate =
- new ClientConnectionFactoryImpl(id, messagingServer.getConfiguration().getMessagingServerID(),
- serverLocator.getURI(), version, false, useStrict);
+ new ClientConnectionFactoryImpl(messagingServer.getConfiguration().getMessagingServerID(),
+ serverLocator.getURI(), version, false, useStrict, prefetchSize, dupsOKBatchSize, clientID);
log.debug(this + " created local delegate " + delegate);
// Registering with the dispatcher should always be the last thing otherwise a client could
// use a partially initialised object
- messagingServer.getMinaService().getDispatcher().register(endpoint.newHandler());
+ //messagingServer.getMinaService().getDispatcher().register(endpoint.newHandler());
return new JBossConnectionFactory(delegate);
}
else if (node.getNodeName().equals(QUEUE_NODE_NAME))
@@ -232,6 +256,7 @@
/**
* undeploys an element
+ *
* @param node the element to undeploy
* @throws Exception .
*/
@@ -250,71 +275,4 @@
return "jbm-jndi.xml";
}
- /**
- * creates a connection factory
- * @param node the config
- * @return a ConnectionFactory
- * @throws Exception .
- */
- private ConnectionFactory createConnectionFactory(Node node) throws Exception
- {
- String clientId = null;
- String name = node.getAttributes().getNamedItem(getKeyAttribute()).getNodeValue();
- ConnectionFactory connectionFactory = new ConnectionFactory(clientId);
- connectionFactory.setName(name);
-
- NodeList attributes = node.getChildNodes();
- for (int j = 0; j < attributes.getLength(); j++)
- {
- if (CLIENTID_ELEMENT.equalsIgnoreCase(attributes.item(j).getNodeName()))
- {
- clientId = attributes.item(j).getTextContent();
- connectionFactory.setClientID(clientId);
- }
-
- if (PREFETECH_SIZE_ELEMENT.equalsIgnoreCase(attributes.item(j).getNodeName()))
- {
- connectionFactory.setPrefetchSize(Integer.parseInt(attributes.item(j).getTextContent().trim()));
- }
- if (DEF_TEMP_Q_FULL_SIZE.equalsIgnoreCase(attributes.item(j).getNodeName()))
- {
- connectionFactory.setDefaultTempQueueFullSize(Integer.parseInt(attributes.item(j).getTextContent().trim()));
- }
- if (DEF_TEMP_Q_PAGE_SIZE_SIZE.equalsIgnoreCase(attributes.item(j).getNodeName()))
- {
- connectionFactory.setDefaultTempQueuePageSize(Integer.parseInt(attributes.item(j).getTextContent().trim()));
- }
- if (DEF_TEMP_Q_DOWN_CACHE_SIZE.equalsIgnoreCase(attributes.item(j).getNodeName()))
- {
- connectionFactory.setDefaultTempQueueDownCacheSize(Integer.parseInt(attributes.item(j).getTextContent().trim()));
- }
- if (DUPS_OK_BATCH_SIZE.equalsIgnoreCase(attributes.item(j).getNodeName()))
- {
- connectionFactory.setDupsOKBatchSize(Integer.parseInt(attributes.item(j).getTextContent().trim()));
- }
- if (SUPPORTS_FAILOVER.equalsIgnoreCase(attributes.item(j).getNodeName()))
- {
- connectionFactory.setSupportsFailover(Boolean.parseBoolean(attributes.item(j).getTextContent().trim()));
- }
- if (SUPPORTS_LOAD_BALANCING.equalsIgnoreCase(attributes.item(j).getNodeName()))
- {
- connectionFactory.setSupportsLoadBalancing(Boolean.parseBoolean(attributes.item(j).getTextContent().trim()));
- }
- if (LOAD_BALANCING_FACTORY.equalsIgnoreCase(attributes.item(j).getNodeName()))
- {
- connectionFactory.setLoadBalancingFactory(attributes.item(j).getTextContent().trim());
- }
- if (STRICT_TCK.equalsIgnoreCase(attributes.item(j).getNodeName()))
- {
- connectionFactory.setStrictTck(Boolean.parseBoolean(attributes.item(j).getTextContent().trim()));
- }
- if (DISABLE_REMOTING_CHECKS.equalsIgnoreCase(attributes.item(j).getNodeName()))
- {
- connectionFactory.setDisableRemotingChecks(Boolean.parseBoolean(attributes.item(j).getTextContent().trim()));
- }
-
- }
- return connectionFactory;
- }
-
}
Deleted: trunk/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactory.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactory.java 2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactory.java 2008-01-24 08:43:34 UTC (rev 3627)
@@ -1,244 +0,0 @@
-/**
- * JBoss, Home of Professional Open Source
- *
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package org.jboss.jms.server.connectionfactory;
-
-import java.util.List;
-
-import org.jboss.jms.client.plugin.LoadBalancingFactory;
-import org.jboss.messaging.util.Logger;
-
-/**
- * A deployable JBoss Messaging connection factory.
- *
- * The default connection factory does not support load balancing or
- * automatic failover.
- *
- *
- * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- * @author <a href="mailto:ataylor at redhat.com">Andy Taylor</a>
- * @version <tt>$Revision$</tt>
- *
- * $Id$
- */
-public class ConnectionFactory
-{
- // Constants ------------------------------------------------------------------------------------
-
- // Static ---------------------------------------------------------------------------------------
- private static final Logger log = Logger.getLogger(ConnectionFactory.class);
- // Attributes -----------------------------------------------------------------------------------
-
- private String clientID;
-
- private List<String> jndiBindings;
-
- private int prefetchSize = 150;
-
- private boolean slowConsumers;
-
- private boolean supportsFailover;
-
- private boolean supportsLoadBalancing;
-
- private LoadBalancingFactory loadBalancingFactory;
-
- private int defaultTempQueueFullSize = 200000;
-
- private int defaultTempQueuePageSize = 2000;
-
- private int defaultTempQueueDownCacheSize = 2000;
-
- private int dupsOKBatchSize = 1000;
-
- private boolean strictTck;
-
- private boolean disableRemotingChecks;
-
- private String name;
- // Constructors ---------------------------------------------------------------------------------
-
- public ConnectionFactory()
- {
- this(null);
- }
-
- public ConnectionFactory(String clientID)
- {
- this.clientID = clientID;
-
- // by default, a clustered connection uses a round-robin load balancing policy
- this.loadBalancingFactory = LoadBalancingFactory.getDefaultFactory();
- }
-
- // ServiceMBeanSupport overrides ----------------------------------------------------------------
-
-
- // JMX managed attributes -----------------------------------------------------------------------
-
-
- public void setClientID(String clientID)
- {
- this.clientID = clientID;
- }
-
- public int getDefaultTempQueueFullSize()
- {
- return defaultTempQueueFullSize;
- }
-
- public void setDefaultTempQueueFullSize(int size)
- {
- this.defaultTempQueueFullSize = size;
- }
-
- public int getDefaultTempQueuePageSize()
- {
- return defaultTempQueuePageSize;
- }
-
- public void setDefaultTempQueuePageSize(int size)
- {
- this.defaultTempQueuePageSize = size;
- }
-
- public int getDefaultTempQueueDownCacheSize()
- {
- return defaultTempQueueDownCacheSize;
- }
-
- public void setDefaultTempQueueDownCacheSize(int size)
- {
- this.defaultTempQueueDownCacheSize = size;
- }
-
- public int getPrefetchSize()
- {
- return prefetchSize;
- }
-
- public void setPrefetchSize(int prefetchSize)
- {
- this.prefetchSize = prefetchSize;
- }
-
- public boolean isSlowConsumers()
- {
- return slowConsumers;
- }
-
- public void setSlowConsumers(boolean slowConsumers)
- {
- this.slowConsumers = slowConsumers;
- }
-
- public String getClientID()
- {
- return clientID;
- }
-
- public void setJNDIBindings(List<String> bindings) throws Exception
- {
- jndiBindings = bindings;
- }
-
- public List<String> getJNDIBindings()
- {
- if (jndiBindings == null)
- {
- return null;
- }
- return jndiBindings;
- }
-
- public boolean isSupportsFailover()
- {
- return supportsFailover;
- }
-
- public void setSupportsFailover(boolean supportsFailover)
- {
- this.supportsFailover = supportsFailover;
- }
-
- public boolean isSupportsLoadBalancing()
- {
- return supportsLoadBalancing;
- }
-
- public void setSupportsLoadBalancing(boolean supportsLoadBalancing)
- {
- this.supportsLoadBalancing = supportsLoadBalancing;
- }
-
- public String getLoadBalancingFactory()
- {
- return loadBalancingFactory.getClass().getName();
- }
-
- public void setLoadBalancingFactory(String factoryName) throws Exception
- {
-
- //We don't use Class.forName() since then it won't work with scoped deployments
- Class clz = Thread.currentThread().getContextClassLoader().loadClass(factoryName);
-
- loadBalancingFactory = (LoadBalancingFactory)clz.newInstance();
- }
-
- public void setDupsOKBatchSize(int size) throws Exception
- {
- this.dupsOKBatchSize = size;
- }
-
- public int getDupsOKBatchSize()
- {
- return dupsOKBatchSize;
- }
-
- public boolean isStrictTck()
- {
- return strictTck;
- }
-
- public void setStrictTck(boolean strictTck)
- {
- this.strictTck = strictTck;
- }
-
- public boolean isDisableRemotingChecks()
- {
- return disableRemotingChecks;
- }
-
- public void setDisableRemotingChecks(boolean disable)
- {
- this.disableRemotingChecks = disable;
- }
-
- public String getName()
- {
- return name;
- }
-
- public void setName(String name)
- {
- this.name = name;
- }
-
- // JMX managed operations -----------------------------------------------------------------------
-
- // Public ---------------------------------------------------------------------------------------
-
- // Package protected ----------------------------------------------------------------------------
-
- // Protected ------------------------------------------------------------------------------------
-
- // Private --------------------------------------------------------------------------------------
-
-
- // Inner classes --------------------------------------------------------------------------------
-}
Added: trunk/src/main/org/jboss/jms/server/endpoint/ConnectionFactoryAdvisedPacketHandler.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/endpoint/ConnectionFactoryAdvisedPacketHandler.java (rev 0)
+++ trunk/src/main/org/jboss/jms/server/endpoint/ConnectionFactoryAdvisedPacketHandler.java 2008-01-24 08:43:34 UTC (rev 3627)
@@ -0,0 +1,199 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.jms.server.endpoint;
+
+import org.jboss.jms.client.impl.ClientConnectionFactoryImpl;
+import org.jboss.jms.exception.MessagingJMSException;
+import org.jboss.logging.Logger;
+import org.jboss.messaging.core.MessagingServer;
+import org.jboss.messaging.core.remoting.PacketHandler;
+import org.jboss.messaging.core.remoting.PacketSender;
+import org.jboss.messaging.core.remoting.wireformat.*;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_UPDATECALLBACK;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONNECTION;
+import org.jboss.messaging.util.ExceptionUtil;
+
+import javax.jms.JMSException;
+
+/**
+ * A packet handler for creating connections. All ConnectionFactories will use the same instance of this
+ * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
+ */
+public class ConnectionFactoryAdvisedPacketHandler implements
+ PacketHandler
+{
+ private static final Logger log = Logger.getLogger(ConnectionFactoryAdvisedPacketHandler.class);
+ MessagingServer messagingServer;
+
+
+ public ConnectionFactoryAdvisedPacketHandler(MessagingServer messagingServer)
+ {
+ this.messagingServer = messagingServer;
+ }/*
+ * The advantage to use String as ID is that we can leverage Java 5 UUID to
+ * generate these IDs. However theses IDs are 128 bite long and it increases
+ * the size of a packet (compared to integer or long).
+ *
+ * By switching to Long, we could reduce the size of the packet and maybe
+ * increase the performance (to check after some performance tests)
+ */
+ public String getID()
+ {
+ return ClientConnectionFactoryImpl.id;
+ }
+
+ public void handle(AbstractPacket packet, PacketSender sender)
+ {
+ try
+ {
+ AbstractPacket response = null;
+
+ PacketType type = packet.getType();
+ if (type == REQ_CREATECONNECTION)
+ {
+ CreateConnectionRequest request = (CreateConnectionRequest) packet;
+ response = createConnectionDelegate(request
+ .getUsername(), request.getPassword(), request.getRemotingSessionID(),
+ request.getClientVMID(), request.getPrefetchSize(), request.getDupsOKBatchSize(),
+ request.getClientID(), request.getVersion());
+ }
+ else if (type == MSG_UPDATECALLBACK)
+ {
+ UpdateCallbackMessage message = (UpdateCallbackMessage) packet;
+ if (message.isAdd())
+ {
+ addSender(message.getClientVMID(), message.getRemotingSessionID(), sender);
+ } else {
+ removeSender(message.getClientVMID(), message.getRemotingSessionID(), sender);
+ }
+ } else
+ {
+ response = new JMSExceptionMessage(new MessagingJMSException(
+ "Unsupported packet for browser: " + packet));
+ }
+
+ // reply if necessary
+ if (response != null)
+ {
+ response.normalize(packet);
+ sender.send(response);
+ }
+
+ } catch (JMSException e)
+ {
+ JMSExceptionMessage message = new JMSExceptionMessage(e);
+ message.normalize(packet);
+ sender.send(message);
+ }
+ }
+
+
+ public CreateConnectionResponse createConnectionDelegate(String username,
+ String password,
+ String remotingSessionID,
+ String clientVMID, int prefetchSize, int dupsOKBatchSize,
+ String clientID,
+ byte versionToUse)
+ throws JMSException
+ {
+ try
+ {
+ return
+ createConnectionDelegateInternal(username, password,
+ remotingSessionID, clientVMID, prefetchSize, dupsOKBatchSize, clientID,
+ versionToUse);
+ }
+ catch (Throwable t)
+ {
+ throw ExceptionUtil.handleJMSInvocation(t, this + " createFailoverConnectionDelegate");
+ }
+
+ }
+
+ private CreateConnectionResponse
+ createConnectionDelegateInternal(String username,
+ String password,
+ String remotingSessionID, String clientVMID, int prefetchSize, int dupsOKBatchSize,
+ String clientID,
+ byte versionToUse)
+ throws Exception
+ {
+ log.trace("creating a new connection for user " + username);
+
+ // Authenticate. Successful autentication will place a new SubjectContext on thread local,
+ // which will be used in the authorization process. However, we need to make sure we clean
+ // up thread local immediately after we used the information, otherwise some other people
+ // security my be screwed up, on account of thread local security stack being corrupted.
+
+ messagingServer.getSecurityManager().authenticate(username, password);
+
+ // We don't need the SubjectContext on thread local anymore, clean it up
+ SecurityActions.popSubjectContext();
+
+ String clientIDUsed = clientID;
+
+ // see if there is a preconfigured client id for the user
+ if (username != null)
+ {
+ String preconfClientID =
+ messagingServer.getJmsUserManagerInstance().getPreConfiguredClientID(username);
+
+ if (preconfClientID != null)
+ {
+ clientIDUsed = preconfClientID;
+ }
+ }
+
+ // create the corresponding "server-side" connection endpoint and register it with the
+ // server peer's ClientManager
+ final ServerConnectionEndpoint endpoint =
+ new ServerConnectionEndpoint(messagingServer, clientIDUsed, username, password, prefetchSize,
+ remotingSessionID, clientVMID, versionToUse,
+ dupsOKBatchSize);
+
+ String connectionID = endpoint.getConnectionID();
+
+ messagingServer.getMinaService().getDispatcher().register(endpoint.newHandler());
+
+ log.trace("created and registered " + endpoint);
+
+ return new CreateConnectionResponse(connectionID);
+ }
+
+ public void addSender(String VMID, String remotingSessionID,
+ PacketSender sender) throws JMSException
+ {
+ log.debug("Adding PacketSender on ConnectionFactory");
+ messagingServer.getConnectionManager().addConnectionFactoryCallback(getID(), VMID, remotingSessionID, sender);
+ }
+
+ public void removeSender(String VMID, String remotingSessionID,
+ PacketSender sender) throws JMSException
+ {
+ log.debug("Removing PacketSender on ConnectionFactory");
+ messagingServer.getConnectionManager().removeConnectionFactoryCallback(getID(), VMID, sender);
+ }
+
+}
Modified: trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionEndpoint.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionEndpoint.java 2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionEndpoint.java 2008-01-24 08:43:34 UTC (rev 3627)
@@ -21,31 +21,6 @@
*/
package org.jboss.jms.server.endpoint;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CLOSE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SENDTRANSACTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SETCLIENTID;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_STARTCONNECTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_STOPCONNECTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CLOSING;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATESESSION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_GETCLIENTID;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_GETPREPAREDTRANSACTIONS;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-
-import javax.jms.IllegalStateException;
-import javax.jms.InvalidDestinationException;
-import javax.jms.JMSException;
-import javax.transaction.xa.Xid;
-
import org.jboss.jms.exception.MessagingJMSException;
import org.jboss.jms.server.ConnectionManager;
import org.jboss.jms.server.SecurityStore;
@@ -53,37 +28,26 @@
import org.jboss.jms.server.container.SecurityAspect;
import org.jboss.jms.server.security.CheckType;
import org.jboss.jms.tx.ClientTransaction;
-import org.jboss.jms.tx.TransactionRequest;
import org.jboss.jms.tx.ClientTransaction.SessionTxState;
-import org.jboss.messaging.core.Binding;
-import org.jboss.messaging.core.Condition;
-import org.jboss.messaging.core.Destination;
-import org.jboss.messaging.core.DestinationType;
-import org.jboss.messaging.core.Message;
-import org.jboss.messaging.core.MessagingServer;
-import org.jboss.messaging.core.PostOffice;
-import org.jboss.messaging.core.Transaction;
+import org.jboss.jms.tx.TransactionRequest;
+import org.jboss.messaging.core.*;
import org.jboss.messaging.core.impl.ConditionImpl;
import org.jboss.messaging.core.impl.TransactionImpl;
import org.jboss.messaging.core.remoting.PacketHandler;
import org.jboss.messaging.core.remoting.PacketSender;
-import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
-import org.jboss.messaging.core.remoting.wireformat.ClosingRequest;
-import org.jboss.messaging.core.remoting.wireformat.ClosingResponse;
-import org.jboss.messaging.core.remoting.wireformat.CreateSessionRequest;
-import org.jboss.messaging.core.remoting.wireformat.CreateSessionResponse;
-import org.jboss.messaging.core.remoting.wireformat.GetClientIDResponse;
-import org.jboss.messaging.core.remoting.wireformat.GetPreparedTransactionsResponse;
-import org.jboss.messaging.core.remoting.wireformat.JMSExceptionMessage;
-import org.jboss.messaging.core.remoting.wireformat.NullPacket;
-import org.jboss.messaging.core.remoting.wireformat.PacketType;
-import org.jboss.messaging.core.remoting.wireformat.SendTransactionMessage;
-import org.jboss.messaging.core.remoting.wireformat.SetClientIDMessage;
+import org.jboss.messaging.core.remoting.wireformat.*;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.*;
import org.jboss.messaging.core.tx.MessagingXid;
import org.jboss.messaging.util.ExceptionUtil;
import org.jboss.messaging.util.Logger;
import org.jboss.messaging.util.Util;
+import javax.jms.IllegalStateException;
+import javax.jms.InvalidDestinationException;
+import javax.jms.JMSException;
+import javax.transaction.xa.Xid;
+import java.util.*;
+
/**
* Concrete implementation of ConnectionEndpoint.
*
@@ -136,12 +100,8 @@
private Set temporaryDestinations;
private int prefetchSize;
- private int defaultTempQueueFullSize;
- private int defaultTempQueuePageSize;
- private int defaultTempQueueDownCacheSize;
private int dupsOKBatchSize;
- private ServerConnectionFactoryEndpoint cfendpoint;
private byte usingVersion;
@@ -153,10 +113,6 @@
*/
public ServerConnectionEndpoint(MessagingServer messagingServer, String clientID,
String username, String password, int prefetchSize,
- int defaultTempQueueFullSize,
- int defaultTempQueuePageSize,
- int defaultTempQueueDownCacheSize,
- ServerConnectionFactoryEndpoint cfendpoint,
String remotingSessionID,
String clientVMID,
byte versionToUse,
@@ -164,7 +120,6 @@
{
this.messagingServer = messagingServer;
- this.cfendpoint = cfendpoint;
sm = messagingServer.getSecurityManager();
cm = messagingServer.getConnectionManager();
@@ -177,10 +132,6 @@
this.clientID = clientID;
this.prefetchSize = prefetchSize;
- this.defaultTempQueueFullSize = defaultTempQueueFullSize;
- this.defaultTempQueuePageSize = defaultTempQueuePageSize;
- this.defaultTempQueueDownCacheSize = defaultTempQueueDownCacheSize;
-
this.dupsOKBatchSize = dupsOKBatchSize;
sessions = new HashMap();
@@ -544,10 +495,6 @@
return messagingServer;
}
- public ServerConnectionFactoryEndpoint getConnectionFactoryEndpoint()
- {
- return cfendpoint;
- }
public Collection getSessions()
{
@@ -581,21 +528,6 @@
return prefetchSize;
}
- int getDefaultTempQueueFullSize()
- {
- return defaultTempQueueFullSize;
- }
-
- int getDefaultTempQueuePageSize()
- {
- return defaultTempQueuePageSize;
- }
-
- int getDefaultTempQueueDownCacheSize()
- {
- return defaultTempQueueDownCacheSize;
- }
-
String getConnectionID()
{
return id;
Deleted: trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionFactoryEndpoint.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionFactoryEndpoint.java 2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionFactoryEndpoint.java 2008-01-24 08:43:34 UTC (rev 3627)
@@ -1,292 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.jms.server.endpoint;
-
-
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_UPDATECALLBACK;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONNECTION;
-
-import java.util.Map;
-
-import javax.jms.JMSException;
-
-import org.jboss.jms.client.impl.ClientConnectionFactoryImpl;
-import org.jboss.jms.exception.MessagingJMSException;
-import org.jboss.messaging.core.MessagingServer;
-import org.jboss.messaging.core.remoting.PacketHandler;
-import org.jboss.messaging.core.remoting.PacketSender;
-import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
-import org.jboss.messaging.core.remoting.wireformat.CreateConnectionRequest;
-import org.jboss.messaging.core.remoting.wireformat.CreateConnectionResponse;
-import org.jboss.messaging.core.remoting.wireformat.JMSExceptionMessage;
-import org.jboss.messaging.core.remoting.wireformat.PacketType;
-import org.jboss.messaging.core.remoting.wireformat.UpdateCallbackMessage;
-import org.jboss.messaging.util.ExceptionUtil;
-import org.jboss.messaging.util.Logger;
-
-/**
- * Concrete implementation of ConnectionFactoryEndpoint
- *
- * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
- * @version <tt>$Revision$</tt>
- *
- * $Id$
- */
-public class ServerConnectionFactoryEndpoint implements ConnectionFactoryEndpoint
-{
- // Constants ------------------------------------------------------------------------------------
-
- private static final Logger log = Logger.getLogger(ServerConnectionFactoryEndpoint.class);
-
- // Static ---------------------------------------------------------------------------------------
-
- // Attributes -----------------------------------------------------------------------------------
-
- private MessagingServer messagingServer;
-
- private String clientID;
-
- private String uniqueName;
-
- private String id;
-
- private int prefetchSize;
-
- private int defaultTempQueueFullSize;
-
- private int defaultTempQueuePageSize;
-
- private int defaultTempQueueDownCacheSize;
-
- private int dupsOKBatchSize;
-
- /** Cluster Topology on ClusteredConnectionFactories
- Information to failover to other connections on clients **/
- ClientConnectionFactoryImpl[] delegates;
-
- /** Cluster Topology on ClusteredConnectionFactories
- Information to failover to other connections on clients **/
- Map failoverMap;
-
-
- // Constructors ---------------------------------------------------------------------------------
- public ServerConnectionFactoryEndpoint(String uniqueName, String id, MessagingServer messagingServer,
- String defaultClientID,
- int preFetchSize,
- int defaultTempQueueFullSize,
- int defaultTempQueuePageSize,
- int defaultTempQueueDownCacheSize,
- int dupsOKBatchSize)
- {
- this.uniqueName = uniqueName;
- this.messagingServer = messagingServer;
- this.clientID = defaultClientID;
- this.id = id;
- this.prefetchSize = preFetchSize;
- this.defaultTempQueueFullSize = defaultTempQueueFullSize;
- this.defaultTempQueuePageSize = defaultTempQueuePageSize;
- this.defaultTempQueueDownCacheSize = defaultTempQueueDownCacheSize;
- this.dupsOKBatchSize = dupsOKBatchSize;
- }
-
- // ConnectionFactoryDelegate implementation -----------------------------------------------------
-
- public CreateConnectionResponse createConnectionDelegate(String username,
- String password,
- String remotingSessionID,
- String clientVMID,
- byte versionToUse)
- throws JMSException
- {
- try
- {
- return
- createConnectionDelegateInternal(username, password,
- remotingSessionID, clientVMID,
- versionToUse);
- }
- catch (Throwable t)
- {
- throw ExceptionUtil.handleJMSInvocation(t, this + " createFailoverConnectionDelegate");
- }
-
- }
-
- private CreateConnectionResponse
- createConnectionDelegateInternal(String username,
- String password,
- String remotingSessionID, String clientVMID,
- byte versionToUse)
- throws Exception
- {
- log.trace("creating a new connection for user " + username);
-
- // Authenticate. Successful autentication will place a new SubjectContext on thread local,
- // which will be used in the authorization process. However, we need to make sure we clean
- // up thread local immediately after we used the information, otherwise some other people
- // security my be screwed up, on account of thread local security stack being corrupted.
-
- messagingServer.getSecurityManager().authenticate(username, password);
-
- // We don't need the SubjectContext on thread local anymore, clean it up
- SecurityActions.popSubjectContext();
-
- String clientIDUsed = clientID;
-
- // see if there is a preconfigured client id for the user
- if (username != null)
- {
- String preconfClientID =
- messagingServer.getJmsUserManagerInstance().getPreConfiguredClientID(username);
-
- if (preconfClientID != null)
- {
- clientIDUsed = preconfClientID;
- }
- }
-
- // create the corresponding "server-side" connection endpoint and register it with the
- // server peer's ClientManager
- final ServerConnectionEndpoint endpoint =
- new ServerConnectionEndpoint(messagingServer, clientIDUsed, username, password, prefetchSize,
- defaultTempQueueFullSize, defaultTempQueuePageSize,
- defaultTempQueueDownCacheSize, this,
- remotingSessionID, clientVMID, versionToUse,
- dupsOKBatchSize);
-
- String connectionID = endpoint.getConnectionID();
-
- messagingServer.getMinaService().getDispatcher().register(endpoint.newHandler());
-
- log.trace("created and registered " + endpoint);
-
- return new CreateConnectionResponse(connectionID);
- }
-
- public void addSender(String VMID, String remotingSessionID,
- PacketSender sender) throws JMSException
- {
- log.debug("Adding PacketSender on ConnectionFactory");
- messagingServer.getConnectionManager().addConnectionFactoryCallback(this.uniqueName, VMID, remotingSessionID, sender);
- }
-
- public void removeSender(String VMID, String remotingSessionID,
- PacketSender sender) throws JMSException
- {
- log.debug("Removing PacketSender on ConnectionFactory");
- messagingServer.getConnectionManager().removeConnectionFactoryCallback(this.uniqueName, VMID, sender);
- }
-
- // Public ---------------------------------------------------------------------------------------
-
- public String getID()
- {
- return id;
- }
-
- public MessagingServer getMessagingServer()
- {
- return messagingServer;
- }
-
- public String toString()
- {
- return "ConnectionFactoryEndpoint[" + id + "]";
- }
-
- public PacketHandler newHandler()
- {
- return new ConnectionFactoryAdvisedPacketHandler();
- }
-
- // Package protected ----------------------------------------------------------------------------
-
- // Protected ------------------------------------------------------------------------------------
-
- // Private --------------------------------------------------------------------------------------
-
- // Inner classes --------------------------------------------------------------------------------
-
-
- private final class ConnectionFactoryAdvisedPacketHandler implements
- PacketHandler
- {
- public String getID()
- {
- return ServerConnectionFactoryEndpoint.this.id;
- }
-
- public void handle(AbstractPacket packet, PacketSender sender)
- {
- try
- {
- AbstractPacket response = null;
-
- PacketType type = packet.getType();
- if (type == REQ_CREATECONNECTION)
- {
- CreateConnectionRequest request = (CreateConnectionRequest) packet;
- response = createConnectionDelegate(request
- .getUsername(), request.getPassword(), request.getRemotingSessionID(),
- request.getClientVMID(), request.getVersion());
- }
- else if (type == MSG_UPDATECALLBACK)
- {
- UpdateCallbackMessage message = (UpdateCallbackMessage) packet;
- if (message.isAdd())
- {
- addSender(message.getClientVMID(), message.getRemotingSessionID(), sender);
- } else {
- removeSender(message.getClientVMID(), message.getRemotingSessionID(), sender);
- }
- } else
- {
- response = new JMSExceptionMessage(new MessagingJMSException(
- "Unsupported packet for browser: " + packet));
- }
-
- // reply if necessary
- if (response != null)
- {
- response.normalize(packet);
- sender.send(response);
- }
-
- } catch (JMSException e)
- {
- JMSExceptionMessage message = new JMSExceptionMessage(e);
- message.normalize(packet);
- sender.send(message);
- }
- }
-
- @Override
- public String toString()
- {
- return "ConnectionFactoryAdvisedPacketHandler[id=" + id + "]";
- }
-
- }
-
-}
Modified: trunk/src/main/org/jboss/messaging/core/Configuration.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/Configuration.java 2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/messaging/core/Configuration.java 2008-01-24 08:43:34 UTC (rev 3627)
@@ -21,17 +21,17 @@
*/
package org.jboss.messaging.core;
+import org.jboss.jms.server.security.Role;
+import org.jboss.messaging.util.XMLUtil;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.net.URL;
import java.util.HashSet;
-import org.jboss.jms.server.security.Role;
-import org.jboss.messaging.util.XMLUtil;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
/**
* This is the JBM configuration. It is used to configure the MessagingServer.
*
@@ -198,6 +198,10 @@
public void addPropertyChangeListener(
PropertyChangeListener listener)
{
+ if(propertyChangeSupport == null)
+ {
+ propertyChangeSupport = new PropertyChangeSupport(this);
+ }
propertyChangeSupport.addPropertyChangeListener(listener);
}
Modified: trunk/src/main/org/jboss/messaging/core/impl/server/MessagingServerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/server/MessagingServerImpl.java 2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/messaging/core/impl/server/MessagingServerImpl.java 2008-01-24 08:43:34 UTC (rev 3627)
@@ -27,6 +27,7 @@
import org.jboss.jms.server.SecurityStore;
import org.jboss.jms.server.TransactionRepository;
import org.jboss.jms.server.connectionmanager.SimpleConnectionManager;
+import org.jboss.jms.server.endpoint.ConnectionFactoryAdvisedPacketHandler;
import org.jboss.jms.server.endpoint.ServerSessionEndpoint;
import org.jboss.jms.server.plugin.contract.JMSUserManager;
import org.jboss.jms.server.security.Role;
@@ -175,7 +176,9 @@
connectionManager.start();
memoryManager.start();
postOffice.start();
-
+ ConnectionFactoryAdvisedPacketHandler connectionFactoryAdvisedPacketHandler =
+ new ConnectionFactoryAdvisedPacketHandler(this);
+ getMinaService().getDispatcher().register(connectionFactoryAdvisedPacketHandler);
started = true;
log.info("JBoss Messaging " + getVersion().getProviderVersion() + " server [" +
configuration.getMessagingServerID() + "] started");
Modified: trunk/src/main/org/jboss/messaging/core/remoting/codec/ConnectionFactoryCreateConnectionRequestCodec.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/codec/ConnectionFactoryCreateConnectionRequestCodec.java 2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/messaging/core/remoting/codec/ConnectionFactoryCreateConnectionRequestCodec.java 2008-01-24 08:43:34 UTC (rev 3627)
@@ -6,10 +6,9 @@
*/
package org.jboss.messaging.core.remoting.codec;
+import org.jboss.messaging.core.remoting.wireformat.CreateConnectionRequest;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONNECTION;
-import org.jboss.messaging.core.remoting.wireformat.CreateConnectionRequest;
-
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
*/
@@ -43,12 +42,18 @@
String clientVMID = request.getClientVMID();
String username = request.getUsername();
String password = request.getPassword();
+ int prefetchSize = request.getPrefetchSize();
+ int dupOkBatchSize = request.getDupsOKBatchSize();
+ String clientID = request.getClientID();
int bodyLength = 1 // version
+ sizeof(remotingSessionID)
+ sizeof(clientVMID)
+ sizeof(username)
- + sizeof(password);
+ + sizeof(password)
+ + INT_LENGTH
+ + INT_LENGTH
+ + sizeof(clientID);
out.putInt(bodyLength);
out.put(version);
@@ -56,6 +61,9 @@
out.putNullableString(clientVMID);
out.putNullableString(username);
out.putNullableString(password);
+ out.putInt(prefetchSize);
+ out.putInt(dupOkBatchSize);
+ out.putNullableString(clientID);
}
@Override
@@ -72,9 +80,12 @@
String clientVMID = in.getNullableString();
String username = in.getNullableString();
String password = in.getNullableString();
+ int prefetchSize = in.getInt();
+ int dupOkBatchSize = in.getInt();
+ String clientID = in.getNullableString();
- return new CreateConnectionRequest(version, remotingSessionID,
- clientVMID, username, password);
+ return new CreateConnectionRequest(version, remotingSessionID,
+ clientVMID, username, password, prefetchSize, dupOkBatchSize, clientID);
}
// Package protected ---------------------------------------------
Modified: trunk/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConnectionRequest.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConnectionRequest.java 2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConnectionRequest.java 2008-01-24 08:43:34 UTC (rev 3627)
@@ -12,6 +12,7 @@
/**
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
*
* @version <tt>$Revision$</tt>
*/
@@ -26,13 +27,17 @@
private final String clientVMID;
private final String username;
private final String password;
+ private int prefetchSize;
+ private int dupsOKBatchSize;
+ private String clientID;
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
public CreateConnectionRequest(byte version,
- String remotingSessionID, String clientVMID, String username, String password)
+ String remotingSessionID, String clientVMID, String username, String password,
+ int prefetchSize, int dupsOKBatchSize, String clientID)
{
super(REQ_CREATECONNECTION);
@@ -44,6 +49,9 @@
this.clientVMID = clientVMID;
this.username = username;
this.password = password;
+ this.prefetchSize = prefetchSize;
+ this.dupsOKBatchSize = dupsOKBatchSize;
+ this.clientID = clientID;
}
// Public --------------------------------------------------------
@@ -86,6 +94,36 @@
return buf.toString();
}
+ public int getPrefetchSize()
+ {
+ return prefetchSize;
+ }
+
+ public void setPrefetchSize(int prefetchSize)
+ {
+ this.prefetchSize = prefetchSize;
+ }
+
+ public int getDupsOKBatchSize()
+ {
+ return dupsOKBatchSize;
+ }
+
+ public void setDupsOKBatchSize(int dupsOKBatchSize)
+ {
+ this.dupsOKBatchSize = dupsOKBatchSize;
+ }
+
+ public String getClientID()
+ {
+ return clientID;
+ }
+
+ public void setClientID(String clientID)
+ {
+ this.clientID = clientID;
+ }
+
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
@@ -94,4 +132,5 @@
// Inner classes -------------------------------------------------
+
}
Modified: trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/PacketTypeTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/PacketTypeTest.java 2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/PacketTypeTest.java 2008-01-24 08:43:34 UTC (rev 3627)
@@ -6,82 +6,7 @@
*/
package org.jboss.messaging.core.remoting.wireformat.test.unit;
-import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.FALSE;
-import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.INT_LENGTH;
-import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.LONG_LENGTH;
-import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.TRUE;
-import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.encodeMessage;
-import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.sizeof;
-import static org.jboss.messaging.core.remoting.codec.SendTransactionMessageCodec.encodeTransactionRequest;
-import static org.jboss.messaging.core.remoting.impl.mina.MinaPacketCodec.NOT_NULL_STRING;
-import static org.jboss.messaging.core.remoting.impl.mina.MinaPacketCodec.NULL_BYTE;
-import static org.jboss.messaging.core.remoting.impl.mina.MinaPacketCodec.NULL_STRING;
-import static org.jboss.messaging.core.remoting.impl.mina.MinaPacketCodec.UTF_8_ENCODER;
-import static org.jboss.messaging.core.remoting.wireformat.AbstractPacket.NO_ID_SET;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_ACKDELIVERIES;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_ADDTEMPORARYDESTINATION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_BROWSER_RESET;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CANCELDELIVERIES;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CANCELDELIVERY;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CHANGERATE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CLOSE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_DELETETEMPORARYDESTINATION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_DELIVERMESSAGE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_JMSEXCEPTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SENDMESSAGE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SENDTRANSACTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SETCLIENTID;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_STARTCONNECTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_STOPCONNECTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_UNSUBSCRIBE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_UPDATECALLBACK;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.NULL;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_ACKDELIVERY;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_BROWSER_HASNEXTMESSAGE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_BROWSER_NEXTMESSAGE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_BROWSER_NEXTMESSAGEBLOCK;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CLOSING;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATEBROWSER;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONNECTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONSUMER;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATEDESTINATION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATESESSION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_GETCLIENTID;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_GETPREPAREDTRANSACTIONS;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_ACKDELIVERY;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_BROWSER_HASNEXTMESSAGE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_BROWSER_NEXTMESSAGE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_BROWSER_NEXTMESSAGEBLOCK;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CLOSING;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATEBROWSER;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATECONNECTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATECONSUMER;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATEDESTINATION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATESESSION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_GETCLIENTID;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_GETPREPAREDTRANSACTIONS;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.TEXT;
-import static org.jboss.messaging.core.remoting.wireformat.test.unit.CodecAssert.assertEqualsAcks;
-import static org.jboss.messaging.core.remoting.wireformat.test.unit.CodecAssert.assertEqualsByteArrays;
-import static org.jboss.messaging.core.remoting.wireformat.test.unit.CodecAssert.assertEqualsCancels;
-import static org.jboss.messaging.core.remoting.wireformat.test.unit.CodecAssert.assertSameXids;
-import static org.jboss.messaging.test.unit.RandomUtil.randomByte;
-import static org.jboss.messaging.test.unit.RandomUtil.randomBytes;
-import static org.jboss.messaging.test.unit.RandomUtil.randomInt;
-import static org.jboss.messaging.test.unit.RandomUtil.randomLong;
-import static org.jboss.messaging.test.unit.RandomUtil.randomString;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.jms.InvalidDestinationException;
-import javax.jms.JMSException;
-
import junit.framework.TestCase;
-
import org.apache.mina.common.IoBuffer;
import org.jboss.jms.client.impl.Ack;
import org.jboss.jms.client.impl.AckImpl;
@@ -96,90 +21,26 @@
import org.jboss.messaging.core.Message;
import org.jboss.messaging.core.impl.DestinationImpl;
import org.jboss.messaging.core.impl.MessageImpl;
-import org.jboss.messaging.core.remoting.codec.AbstractPacketCodec;
-import org.jboss.messaging.core.remoting.codec.AcknowledgeDeliveriesRequestCodec;
-import org.jboss.messaging.core.remoting.codec.AcknowledgeDeliveryRequestCodec;
-import org.jboss.messaging.core.remoting.codec.AcknowledgeDeliveryResponseCodec;
-import org.jboss.messaging.core.remoting.codec.AddTemporaryDestinationMessageCodec;
-import org.jboss.messaging.core.remoting.codec.BrowserHasNextMessageResponseCodec;
-import org.jboss.messaging.core.remoting.codec.BrowserNextMessageBlockRequestCodec;
-import org.jboss.messaging.core.remoting.codec.BrowserNextMessageBlockResponseCodec;
-import org.jboss.messaging.core.remoting.codec.BrowserNextMessageResponseCodec;
-import org.jboss.messaging.core.remoting.codec.CancelDeliveriesMessageCodec;
-import org.jboss.messaging.core.remoting.codec.CancelDeliveryMessageCodec;
-import org.jboss.messaging.core.remoting.codec.ChangeRateMessageCodec;
-import org.jboss.messaging.core.remoting.codec.ClosingRequestCodec;
-import org.jboss.messaging.core.remoting.codec.ClosingResponseCodec;
-import org.jboss.messaging.core.remoting.codec.ConnectionFactoryCreateConnectionRequestCodec;
-import org.jboss.messaging.core.remoting.codec.ConnectionFactoryCreateConnectionResponseCodec;
-import org.jboss.messaging.core.remoting.codec.CreateBrowserRequestCodec;
-import org.jboss.messaging.core.remoting.codec.CreateBrowserResponseCodec;
-import org.jboss.messaging.core.remoting.codec.CreateConsumerRequestCodec;
-import org.jboss.messaging.core.remoting.codec.CreateConsumerResponseCodec;
-import org.jboss.messaging.core.remoting.codec.CreateDestinationRequestCodec;
-import org.jboss.messaging.core.remoting.codec.CreateDestinationResponseCodec;
-import org.jboss.messaging.core.remoting.codec.CreateSessionRequestCodec;
-import org.jboss.messaging.core.remoting.codec.CreateSessionResponseCodec;
-import org.jboss.messaging.core.remoting.codec.DeleteTemporaryDestinationMessageCodec;
-import org.jboss.messaging.core.remoting.codec.DeliverMessageCodec;
-import org.jboss.messaging.core.remoting.codec.GetClientIDResponseCodec;
-import org.jboss.messaging.core.remoting.codec.GetPreparedTransactionsResponseCodec;
-import org.jboss.messaging.core.remoting.codec.JMSExceptionMessageCodec;
-import org.jboss.messaging.core.remoting.codec.RemotingBuffer;
-import org.jboss.messaging.core.remoting.codec.SendMessageCodec;
-import org.jboss.messaging.core.remoting.codec.SendTransactionMessageCodec;
-import org.jboss.messaging.core.remoting.codec.SetClientIDMessageCodec;
-import org.jboss.messaging.core.remoting.codec.TextPacketCodec;
-import org.jboss.messaging.core.remoting.codec.UnsubscribeMessageCodec;
-import org.jboss.messaging.core.remoting.codec.UpdateCallbackMessageCodec;
+import org.jboss.messaging.core.remoting.codec.*;
+import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.*;
+import static org.jboss.messaging.core.remoting.codec.SendTransactionMessageCodec.encodeTransactionRequest;
+import org.jboss.messaging.core.remoting.impl.mina.MinaPacketCodec.*;
import org.jboss.messaging.core.remoting.impl.mina.PacketCodecFactory;
-import org.jboss.messaging.core.remoting.impl.mina.MinaPacketCodec.BufferWrapper;
-import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
-import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveriesMessage;
-import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryRequest;
-import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryResponse;
-import org.jboss.messaging.core.remoting.wireformat.AddTemporaryDestinationMessage;
-import org.jboss.messaging.core.remoting.wireformat.BrowserHasNextMessageRequest;
-import org.jboss.messaging.core.remoting.wireformat.BrowserHasNextMessageResponse;
-import org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageBlockRequest;
-import org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageBlockResponse;
-import org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageRequest;
-import org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageResponse;
-import org.jboss.messaging.core.remoting.wireformat.BrowserResetMessage;
-import org.jboss.messaging.core.remoting.wireformat.CancelDeliveriesMessage;
-import org.jboss.messaging.core.remoting.wireformat.CancelDeliveryMessage;
-import org.jboss.messaging.core.remoting.wireformat.ChangeRateMessage;
-import org.jboss.messaging.core.remoting.wireformat.CloseMessage;
-import org.jboss.messaging.core.remoting.wireformat.ClosingRequest;
-import org.jboss.messaging.core.remoting.wireformat.ClosingResponse;
-import org.jboss.messaging.core.remoting.wireformat.CreateBrowserRequest;
-import org.jboss.messaging.core.remoting.wireformat.CreateBrowserResponse;
-import org.jboss.messaging.core.remoting.wireformat.CreateConnectionRequest;
-import org.jboss.messaging.core.remoting.wireformat.CreateConnectionResponse;
-import org.jboss.messaging.core.remoting.wireformat.CreateConsumerRequest;
-import org.jboss.messaging.core.remoting.wireformat.CreateConsumerResponse;
-import org.jboss.messaging.core.remoting.wireformat.CreateDestinationRequest;
-import org.jboss.messaging.core.remoting.wireformat.CreateDestinationResponse;
-import org.jboss.messaging.core.remoting.wireformat.CreateSessionRequest;
-import org.jboss.messaging.core.remoting.wireformat.CreateSessionResponse;
-import org.jboss.messaging.core.remoting.wireformat.DeleteTemporaryDestinationMessage;
-import org.jboss.messaging.core.remoting.wireformat.DeliverMessage;
-import org.jboss.messaging.core.remoting.wireformat.GetClientIDRequest;
-import org.jboss.messaging.core.remoting.wireformat.GetClientIDResponse;
-import org.jboss.messaging.core.remoting.wireformat.GetPreparedTransactionsRequest;
-import org.jboss.messaging.core.remoting.wireformat.GetPreparedTransactionsResponse;
-import org.jboss.messaging.core.remoting.wireformat.JMSExceptionMessage;
-import org.jboss.messaging.core.remoting.wireformat.NullPacket;
-import org.jboss.messaging.core.remoting.wireformat.SendMessage;
-import org.jboss.messaging.core.remoting.wireformat.SendTransactionMessage;
-import org.jboss.messaging.core.remoting.wireformat.SetClientIDMessage;
-import org.jboss.messaging.core.remoting.wireformat.StartConnectionMessage;
-import org.jboss.messaging.core.remoting.wireformat.StopConnectionMessage;
-import org.jboss.messaging.core.remoting.wireformat.TextPacket;
-import org.jboss.messaging.core.remoting.wireformat.UnsubscribeMessage;
-import org.jboss.messaging.core.remoting.wireformat.UpdateCallbackMessage;
+import org.jboss.messaging.core.remoting.wireformat.*;
+import static org.jboss.messaging.core.remoting.wireformat.AbstractPacket.NO_ID_SET;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.*;
+import static org.jboss.messaging.core.remoting.wireformat.test.unit.CodecAssert.*;
import org.jboss.messaging.core.tx.MessagingXid;
+import static org.jboss.messaging.test.unit.RandomUtil.*;
+import javax.jms.InvalidDestinationException;
+import javax.jms.JMSException;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
*
@@ -418,15 +279,18 @@
String clientVMID = randomString();
String username = null;
String password = null;
+ int prefetchSize = 0;
+ int dupsOkBatchSize = 150;
+ String clientID = null;
CreateConnectionRequest request = new CreateConnectionRequest(version,
- remotingSessionID, clientVMID, username, password);
+ remotingSessionID, clientVMID, username, password, prefetchSize, dupsOkBatchSize, null);
addVersion(request);
AbstractPacketCodec<CreateConnectionRequest> codec = new ConnectionFactoryCreateConnectionRequestCodec();
SimpleRemotingBuffer buffer = encode(request, codec);
checkHeader(buffer, request);
- checkBody(buffer, version, remotingSessionID, clientVMID, username, password);
+ checkBody(buffer, version, remotingSessionID, clientVMID, username, password, prefetchSize, dupsOkBatchSize, clientID);
buffer.rewind();
AbstractPacket decodedPacket = codec.decode(buffer);
Modified: trunk/tests/src/org/jboss/test/messaging/tools/container/LocalTestServer.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/tools/container/LocalTestServer.java 2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/tests/src/org/jboss/test/messaging/tools/container/LocalTestServer.java 2008-01-24 08:43:34 UTC (rev 3627)
@@ -21,42 +21,14 @@
*/
package org.jboss.test.messaging.tools.container;
-import java.io.File;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.jms.InvalidDestinationException;
-import javax.management.NotificationListener;
-import javax.management.ObjectName;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NameNotFoundException;
-import javax.sql.DataSource;
-import javax.transaction.TransactionManager;
-import javax.transaction.UserTransaction;
-
import org.jboss.jms.client.JBossConnectionFactory;
import org.jboss.jms.client.impl.ClientConnectionFactoryImpl;
import org.jboss.jms.destination.JBossQueue;
import org.jboss.jms.destination.JBossTopic;
-import org.jboss.jms.server.connectionfactory.ConnectionFactory;
-import org.jboss.jms.server.endpoint.ServerConnectionFactoryEndpoint;
import org.jboss.jms.server.security.Role;
import org.jboss.jms.tx.ResourceManagerFactory;
import org.jboss.logging.Logger;
-import org.jboss.messaging.core.Binding;
-import org.jboss.messaging.core.Condition;
-import org.jboss.messaging.core.DestinationType;
-import org.jboss.messaging.core.MessagingServer;
-import org.jboss.messaging.core.MessagingServerManagement;
+import org.jboss.messaging.core.*;
import org.jboss.messaging.core.impl.ConditionImpl;
import org.jboss.messaging.core.remoting.ServerLocator;
import org.jboss.messaging.microcontainer.JBMBootstrapServer;
@@ -67,6 +39,21 @@
import org.jboss.test.messaging.tools.jboss.MBeanConfigurationElement;
import org.jboss.tm.TransactionManagerLocator;
+import javax.jms.InvalidDestinationException;
+import javax.management.NotificationListener;
+import javax.management.ObjectName;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NameNotFoundException;
+import javax.sql.DataSource;
+import javax.transaction.TransactionManager;
+import javax.transaction.UserTransaction;
+import java.io.File;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.*;
+
/**
* @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
@@ -80,7 +67,6 @@
private static final Logger log = Logger.getLogger(LocalTestServer.class);
private boolean started = false;
- private Map<String, ConnectionFactory> factories = new HashMap<String, ConnectionFactory>();
private HashMap<String, List<String>> allBindings = new HashMap<String, List<String>>();
// Static ---------------------------------------------------------------------------------------
@@ -628,8 +614,7 @@
int dupsOkBatchSize) throws Exception
{
log.trace("deploying connection factory with name: " + objectName);
- ConnectionFactory connectionFactory = new ConnectionFactory(clientId);
- connectionFactory.setName(objectName);
+ //ConnectionFactory connectionFactory = new ConnectionFactory(clientId);
List<String> bindings = new ArrayList<String>();
if (jndiBindings != null)
{
@@ -638,51 +623,44 @@
bindings.add(jndiBinding);
}
}
- connectionFactory.setJNDIBindings(bindings);
- if (prefetchSize > 0)
- connectionFactory.setPrefetchSize(prefetchSize);
- if (defaultTempQueueFullSize > 0)
- connectionFactory.setDefaultTempQueueFullSize(defaultTempQueueFullSize);
- if (defaultTempQueuePageSize > 0)
- connectionFactory.setDefaultTempQueuePageSize(defaultTempQueuePageSize);
- if (defaultTempQueueDownCacheSize > 0)
- connectionFactory.setDefaultTempQueueDownCacheSize(defaultTempQueueDownCacheSize);
- if (dupsOkBatchSize > 0)
- connectionFactory.setDupsOKBatchSize(dupsOkBatchSize);
- connectionFactory.setSupportsFailover(supportsFailover);
- connectionFactory.setSupportsLoadBalancing(supportsLoadBalancing);
- connectionFactory.setStrictTck(strictTck);
- factories.put(objectName, connectionFactory);
+ //connectionFactory.setJNDIBindings(bindings);
+ //if (prefetchSize > 0)
+ // connectionFactory.setPrefetchSize(prefetchSize);
+ //if (defaultTempQueueFullSize > 0) if (dupsOkBatchSize > 0)
+ // connectionFactory.setDupsOKBatchSize(dupsOkBatchSize);
+ // connectionFactory.setSupportsFailover(supportsFailover);
+ //connectionFactory.setSupportsLoadBalancing(supportsLoadBalancing);
+ //connectionFactory.setStrictTck(strictTck);
ServerLocator serverLocator = getMessagingServer().getMinaService().getLocator();
log.info("Server locator is " + serverLocator);
log.info(this + " started");
// See http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4076040#4076040
- final String id = connectionFactory.getName();
+ final String id = objectName;
Version version = getMessagingServer().getVersion();
- ServerConnectionFactoryEndpoint endpoint =
+ /*ServerConnectionFactoryEndpoint endpoint =
new ServerConnectionFactoryEndpoint(connectionFactory.getName(), id, getMessagingServer(), connectionFactory.getClientID(),
connectionFactory.getPrefetchSize(),
connectionFactory.getDefaultTempQueueFullSize(),
connectionFactory.getDefaultTempQueuePageSize(),
connectionFactory.getDefaultTempQueueDownCacheSize(),
- connectionFactory.getDupsOKBatchSize());
+ connectionFactory.getDupsOKBatchSize());*/
//The server peer strict setting overrides the connection factory
- boolean useStrict = getMessagingServer().getConfiguration().isStrictTck() || connectionFactory.isStrictTck();
+ boolean useStrict = getMessagingServer().getConfiguration().isStrictTck() || strictTck;
ClientConnectionFactoryImpl delegate =
- new ClientConnectionFactoryImpl(id, getMessagingServer().getConfiguration().getMessagingServerID(),
- serverLocator.getURI(), version, false, useStrict);
+ new ClientConnectionFactoryImpl( getMessagingServer().getConfiguration().getMessagingServerID(),
+ serverLocator.getURI(), version, false, useStrict, prefetchSize, dupsOkBatchSize, clientId);
log.debug(this + " created local delegate " + delegate);
// Registering with the dispatcher should always be the last thing otherwise a client could
// use a partially initialised object
- getMessagingServer().getMinaService().getDispatcher().register(endpoint.newHandler());
+ //getMessagingServer().getMinaService().getDispatcher().register(endpoint.newHandler());
JBossConnectionFactory jBossConnectionFactory = new JBossConnectionFactory(delegate);
for (String binding : bindings)
{
More information about the jboss-cvs-commits
mailing list