下面列出了怎么用javax.jms.ConnectionMetaData的API类实例代码及写法,或者点击链接到github查看源代码。
private String metaDataToString(ConnectionMetaData metaData) throws JMSException
{
StringBuilder sb = new StringBuilder("ConnectionMetaData[");
sb.append(" JMSProviderName : " + metaData.getJMSProviderName());
sb.append(" JMSVersion : " + metaData.getJMSVersion() + " (" + metaData.getJMSMajorVersion() + "." + metaData.getJMSMinorVersion() +")");
sb.append(" ProviderVersion : " + metaData.getProviderVersion()+ " (" + metaData.getProviderMajorVersion()+ "." + metaData.getProviderMinorVersion() +")" );
sb.append(" JMSXPropertyNames : [");
Enumeration en = metaData.getJMSXPropertyNames();
while(en.hasMoreElements())
{
sb.append(" ").append(en.nextElement());
if( en.hasMoreElements())
{
sb.append(",");
}
}
sb.append("]]");
return sb.toString();
}
private boolean isSupportedClient() throws NamingException, JMSException
{
if (getProtocol() == Protocol.AMQP_1_0)
{
return true;
}
else
{
Connection con = getConnection();
try
{
final ConnectionMetaData metaData = con.getMetaData();
// Older Qpid JMS Client 0-x (<=6.1.x) didn't support management addresses.
return !(metaData.getProviderMajorVersion() < 6 || (metaData.getProviderMajorVersion() == 6
&& metaData.getProviderMinorVersion() <= 1));
}
finally
{
con.close();
}
}
}
/**
* Test that the JMSX property <code>JMSXGroupID</code> is supported.
*/
@Test
public void testSupportsJMSXGroupID() {
try {
boolean found = false;
ConnectionMetaData metaData = senderConnection.getMetaData();
Enumeration enumeration = metaData.getJMSXPropertyNames();
while (enumeration.hasMoreElements()) {
String jmsxPropertyName = (String) enumeration.nextElement();
if (jmsxPropertyName.equals("JMSXGroupID")) {
found = true;
}
}
Assert.assertTrue("JMSXGroupID property is not supported", found);
} catch (JMSException e) {
fail(e);
}
}
@Test
public void testGetMetadata() throws Exception {
Connection connection = createConnection();
ConnectionMetaData metaData = connection.getMetaData();
// TODO - need to check whether these are same as current version
metaData.getJMSMajorVersion();
metaData.getJMSMinorVersion();
metaData.getJMSProviderName();
metaData.getJMSVersion();
metaData.getJMSXPropertyNames();
metaData.getProviderMajorVersion();
metaData.getProviderMinorVersion();
metaData.getProviderVersion();
connection.close();
}
@Test
public void testManifestEntries() throws Exception {
Properties props = System.getProperties();
String userDir = props.getProperty("build.lib");
UnitTestLogger.LOGGER.trace("userDir is " + userDir);
// The jar must be there
File file = new File("build/jars", "activemq-core.jar");
Assert.assertTrue(file.exists());
// Open the jar and load MANIFEST.MF
JarFile jar = new JarFile(file);
Manifest manifest = jar.getManifest();
ActiveMQServer server = ActiveMQServers.newActiveMQServer(createBasicConfig());
ConnectionMetaData meta = new ActiveMQConnectionMetaData(server.getVersion());
// Compare the value from ConnectionMetaData and MANIFEST.MF
Attributes attrs = manifest.getMainAttributes();
Assert.assertEquals(meta.getProviderVersion(), attrs.getValue("ActiveMQ-Version"));
}
@Test(timeout=30000)
public void testConnectionMetaData() throws Exception {
connection = new JmsConnection(connectionInfo, provider);
ConnectionMetaData metaData = connection.getMetaData();
assertNotNull(metaData);
assertEquals(2, metaData.getJMSMajorVersion());
assertEquals(0, metaData.getJMSMinorVersion());
assertEquals("2.0", metaData.getJMSVersion());
assertNotNull(metaData.getJMSXPropertyNames());
assertNotNull(metaData.getProviderVersion());
assertNotNull(metaData.getJMSProviderName());
int major = metaData.getProviderMajorVersion();
int minor = metaData.getProviderMinorVersion();
assertTrue("Expected non-zero provider major(" + major + ") / minor(" + minor +") version.", (major + minor) != 0);
}
@Override
public ConnectionMetaData getMetaData() {
try {
return connection.getMetaData();
} catch (JMSException jmse) {
throw JMSExceptionSupport.createRuntimeException(jmse);
}
}
@Override
public ConnectionMetaData getMetaData() {
try {
return connection.getMetaData();
} catch (JMSException jmse) {
throw JMSExceptionSupport.createRuntimeException(jmse);
}
}
@Override
public String getProtocolVersion(final Connection connection)
{
if (connection != null)
{
try
{
final Method method = connection.getClass().getMethod("getProtocolVersion"); // Qpid 0-8..0-10 method only
Object version = method.invoke(connection);
return String.valueOf(version);
}
catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e)
{
try
{
ConnectionMetaData metaData = connection.getMetaData();
if (metaData != null && ("QpidJMS".equals(metaData.getJMSProviderName()) ||
"AMQP.ORG".equals(metaData.getJMSProviderName())))
{
return "1.0";
}
}
catch (JMSException e1)
{
return null;
}
return null;
}
}
return null;
}
/**
* checks if the JMSX property <code>JMSXDeliveryCount</code> is supported.
*/
private boolean supportsJMSXDeliveryCount() throws Exception {
ConnectionMetaData metaData = senderConnection.getMetaData();
Enumeration enumeration = metaData.getJMSXPropertyNames();
while (enumeration.hasMoreElements()) {
String jmsxPropertyName = (String) enumeration.nextElement();
if (jmsxPropertyName.equals("JMSXDeliveryCount")) {
return true;
}
}
return false;
}
/**
* Get the connection metadata
*
* @return The connection metadata
* @throws JMSException Thrown if an error occurs
*/
@Override
public ConnectionMetaData getMetaData() throws JMSException {
if (ActiveMQRALogger.LOGGER.isTraceEnabled()) {
ActiveMQRALogger.LOGGER.trace("getMetaData()");
}
checkClosed();
return mcf.getMetaData();
}
/**
* Get the connection metadata
*
* @return The metadata
*/
public ConnectionMetaData getMetaData() {
if (ActiveMQRALogger.LOGGER.isTraceEnabled()) {
ActiveMQRALogger.LOGGER.trace("getMetadata()");
}
return new ActiveMQRAConnectionMetaData();
}
@Override
public ConnectionMetaData getMetaData() {
try {
return connection.getMetaData();
} catch (JMSException e) {
throw JmsExceptionUtils.convertToRuntimeException(e);
}
}
@Override
public ConnectionMetaData getMetaData() throws JMSException {
checkClosed();
if (metaData == null) {
metaData = new ActiveMQConnectionMetaData(thisVersion);
}
return metaData;
}
@Override
public ConnectionMetaData getMetaData() {
try {
return connection.getMetaData();
} catch (JMSException jmse) {
throw JmsExceptionSupport.createRuntimeException(jmse);
}
}
public String getConnectionFactoryInfo(ConnectionFactory connectionFactory) {
if (IbisContext.getApplicationServerType().equals("TIBCOAMX")) {
// Workaround to prevent the following exception:
// [org.apache.geronimo.connector.outbound.MCFConnectionInterceptor] - Error occurred creating ManagedConnection for [email protected]#######
// javax.resource.ResourceException: JMSJCA-E084: Failed to create session: The JNDI name is null
return null;
}
String info=null;
Connection connection = null;
try {
connection = connectionFactory.createConnection();
ConnectionMetaData metaData = connection.getMetaData();
info = "jms provider name [" + metaData.getJMSProviderName()
+ "] jms provider version [" + metaData.getProviderVersion()
+ "] jms version [" + metaData.getJMSVersion()
+ "]";
} catch (JMSException e) {
log.warn("Exception determining connection factory info",e);
} finally {
if (connection != null) {
try {
connection.close();
} catch (JMSException e1) {
log.warn("Exception closing connection for metadata", e1);
}
}
}
return info;
}
@Override
public ConnectionMetaData getMetaData() {
try {
return connection().getMetaData();
} catch (final JMSException e) {
throw toRuntimeException(e);
}
}
@Override
public ConnectionMetaData getMetaData() throws JMSException {
return null;
}
@Override
public ConnectionMetaData getMetaData() {
return null;
}
@Override
public ConnectionMetaData getMetaData() throws JMSException {
return null;
}
@Override
public ConnectionMetaData getMetaData() throws JMSException {
return getConnection().getMetaData();
}
@Override
public ConnectionMetaData getMetaData() throws JMSException {
return MockJMSConnectionMetaData.INSTANCE;
}
/**
* {@inheritDoc}
*/
@Override
public ConnectionMetaData getMetaData() throws JMSException {
return delegate.getMetaData();
}
@Override
public ConnectionMetaData getMetaData() throws JMSException {
return connection.getMetaData();
}
@Override
public ConnectionMetaData getMetaData() throws JMSException {
return null;
}
@Override
public ConnectionMetaData getMetaData() throws JMSException
{
return underlying.getMetaData();
}
public ConnectionMetaData getMetaData() throws JMSException {
throw new UnsupportedOperationException();
}
public ConnectionMetaData getMetaData() throws JMSException {
throw new UnsupportedOperationException();
}
/**
* {@inheritDoc}
*/
@Override
public ConnectionMetaData getMetaData() throws JMSException {
return null;
}
/**
* {@inheritDoc}
*/
@Override
public ConnectionMetaData getMetaData() throws JMSException {
return null;
}