<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd">
<!-- enable processing of annotations such as @Autowired and @Configuration -->
<context:annotation-config/>
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject">
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="java.lang.System" />
<property name="targetMethod" value="getProperties" />
</bean>
</property>
<property name="targetMethod" value="putAll" />
<property name="arguments">
<util:properties>
<prop key="test.key">test.value</prop>
</util:properties>
</property>
</bean>
</beans>
Sachin Handiekar
A not so personal blog
Tuesday, January 22, 2013
Setting System properties using Spring
Saturday, December 17, 2011
Get ActiveMQ Queue Size using MBean (Spring JMX)
Getting a queue size of an ActiveMQ queue using MBean (Spring JMX).
Spring Config file
* Running the Queue Counter
Spring Config file
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean class="org.springframework.jmx.support.MBeanServerConnectionFactoryBean" id="mbeanServerConnection"> <property name="serviceUrl" value="service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi"> </property></bean> <bean class="com.sample.QueueSizeCounter" id="queueCounter"> <property name="mBeanServerConnection" ref="mbeanServerConnection"> </property></bean> </beans>* A class using the MBeanServerConnection to fetch the attribute from the MBean
package com.sample;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import org.apache.log4j.Logger;
public class QueueSizeCounter {
private MBeanServerConnection mBeanServerConnection;
private Logger logger = Logger.getLogger(QueueSizeCounter.class);
public Long getQueueSize(String queueName) {
Long queueSize = null;
try {
ObjectName objectNameRequest = new ObjectName(
"org.apache.activemq:BrokerName=localhost,Type=Queue,Destination=" + queueName);
queueSize = (Long) mBeanServerConnection.getAttribute(objectNameRequest, "QueueSize");
return queueSize;
}
catch (Exception e) {
logger.error(e.getMessage());
}
return queueSize;
}
public void setmBeanServerConnection(MBeanServerConnection mBeanServerConnection) {
this.mBeanServerConnection = mBeanServerConnection;
}
}
* Running the Queue Counter
package com.sample;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
QueueSizeCounter queueCounter = (QueueSizeCounter) ctx.getBean("queueCounter");
String queueName = "Queue1";
long queueSize = queueCounter.getQueueSize(queueName);
System.out.println("Size of " + queueName + " : " + queueSize);
}
}
Tuesday, December 6, 2011
Using Weblogic SingletonService for Spring JMS
* Weblogic Configuration
* Enterprise Application
* Enterprise Application
Sunday, December 4, 2011
Spring : Browsing Oracle AQ (XMLType) using Spring JMS
package com.sachinhandiekar.oracle.aq;
import java.util.Enumeration;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.QueueBrowser;
import javax.jms.Session;
import oracle.jms.AQjmsAdtMessage;
import oracle.jms.AQjmsQueueBrowser;
import oracle.jms.AQjmsSession;
import oracle.sql.ORADataFactory;
import oracle.xdb.XMLType;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.SessionCallback;
public class OracleAQQueueBrowser {
private JmsTemplate jmsTemplate;
public void browseMessages() {
Integer count = (Integer) jmsTemplate.execute(new SessionCallback() {
public Object doInJms(Session session) throws JMSException {
int count = 0;
Queue queue = (Queue) jmsTemplate.getDefaultDestination();
QueueBrowser browser = ((AQjmsSession) session).createBrowser(queue, null, XMLType.getORADataFactory(),
true);
Enumeration messages = browser.getEnumeration();
while (messages.hasMoreElements()) {
count++;
Message message = (Message) messages.nextElement();
displayMessage(message);
}
return new Integer(count);
}
private void displayMessage(Message message) {
try {
XMLType xmlMsg = (XMLType) ((AQjmsAdtMessage) message).getAdtPayload();
System.out.println("Message ==> " + xmlMsg.getStringVal());
System.out.println();
}
catch (Exception e) {
e.printStackTrace();
}
}
}, true);
System.out.println("Number of Messages : " + count);
}
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
}
* Spring Bean Configuration
<beans ...> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="oracleAqConnFactory" /> <property name="defaultDestination" ref="destination" /> </bean> </beans>
Saturday, December 3, 2011
Spring Aspects
Spring aspects can work with five kinds of advice :
- Before - The advice functionality takes place before the advised method is invoked.
- After - The advice functionality takes place after the advised method completes, regardless of the outcome.
- After-returning - The advice functionality takes place after the advised method successfully completes.
- After-throwing - The advice functionality takes place after the advised method throws an exception.
- Around - The advice wraps the advised method, providing some functionality before and after the advised method is invoked.
Code Examples should go here...
Subscribe to:
Posts (Atom)