Author: alessio.soldano(a)jboss.com
Date: 2007-12-12 11:46:47 -0500 (Wed, 12 Dec 2007)
New Revision: 5276
Added:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/EndpointRecordProcessorDeploymentAspect.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordExtractor.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordExtractorMBean.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordProcessor.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordProcessorMBean.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordExtractor.java
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/DefaultEndpoint.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/EndpointHandlerDeploymentAspect.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/invocation/RecordingServerHandler.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpoint.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpointMBean.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpointRegistry.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/AbstractRecordProcessor.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordBufferProcessor.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordDumpProcessor.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordFactory.java
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordImpl.java
Log:
- new record processor deployment aspect
- updates due to new Endpoint and Record interface
- new management MBeans
- RecordFactory improvements
- minor changes
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/DefaultEndpoint.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/DefaultEndpoint.java 2007-12-12
16:41:32 UTC (rev 5275)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/DefaultEndpoint.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -62,7 +62,6 @@
private List<BindingCustomization> bindingCustomizsations = new
ArrayList<BindingCustomization>();
private String address;
private List<RecordProcessor> recordProcessors = new
Vector<RecordProcessor>();
- private boolean recording = false;
DefaultEndpoint(String targetBean)
{
@@ -262,21 +261,11 @@
this.recordProcessors = new Vector<RecordProcessor>(recordProcessors);
}
- public boolean isRecording()
- {
- return recording;
- }
-
- public void setRecording(boolean value)
- {
- this.recording = value;
- }
-
public void processRecord(Record record)
{
- if (this.isRecording())
+ for (RecordProcessor processor : recordProcessors)
{
- for (RecordProcessor processor : recordProcessors)
+ if (processor.isRecording())
{
boolean match = true;
if (processor.getFilters() != null)
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/EndpointHandlerDeploymentAspect.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/EndpointHandlerDeploymentAspect.java 2007-12-12
16:41:32 UTC (rev 5275)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/EndpointHandlerDeploymentAspect.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -23,11 +23,6 @@
//$Id$
-import java.util.LinkedList;
-import java.util.List;
-
-import org.jboss.wsf.framework.management.recording.RecordBufferProcessor;
-import org.jboss.wsf.framework.management.recording.RecordDumpProcessor;
import org.jboss.wsf.spi.SPIProvider;
import org.jboss.wsf.spi.SPIProviderResolver;
import org.jboss.wsf.spi.deployment.Deployment;
@@ -40,7 +35,6 @@
import org.jboss.wsf.spi.invocation.InvocationType;
import org.jboss.wsf.spi.invocation.RequestHandler;
import org.jboss.wsf.spi.invocation.RequestHandlerFactory;
-import org.jboss.wsf.spi.management.recording.RecordProcessor;
import org.jboss.wsf.spi.metadata.j2ee.EJBArchiveMetaData;
import org.jboss.wsf.spi.metadata.j2ee.EJBMetaData;
import org.jboss.wsf.spi.metadata.j2ee.MDBMetaData;
@@ -77,12 +71,6 @@
if (invocationHandler != null)
ep.setInvocationHandler(invocationHandler);
- //TODO!! still to be configured...
- List<RecordProcessor> recordProcessorList = new
LinkedList<RecordProcessor>();
- recordProcessorList.add(new RecordBufferProcessor());
- recordProcessorList.add(new RecordDumpProcessor());
- ep.setRecordProcessors(recordProcessorList);
-
}
}
Added:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/EndpointRecordProcessorDeploymentAspect.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/EndpointRecordProcessorDeploymentAspect.java
(rev 0)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/EndpointRecordProcessorDeploymentAspect.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -0,0 +1,101 @@
+/*
+ * 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.wsf.framework.deployment;
+
+//$Id$
+
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.management.JMException;
+import javax.management.MBeanServer;
+
+import org.jboss.wsf.common.ObjectNameFactory;
+import org.jboss.wsf.framework.management.recording.ManagedRecordExtractor;
+import org.jboss.wsf.framework.management.recording.ManagedRecordProcessor;
+import org.jboss.wsf.framework.management.recording.RecordBufferProcessor;
+import org.jboss.wsf.framework.management.recording.RecordDumpProcessor;
+import org.jboss.wsf.framework.management.recording.RecordExtractor;
+import org.jboss.wsf.spi.deployment.Deployment;
+import org.jboss.wsf.spi.deployment.DeploymentAspect;
+import org.jboss.wsf.spi.deployment.Endpoint;
+import org.jboss.wsf.spi.management.recording.RecordProcessor;
+
+/**
+ * A deployer that sets the record processors for each endpoint
+ *
+ * @author alessio.soldano(a)jboss.org
+ * @since 12-Dec-2007
+ */
+public class EndpointRecordProcessorDeploymentAspect extends DeploymentAspect
+{
+ private MBeanServer mbeanServer;
+
+ @Override
+ public void create(Deployment dep)
+ {
+ System.out.println("DEPLOYOOOOOOOO");
+ for (Endpoint ep : dep.getService().getEndpoints())
+ {
+ /** Record buffer **/
+ RecordBufferProcessor bufferProc = new RecordBufferProcessor();
+ bufferProc.setName("RecordBuffer");
+ this.registerRecordProcessor(bufferProc, ep);
+ /** Record dump **/
+ RecordDumpProcessor dumpProc = new RecordDumpProcessor();
+ dumpProc.setName("RecordDump");
+ this.registerRecordProcessor(dumpProc, ep);
+
+ List<RecordProcessor> recordProcessorList = new
LinkedList<RecordProcessor>();
+ recordProcessorList.add(bufferProc);
+ recordProcessorList.add(dumpProc);
+ ep.setRecordProcessors(recordProcessorList);
+ }
+ }
+
+ private void registerRecordProcessor(RecordProcessor processor, Endpoint ep)
+ {
+ try
+ {
+ mbeanServer.registerMBean(new ManagedRecordProcessor(processor),
ObjectNameFactory.create(ep.getName() + ",recordProcessor=" +
processor.getName()));
+ if (processor instanceof RecordExtractor)
+ {
+ mbeanServer.registerMBean(new
ManagedRecordExtractor((RecordExtractor)processor), ObjectNameFactory.create(ep.getName()
+ ",recordExtractor="
+ + processor.getName()));
+ }
+ }
+ catch (JMException ex)
+ {
+ log.error("Cannot register record processor with JMX server", ex);
+ }
+ }
+
+ public MBeanServer getMbeanServer()
+ {
+ return mbeanServer;
+ }
+
+ public void setMbeanServer(MBeanServer mbeanServer)
+ {
+ this.mbeanServer = mbeanServer;
+ }
+}
\ No newline at end of file
Property changes on:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/deployment/EndpointRecordProcessorDeploymentAspect.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/invocation/RecordingServerHandler.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/invocation/RecordingServerHandler.java 2007-12-12
16:41:32 UTC (rev 5275)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/invocation/RecordingServerHandler.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -32,7 +32,6 @@
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPMessage;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPMessageContext;
@@ -66,12 +65,10 @@
{
log.info("*** INBOUND ***");
Endpoint endpoint = EndpointAssociation.getEndpoint();
- if (endpoint.isRecording() && endpoint.getRecordProcessors() != null
&& !endpoint.getRecordProcessors().isEmpty())
+ if (this.isRecording(endpoint))
{
- Long groupID = RecordFactory.newGroupID();
- RecordGroupAssociation.pushGroupID(groupID);//check, perhaps we should try
peeking before pushing...
- Record record = RecordFactory.newRecord(groupID);
- record = RecordFactory.newRecord(groupID);
+ Record record = RecordFactory.newRecord();
+ RecordGroupAssociation.pushGroupID(record.getGroupID());//check, perhaps we
should try peeking before pushing...
record.setDate(new Date());
HttpServletRequest httpServletRequest =
(HttpServletRequest)ctx.get(MessageContext.SERVLET_REQUEST);
if (httpServletRequest != null)
@@ -120,9 +117,9 @@
{
Endpoint endpoint = EndpointAssociation.getEndpoint();
log.info("*** OUTBOUND ***");
- if (endpoint.isRecording() && endpoint.getRecordProcessors() != null
&& !endpoint.getRecordProcessors().isEmpty())
+ if (this.isRecording(endpoint))
{
- Long groupID = RecordGroupAssociation.popGroupID();//check, perhaps we should
try peeking before popping...
+ String groupID = RecordGroupAssociation.popGroupID();//check, perhaps we should
try peeking before popping...
Record record = RecordFactory.newRecord(groupID);
record.setDate(new Date());
record.setHeaders((Map<String,List<String>>)(ctx.get(MessageContext.HTTP_RESPONSE_HEADERS)));
@@ -159,4 +156,28 @@
return handleOutbound(ctx);
}
+ /**
+ * Returns true if there's at least a record processor in recording mode
+ *
+ * @param endpoint
+ * @return
+ */
+ private boolean isRecording(Endpoint endpoint)
+ {
+ List<RecordProcessor> processors = endpoint.getRecordProcessors();
+ if (processors == null || processors.isEmpty())
+ {
+ return false;
+ }
+ for (RecordProcessor processor : processors)
+ {
+ if (processor.isRecording())
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
}
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpoint.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpoint.java 2007-12-12
16:41:32 UTC (rev 5275)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpoint.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -25,9 +25,14 @@
import java.util.Date;
import java.util.List;
-import java.util.Set;
-import org.jboss.wsf.framework.management.recording.RecordBufferProcessor;
+import javax.management.JMException;
+import javax.management.MBeanServer;
+
+import org.jboss.logging.Logger;
+import org.jboss.wsf.common.ObjectNameFactory;
+import org.jboss.wsf.framework.management.recording.ManagedRecordExtractor;
+import org.jboss.wsf.framework.management.recording.RecordExtractor;
import org.jboss.wsf.spi.deployment.Endpoint;
import org.jboss.wsf.spi.management.EndpointMetrics;
import org.jboss.wsf.spi.management.recording.Record;
@@ -42,10 +47,13 @@
public class ManagedEndpoint implements ManagedEndpointMBean
{
private Endpoint endpoint;
+ private MBeanServer mbeanServer;
+ private Logger log = Logger.getLogger(this.getClass());
- public ManagedEndpoint(Endpoint endpoint)
+ public ManagedEndpoint(Endpoint endpoint, MBeanServer mbeanServer)
{
this.endpoint = endpoint;
+ this.mbeanServer = mbeanServer;
}
public long getAverageProcessingTime()
@@ -111,57 +119,53 @@
{
endpoint.getLifecycleHandler().stop(endpoint);
}
-
- public boolean isRecording()
+
+ public void processRecord(Record record)
{
- return endpoint.isRecording();
+ endpoint.processRecord(record);
}
-
- public void setRecording(boolean value)
- {
- endpoint.setRecording(value);
- }
- public void processRecord(Record record)
+ public void addRecordProcessor(RecordProcessor processor)
{
- if (this.isRecording())
+ this.getRecordProcessors().add(processor);
+ try
{
- for (RecordProcessor processor : endpoint.getRecordProcessors())
+ mbeanServer.registerMBean(processor, ObjectNameFactory.create(endpoint.getName()
+ ",recordProcessor=" + processor.getName()));
+ if (processor instanceof RecordExtractor)
{
- processor.processRecord(record);
+ mbeanServer.registerMBean(new
ManagedRecordExtractor((RecordExtractor)processor),
ObjectNameFactory.create(endpoint.getName() + ",recordExtractor="
+ + processor.getName()));
}
}
+ catch (JMException ex)
+ {
+ log.error("Cannot register endpoint with JMX server", ex);
+ }
}
- public void addRecordProcessor(RecordProcessor processor)
- {
- this.getRecordProcessors().add(processor);
- }
-
public List<RecordProcessor> getRecordProcessors()
{
return endpoint.getRecordProcessors();
}
- public void setRecordProcessors(List<RecordProcessor> processor)
+ public void setRecordProcessors(List<RecordProcessor> processors)
{
- endpoint.setRecordProcessors(processor);
- }
-
- public String getClientHosts()
- {
- StringBuffer result = new StringBuffer();
- for (RecordProcessor processor : endpoint.getRecordProcessors())
+ endpoint.setRecordProcessors(processors);
+ for (RecordProcessor processor : processors)
{
- if (processor instanceof RecordBufferProcessor)
+ try
{
- Set<String> set = ((RecordBufferProcessor)processor).getClientHosts();
- for (String s : set)
+ mbeanServer.registerMBean(processor,
ObjectNameFactory.create(endpoint.getName() + ",recordProcessor=" +
processor.getName()));
+ if (processor instanceof RecordExtractor)
{
- result.append(s+" ");
+ mbeanServer.registerMBean(new
ManagedRecordExtractor((RecordExtractor)processor),
ObjectNameFactory.create(endpoint.getName() + ",recordExtractor="
+ + processor.getName()));
}
}
+ catch (JMException ex)
+ {
+ log.error("Cannot register endpoint with JMX server", ex);
+ }
}
- return result.toString();
}
}
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpointMBean.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpointMBean.java 2007-12-12
16:41:32 UTC (rev 5275)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpointMBean.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -55,10 +55,6 @@
long getResponseCount();
- boolean isRecording();
-
- void setRecording(boolean value);
-
void processRecord(Record record);
void addRecordProcessor(RecordProcessor processor);
@@ -67,5 +63,4 @@
void setRecordProcessors(List<RecordProcessor> processors);
- public String getClientHosts();
}
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpointRegistry.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpointRegistry.java 2007-12-12
16:41:32 UTC (rev 5275)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/ManagedEndpointRegistry.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -60,7 +60,7 @@
try
{
- ManagedEndpoint jmxEndpoint = new ManagedEndpoint(endpoint);
+ ManagedEndpoint jmxEndpoint = new ManagedEndpoint(endpoint, mbeanServer);
getMbeanServer().registerMBean(jmxEndpoint, endpoint.getName());
}
catch (JMException ex)
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/AbstractRecordProcessor.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/AbstractRecordProcessor.java 2007-12-12
16:41:32 UTC (rev 5275)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/AbstractRecordProcessor.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -31,6 +31,8 @@
import org.jboss.wsf.spi.management.recording.RecordProcessor;
/**
+ * An abstract record processor providing basic implementation
+ * of the processor configuration and filter's management
*
* @author alessio.soldano(a)jboss.com
* @since 8-Dec-2007
@@ -46,9 +48,21 @@
protected boolean processMessageType = true;
protected boolean processOperation = true;
protected boolean processDate = true;
+ protected String name;
+ protected boolean recording = false;
public abstract void processRecord(Record record);
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
public void addFilter(RecordFilter filter)
{
filters.add(filter);
@@ -134,11 +148,23 @@
this.processDate = processDate;
}
+ public boolean isRecording()
+ {
+ return recording;
+ }
+
+ public void setRecording(boolean recording)
+ {
+ this.recording = recording;
+ }
+
public String toString()
{
StringBuffer sb = new StringBuffer();
sb.append(super.toString());
- sb.append(" (processDestinationHost = ");
+ sb.append(" (recording = ");
+ sb.append(recording);
+ sb.append(", processDestinationHost = ");
sb.append(processDestinationHost);
sb.append(", processSourceHost = ");
sb.append(processSourceHost);
Added:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordExtractor.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordExtractor.java
(rev 0)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordExtractor.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -0,0 +1,68 @@
+/*
+ * 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.wsf.framework.management.recording;
+
+//$Id$
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.jboss.wsf.spi.management.recording.Record;
+import org.jboss.wsf.spi.management.recording.RecordFilter;
+
+/**
+ * The record extractor MBean representation
+ *
+ * @author alessio.soldano(a)jboss.org
+ * @since 12-Dec-2007
+ */
+public class ManagedRecordExtractor implements ManagedRecordExtractorMBean
+{
+ private RecordExtractor extractor;
+
+ public ManagedRecordExtractor(RecordExtractor extractor)
+ {
+ this.extractor = extractor;
+ }
+
+ public Set<String> getClientHosts()
+ {
+ return ((RecordExtractor)extractor).getClientHosts();
+ }
+
+ public Map<String, List<Record>> getMatchingRecords(RecordFilter[]
filters)
+ {
+ return ((RecordExtractor)extractor).getMatchingRecords(filters);
+ }
+
+ public Map<String, List<Record>> getRecordsByClientHost(String
clientHost)
+ {
+ return ((RecordExtractor)extractor).getRecordsByClientHost(clientHost);
+ }
+
+ public Map<String, List<Record>> getRecordsByOperation(String namespace,
String localPart)
+ {
+ return ((RecordExtractor)extractor).getRecordsByOperation(namespace, localPart);
+ }
+
+}
Property changes on:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordExtractor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordExtractorMBean.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordExtractorMBean.java
(rev 0)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordExtractorMBean.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -0,0 +1,48 @@
+/*
+ * 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.wsf.framework.management.recording;
+
+//$Id$
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.jboss.wsf.spi.management.recording.Record;
+import org.jboss.wsf.spi.management.recording.RecordFilter;
+
+/**
+ * The record extractor MBean interface
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 12-Dec-2007
+ */
+public interface ManagedRecordExtractorMBean
+{
+ public Map<String, List<Record>> getMatchingRecords(RecordFilter[]
filters);
+
+ public Map<String, List<Record>> getRecordsByOperation(String namespace,
String localPart);
+
+ public Map<String, List<Record>> getRecordsByClientHost(String
clientHost);
+
+ public Set<String> getClientHosts();
+}
Property changes on:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordExtractorMBean.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordProcessor.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordProcessor.java
(rev 0)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordProcessor.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -0,0 +1,146 @@
+/*
+ * 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.wsf.framework.management.recording;
+
+//$Id$
+
+import java.util.List;
+
+import org.jboss.wsf.spi.management.recording.Record;
+import org.jboss.wsf.spi.management.recording.RecordFilter;
+import org.jboss.wsf.spi.management.recording.RecordProcessor;
+
+/**
+ * The record processor MBean representation
+ *
+ * @author alessio.soldano(a)jboss.org
+ * @since 12-Dec-2007
+ */
+public class ManagedRecordProcessor implements ManagedRecordProcessorMBean
+{
+ private RecordProcessor processor;
+
+ public ManagedRecordProcessor(RecordProcessor processor)
+ {
+ this.processor = processor;
+ }
+
+ public void addFilter(RecordFilter filter)
+ {
+ processor.addFilter(filter);
+ }
+
+ public List<RecordFilter> getFilters()
+ {
+ return processor.getFilters();
+ }
+
+ public boolean isProcessDate()
+ {
+ return processor.isProcessDate();
+ }
+
+ public boolean isProcessDestinationHost()
+ {
+ return processor.isProcessDestinationHost();
+ }
+
+ public boolean isProcessHeaders()
+ {
+ return processor.isProcessHeaders();
+ }
+
+ public boolean isProcessMessage()
+ {
+ return processor.isProcessMessage();
+ }
+
+ public boolean isProcessMessageType()
+ {
+ return processor.isProcessMessageType();
+ }
+
+ public boolean isProcessOperation()
+ {
+ return processor.isProcessOperation();
+ }
+
+ public boolean isProcessSourceHost()
+ {
+ return processor.isProcessSourceHost();
+ }
+
+ public void processRecord(Record record)
+ {
+ processor.processRecord(record);
+ }
+
+ public void setFilters(List<RecordFilter> filters)
+ {
+ processor.setFilters(filters);
+ }
+
+ public void setProcessDate(boolean value)
+ {
+ processor.setProcessDate(value);
+ }
+
+ public void setProcessDestinationHost(boolean value)
+ {
+ processor.setProcessDestinationHost(value);
+ }
+
+ public void setProcessHeaders(boolean value)
+ {
+ processor.setProcessHeaders(value);
+ }
+
+ public void setProcessMessage(boolean value)
+ {
+ processor.setProcessMessage(value);
+ }
+
+ public void setProcessMessageType(boolean value)
+ {
+ processor.setProcessMessageType(value);
+ }
+
+ public void setProcessOperation(boolean value)
+ {
+ processor.setProcessOperation(value);
+ }
+
+ public void setProcessSourceHost(boolean value)
+ {
+ processor.setProcessSourceHost(value);
+ }
+
+ public boolean isRecording()
+ {
+ return processor.isRecording();
+ }
+
+ public void setRecording(boolean value)
+ {
+ processor.setRecording(value);
+ }
+}
Property changes on:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordProcessor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordProcessorMBean.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordProcessorMBean.java
(rev 0)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordProcessorMBean.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -0,0 +1,80 @@
+/*
+ * 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.wsf.framework.management.recording;
+
+//$Id$
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.jboss.wsf.spi.management.recording.Record;
+import org.jboss.wsf.spi.management.recording.RecordFilter;
+
+/**
+ * The record processor MBean interface
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 12-Dec-2007
+ */
+public interface ManagedRecordProcessorMBean
+{
+ public void processRecord(Record record);
+
+ public void setRecording(boolean value);
+
+ public boolean isRecording();
+
+ public List<RecordFilter> getFilters();
+
+ public void addFilter(RecordFilter filter);
+
+ public void setFilters(List<RecordFilter> filters);
+
+ public boolean isProcessSourceHost();
+
+ public void setProcessSourceHost(boolean value);
+
+ public boolean isProcessDestinationHost();
+
+ public void setProcessDestinationHost(boolean value);
+
+ public boolean isProcessMessageType();
+
+ public void setProcessMessageType(boolean value);
+
+ public boolean isProcessMessage();
+
+ public void setProcessMessage(boolean value);
+
+ public boolean isProcessHeaders();
+
+ public void setProcessHeaders(boolean value);
+
+ public boolean isProcessOperation();
+
+ public void setProcessOperation(boolean value);
+
+ public boolean isProcessDate();
+
+ public void setProcessDate(boolean value);
+}
Property changes on:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/ManagedRecordProcessorMBean.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordBufferProcessor.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordBufferProcessor.java 2007-12-12
16:41:32 UTC (rev 5275)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordBufferProcessor.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -32,18 +32,23 @@
import java.util.Set;
import java.util.concurrent.ConcurrentLinkedQueue;
+import javax.xml.namespace.QName;
+
import org.jboss.wsf.spi.management.recording.Record;
+import org.jboss.wsf.spi.management.recording.RecordFilter;
import org.jboss.wsf.spi.management.recording.Record.MessageType;
/**
+ * Keeps the last received records in memory and allows user to
+ * search / get statistics on them.
*
* @author alessio.soldano(a)jboss.com
* @since 12-Dec-2007
*/
-public class RecordBufferProcessor extends AbstractRecordProcessor
+public class RecordBufferProcessor extends AbstractRecordProcessor implements
RecordExtractor
{
- private Map<Long, List<Record>> recentRecords =
Collections.synchronizedMap(new HashMap<Long, List<Record>>());
+ private Map<String, List<Record>> recentRecords =
Collections.synchronizedMap(new HashMap<String, List<Record>>());
private ConcurrentLinkedQueue<Long> recentRecordGroups = new
ConcurrentLinkedQueue<Long>();
private int size = 0;
@@ -74,17 +79,17 @@
}
}
- public Map<Long, List<Record>> getRecentRecords()
+ private Map<String, List<Record>> getRecentRecords()
{
synchronized (recentRecords)
{
- return new HashMap<Long, List<Record>>(recentRecords);
+ return new HashMap<String, List<Record>>(recentRecords);
}
}
public Set<String> getClientHosts()
{
- Map<Long, List<Record>> map = this.getRecentRecords();
+ Map<String, List<Record>> map = this.getRecentRecords();
Set<String> hosts = new HashSet<String>();
for (List<Record> list : map.values())
{
@@ -99,17 +104,21 @@
return hosts;
}
- public Map<Long, List<Record>> getRecords(String clientHost)
+ public Map<String, List<Record>> getMatchingRecords(RecordFilter[]
filters)
{
- Map<Long, List<Record>> map = this.getRecentRecords();
- Map<Long, List<Record>> result = new HashMap<Long,
List<Record>>();
+ Map<String, List<Record>> map = this.getRecentRecords();
+ Map<String, List<Record>> result = new HashMap<String,
List<Record>>();
for (List<Record> list : map.values())
{
for (Record record : list)
{
- if (MessageType.INBOUND.equals(record.getMessageType())
- && ((clientHost == null && record.getSourceHost() ==
null) || clientHost.equalsIgnoreCase(record.getSourceHost())))
+ boolean match = true;
+ for (int i = 0; i < filters.length && match; i++)
{
+ match = match && filters[i].match(record);
+ }
+ if (match)
+ {
result.put(record.getGroupID(), list);
break;
}
@@ -118,4 +127,18 @@
return result;
}
+ public Map<String, List<Record>> getRecordsByClientHost(String
clientHost)
+ {
+ RecordFilter[] filters = new RecordFilter[1];
+ filters[0] = new HostFilter(clientHost, true);
+ return this.getMatchingRecords(filters);
+ }
+
+ public Map<String, List<Record>> getRecordsByOperation(String namespace,
String localPart)
+ {
+ RecordFilter[] filters = new RecordFilter[1];
+ filters[0] = new OperationFilter(new QName(namespace, localPart));
+ return this.getMatchingRecords(filters);
+ }
+
}
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordDumpProcessor.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordDumpProcessor.java 2007-12-12
16:41:32 UTC (rev 5275)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordDumpProcessor.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -80,6 +80,10 @@
}
}
}
+ else
+ {
+ sb.append("MESSAGE");
+ }
sb.append(":");
if (this.isProcessDate())
{
Added:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordExtractor.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordExtractor.java
(rev 0)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordExtractor.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -0,0 +1,49 @@
+/*
+ * 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.wsf.framework.management.recording;
+
+//$Id$
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.jboss.wsf.spi.management.recording.Record;
+import org.jboss.wsf.spi.management.recording.RecordFilter;
+
+/**
+ * A record extractor provide users with statistics about the collected records
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 12-Dec-2007
+ */
+public interface RecordExtractor
+{
+ public Map<String, List<Record>> getMatchingRecords(RecordFilter[]
filters);
+
+ public Map<String, List<Record>> getRecordsByOperation(String namespace,
String localPart);
+
+ public Map<String, List<Record>> getRecordsByClientHost(String
clientHost);
+
+ public Set<String> getClientHosts();
+
+}
Property changes on:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordExtractor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordFactory.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordFactory.java 2007-12-12
16:41:32 UTC (rev 5275)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordFactory.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -26,22 +26,38 @@
import org.jboss.wsf.spi.management.recording.Record;
/**
+ * Simple record factory
*
* @author alessio.soldano(a)jboss.com
* @since 8-Dec-2007
*/
public class RecordFactory
{
- public static Long newGroupID()
+ private static long count = 0;
+
+ public static String newGroupID()
{
- //TODO-ALE!! fare meglio... concorrenza
- return new Long(System.currentTimeMillis());
+ long time = System.currentTimeMillis();
+ StringBuilder sb = new StringBuilder();
+ synchronized (RecordFactory.class)
+ {
+ count++;
+ }
+ sb.append(count);
+ sb.append("-");
+ sb.append(time);
+ return sb.toString();
}
-
- public static Record newRecord(Long groupID)
+
+ public static Record newRecord(String groupID)
{
Record record = new RecordImpl();
record.setGroupID(groupID);
return record;
}
+
+ public static Record newRecord()
+ {
+ return newRecord(newGroupID());
+ }
}
Modified:
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordImpl.java
===================================================================
---
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordImpl.java 2007-12-12
16:41:32 UTC (rev 5275)
+++
framework/branches/asoldano/trunk/src/main/java/org/jboss/wsf/framework/management/recording/RecordImpl.java 2007-12-12
16:46:47 UTC (rev 5276)
@@ -45,7 +45,7 @@
private byte[] payload;
private MessageType messageType;
private QName operation;
- private Long groupID;
+ private String groupID;
private Date date;
private String envelope;
@@ -105,7 +105,7 @@
this.headers = headers;
}
- public Long getGroupID()
+ public String getGroupID()
{
return groupID;
}
@@ -115,7 +115,7 @@
return operation;
}
- public void setGroupID(Long groupID)
+ public void setGroupID(String groupID)
{
this.groupID = groupID;
}