mirror of https://github.com/apache/activemq.git
added a helper method on the broker for its default administration connection context to avoid various parts of the code spoofing one and to provide a single place we can register any particular security details for startup or runtime MBean based administration
git-svn-id: https://svn.apache.org/repos/asf/incubator/activemq/trunk@426132 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
4bd8a8bf85
commit
8abb655e82
|
@ -238,4 +238,14 @@ public interface Broker extends Region, Service {
|
||||||
* @return true if fault tolerant
|
* @return true if fault tolerant
|
||||||
*/
|
*/
|
||||||
public boolean isFaultTolerantConfiguration();
|
public boolean isFaultTolerantConfiguration();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the connection context used to make administration operations on startup or via JMX MBeans
|
||||||
|
*/
|
||||||
|
public abstract ConnectionContext getAdminConnectionContext();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the default administration connection context used when configuring the broker on startup or via JMX
|
||||||
|
*/
|
||||||
|
public abstract void setAdminConnectionContext(ConnectionContext adminConnectionContext);
|
||||||
}
|
}
|
||||||
|
|
|
@ -213,9 +213,16 @@ public class BrokerFilter implements Broker {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean isFaultTolerantConfiguration(){
|
public boolean isFaultTolerantConfiguration(){
|
||||||
return next.isFaultTolerantConfiguration();
|
return next.isFaultTolerantConfiguration();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ConnectionContext getAdminConnectionContext() {
|
||||||
|
return next.getAdminConnectionContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAdminConnectionContext(ConnectionContext adminConnectionContext) {
|
||||||
|
next.setAdminConnectionContext(adminConnectionContext);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1202,16 +1202,41 @@ public class BrokerService implements Service, Serializable {
|
||||||
*/
|
*/
|
||||||
protected void startDestinations() throws Exception {
|
protected void startDestinations() throws Exception {
|
||||||
if (destinations != null) {
|
if (destinations != null) {
|
||||||
ConnectionContext context = new ConnectionContext();
|
ConnectionContext adminConnectionContext = getAdminConnectionContext();
|
||||||
context.setBroker(getBroker());
|
|
||||||
|
|
||||||
for (int i = 0; i < destinations.length; i++) {
|
for (int i = 0; i < destinations.length; i++) {
|
||||||
ActiveMQDestination destination = destinations[i];
|
ActiveMQDestination destination = destinations[i];
|
||||||
getBroker().addDestination(context, destination);
|
getBroker().addDestination(adminConnectionContext, destination);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the broker's administration connection context used for configuring the broker
|
||||||
|
* at startup
|
||||||
|
*/
|
||||||
|
public ConnectionContext getAdminConnectionContext() throws Exception {
|
||||||
|
ConnectionContext adminConnectionContext = getBroker().getAdminConnectionContext();
|
||||||
|
if (adminConnectionContext == null) {
|
||||||
|
adminConnectionContext = createAdminConnectionContext();
|
||||||
|
getBroker().setAdminConnectionContext(adminConnectionContext);
|
||||||
|
}
|
||||||
|
return adminConnectionContext;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory method to create the new administration connection context object.
|
||||||
|
* Note this method is here rather than inside a default broker implementation to
|
||||||
|
* ensure that the broker reference inside it is the outer most interceptor
|
||||||
|
*/
|
||||||
|
protected ConnectionContext createAdminConnectionContext() throws Exception {
|
||||||
|
ConnectionContext context = new ConnectionContext();
|
||||||
|
context.setBroker(getBroker());
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start all transport and network connections, proxies and bridges
|
* Start all transport and network connections, proxies and bridges
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
|
|
|
@ -42,18 +42,18 @@ import java.util.Set;
|
||||||
*
|
*
|
||||||
* @version $Revision$
|
* @version $Revision$
|
||||||
*/
|
*/
|
||||||
public class EmptyBroker implements Broker{
|
public class EmptyBroker implements Broker {
|
||||||
|
|
||||||
public BrokerId getBrokerId(){
|
public BrokerId getBrokerId() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getBrokerName(){
|
public String getBrokerName() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Broker getAdaptor(Class type){
|
public Broker getAdaptor(Class type) {
|
||||||
if (type.isInstance(this)){
|
if (type.isInstance(this)) {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@ -67,152 +67,159 @@ public class EmptyBroker implements Broker{
|
||||||
return Collections.EMPTY_SET;
|
return Collections.EMPTY_SET;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addConnection(ConnectionContext context,ConnectionInfo info) throws Exception{
|
public void addConnection(ConnectionContext context, ConnectionInfo info) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeConnection(ConnectionContext context,ConnectionInfo info,Throwable error) throws Exception{
|
public void removeConnection(ConnectionContext context, ConnectionInfo info, Throwable error) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addSession(ConnectionContext context,SessionInfo info) throws Exception{
|
public void addSession(ConnectionContext context, SessionInfo info) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeSession(ConnectionContext context,SessionInfo info) throws Exception{
|
public void removeSession(ConnectionContext context, SessionInfo info) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addProducer(ConnectionContext context,ProducerInfo info) throws Exception{
|
public void addProducer(ConnectionContext context, ProducerInfo info) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeProducer(ConnectionContext context,ProducerInfo info) throws Exception{
|
public void removeProducer(ConnectionContext context, ProducerInfo info) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Connection[] getClients() throws Exception{
|
public Connection[] getClients() throws Exception {
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActiveMQDestination[] getDestinations() throws Exception{
|
public ActiveMQDestination[] getDestinations() throws Exception {
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TransactionId[] getPreparedTransactions(ConnectionContext context) throws Exception{
|
public TransactionId[] getPreparedTransactions(ConnectionContext context) throws Exception {
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void beginTransaction(ConnectionContext context,TransactionId xid) throws Exception{
|
public void beginTransaction(ConnectionContext context, TransactionId xid) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int prepareTransaction(ConnectionContext context,TransactionId xid) throws Exception{
|
public int prepareTransaction(ConnectionContext context, TransactionId xid) throws Exception {
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void rollbackTransaction(ConnectionContext context,TransactionId xid) throws Exception{
|
public void rollbackTransaction(ConnectionContext context, TransactionId xid) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void commitTransaction(ConnectionContext context,TransactionId xid,boolean onePhase) throws Exception{
|
public void commitTransaction(ConnectionContext context, TransactionId xid, boolean onePhase) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void forgetTransaction(ConnectionContext context,TransactionId transactionId) throws Exception{
|
public void forgetTransaction(ConnectionContext context, TransactionId transactionId) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Destination addDestination(ConnectionContext context,ActiveMQDestination destination) throws Exception{
|
public Destination addDestination(ConnectionContext context, ActiveMQDestination destination) throws Exception {
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeDestination(ConnectionContext context,ActiveMQDestination destination,long timeout) throws Exception{
|
public void removeDestination(ConnectionContext context, ActiveMQDestination destination, long timeout) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Subscription addConsumer(ConnectionContext context,ConsumerInfo info) throws Exception{
|
public Subscription addConsumer(ConnectionContext context, ConsumerInfo info) throws Exception {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeConsumer(ConnectionContext context,ConsumerInfo info) throws Exception{
|
public void removeConsumer(ConnectionContext context, ConsumerInfo info) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeSubscription(ConnectionContext context,RemoveSubscriptionInfo info) throws Exception{
|
public void removeSubscription(ConnectionContext context, RemoveSubscriptionInfo info) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void send(ConnectionContext context,Message message) throws Exception{
|
public void send(ConnectionContext context, Message message) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void acknowledge(ConnectionContext context,MessageAck ack) throws Exception{
|
public void acknowledge(ConnectionContext context, MessageAck ack) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void gc(){
|
public void gc() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void start() throws Exception{
|
public void start() throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void stop() throws Exception{
|
public void stop() throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addBroker(Connection connection,BrokerInfo info){
|
public void addBroker(Connection connection, BrokerInfo info) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeBroker(Connection connection,BrokerInfo info){
|
public void removeBroker(Connection connection, BrokerInfo info) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public BrokerInfo[] getPeerBrokerInfos(){
|
public BrokerInfo[] getPeerBrokerInfos() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notifiy the Broker that a dispatch has happened
|
* Notifiy the Broker that a dispatch has happened
|
||||||
|
*
|
||||||
* @param messageDispatch
|
* @param messageDispatch
|
||||||
*/
|
*/
|
||||||
public void processDispatch(MessageDispatch messageDispatch){
|
public void processDispatch(MessageDispatch messageDispatch) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void processDispatchNotification(MessageDispatchNotification messageDispatchNotification) throws Exception{
|
public void processDispatchNotification(MessageDispatchNotification messageDispatchNotification) throws Exception {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSlaveBroker(){
|
public boolean isSlaveBroker() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isStopped(){
|
public boolean isStopped() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set getDurableDestinations(){
|
public Set getDurableDestinations() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addDestinationInfo(ConnectionContext context,DestinationInfo info) throws Exception{
|
public void addDestinationInfo(ConnectionContext context, DestinationInfo info) throws Exception {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeDestinationInfo(ConnectionContext context,DestinationInfo info) throws Exception{
|
public void removeDestinationInfo(ConnectionContext context, DestinationInfo info) throws Exception {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isFaultTolerantConfiguration(){
|
public boolean isFaultTolerantConfiguration() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ConnectionContext getAdminConnectionContext() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAdminConnectionContext(ConnectionContext adminConnectionContext) {
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,8 @@ import org.apache.activemq.command.SessionInfo;
|
||||||
import org.apache.activemq.command.TransactionId;
|
import org.apache.activemq.command.TransactionId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of the broker where all it's methods throw an BrokerStoppedException.
|
* Implementation of the broker where all it's methods throw an
|
||||||
|
* BrokerStoppedException.
|
||||||
*
|
*
|
||||||
* @version $Revision$
|
* @version $Revision$
|
||||||
*/
|
*/
|
||||||
|
@ -47,7 +48,7 @@ public class ErrorBroker implements Broker {
|
||||||
private final String message;
|
private final String message;
|
||||||
|
|
||||||
public ErrorBroker(String message) {
|
public ErrorBroker(String message) {
|
||||||
this.message=message;
|
this.message = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map getDestinationMap() {
|
public Map getDestinationMap() {
|
||||||
|
@ -58,8 +59,8 @@ public class ErrorBroker implements Broker {
|
||||||
return Collections.EMPTY_SET;
|
return Collections.EMPTY_SET;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Broker getAdaptor(Class type){
|
public Broker getAdaptor(Class type) {
|
||||||
if (type.isInstance(this)){
|
if (type.isInstance(this)) {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@ -169,52 +170,57 @@ public class ErrorBroker implements Broker {
|
||||||
throw new BrokerStoppedException(this.message);
|
throw new BrokerStoppedException(this.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addBroker(Connection connection,BrokerInfo info){
|
public void addBroker(Connection connection, BrokerInfo info) {
|
||||||
throw new BrokerStoppedException(this.message);
|
throw new BrokerStoppedException(this.message);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeBroker(Connection connection,BrokerInfo info){
|
public void removeBroker(Connection connection, BrokerInfo info) {
|
||||||
throw new BrokerStoppedException(this.message);
|
throw new BrokerStoppedException(this.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BrokerInfo[] getPeerBrokerInfos(){
|
public BrokerInfo[] getPeerBrokerInfos() {
|
||||||
throw new BrokerStoppedException(this.message);
|
throw new BrokerStoppedException(this.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void processDispatch(MessageDispatch messageDispatch){
|
public void processDispatch(MessageDispatch messageDispatch) {
|
||||||
throw new BrokerStoppedException(this.message);
|
throw new BrokerStoppedException(this.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void processDispatchNotification(MessageDispatchNotification messageDispatchNotification) throws Exception{
|
public void processDispatchNotification(MessageDispatchNotification messageDispatchNotification) throws Exception {
|
||||||
throw new BrokerStoppedException(this.message);
|
throw new BrokerStoppedException(this.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSlaveBroker(){
|
public boolean isSlaveBroker() {
|
||||||
throw new BrokerStoppedException(this.message);
|
throw new BrokerStoppedException(this.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isStopped(){
|
public boolean isStopped() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set getDurableDestinations(){
|
public Set getDurableDestinations() {
|
||||||
throw new BrokerStoppedException(this.message);
|
throw new BrokerStoppedException(this.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addDestinationInfo(ConnectionContext context,DestinationInfo info) throws Exception{
|
public void addDestinationInfo(ConnectionContext context, DestinationInfo info) throws Exception {
|
||||||
throw new BrokerStoppedException(this.message);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeDestinationInfo(ConnectionContext context,DestinationInfo info) throws Exception{
|
|
||||||
throw new BrokerStoppedException(this.message);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isFaultTolerantConfiguration(){
|
|
||||||
throw new BrokerStoppedException(this.message);
|
throw new BrokerStoppedException(this.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void removeDestinationInfo(ConnectionContext context, DestinationInfo info) throws Exception {
|
||||||
|
throw new BrokerStoppedException(this.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isFaultTolerantConfiguration() {
|
||||||
|
throw new BrokerStoppedException(this.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConnectionContext getAdminConnectionContext() {
|
||||||
|
throw new BrokerStoppedException(this.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAdminConnectionContext(ConnectionContext adminConnectionContext) {
|
||||||
|
throw new BrokerStoppedException(this.message);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,4 +229,12 @@ public class MutableBrokerFilter implements Broker {
|
||||||
return getNext().isFaultTolerantConfiguration();
|
return getNext().isFaultTolerantConfiguration();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ConnectionContext getAdminConnectionContext() {
|
||||||
|
return getNext().getAdminConnectionContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAdminConnectionContext(ConnectionContext adminConnectionContext) {
|
||||||
|
getNext().setAdminConnectionContext(adminConnectionContext);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -180,9 +180,7 @@ public class BrokerView implements BrokerViewMBean {
|
||||||
}
|
}
|
||||||
|
|
||||||
static public ConnectionContext getConnectionContext(Broker broker) {
|
static public ConnectionContext getConnectionContext(Broker broker) {
|
||||||
ConnectionContext context = new ConnectionContext();
|
return broker.getAdminConnectionContext();
|
||||||
context.setBroker(broker);
|
|
||||||
return context;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,6 +85,7 @@ public class RegionBroker implements Broker {
|
||||||
private Map clientIdSet = new HashMap(); // we will synchronize access
|
private Map clientIdSet = new HashMap(); // we will synchronize access
|
||||||
protected PersistenceAdapter adaptor;
|
protected PersistenceAdapter adaptor;
|
||||||
private final DestinationInterceptor destinationInterceptor;
|
private final DestinationInterceptor destinationInterceptor;
|
||||||
|
private ConnectionContext adminConnectionContext;
|
||||||
|
|
||||||
public RegionBroker(BrokerService brokerService,TaskRunnerFactory taskRunnerFactory, UsageManager memoryManager, PersistenceAdapter adapter, DestinationInterceptor destinationInterceptor) throws IOException {
|
public RegionBroker(BrokerService brokerService,TaskRunnerFactory taskRunnerFactory, UsageManager memoryManager, PersistenceAdapter adapter, DestinationInterceptor destinationInterceptor) throws IOException {
|
||||||
this.brokerService = brokerService;
|
this.brokerService = brokerService;
|
||||||
|
@ -533,5 +534,11 @@ public class RegionBroker implements Broker {
|
||||||
return destinationInterceptor;
|
return destinationInterceptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ConnectionContext getAdminConnectionContext() {
|
||||||
|
return adminConnectionContext;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAdminConnectionContext(ConnectionContext adminConnectionContext) {
|
||||||
|
this.adminConnectionContext = adminConnectionContext;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue