Gerar Relatorio com uma Coleção [Jasper Reports]

Hey galera!

Alguem pode me indicar quais passos devo seguir para gerar um relatório com o Jasper Report e uma coleção de objetos?

Por hora é isso o que eu tenho:
Estou utilizando iReport 3.5.0 e a API Jasper Reports 2.0.4

	public AthenaMessage generateReports(AthenaMessage message) {
		log.info("Generating reports...");

		log.debug("Compilando report");
		try {
			JasperReport report = JasperCompileManager.compileReport("C:\\Mikhas\\Projetos\\Athena\\AthenaTradesReport.jrxml");

			JRBeanCollectionDataSource source = new JRBeanCollectionDataSource(message.getTrades());

			JasperPrint print = JasperFillManager.fillReport(report, new HashMap(), source);

			JasperExportManager.exportReportToPdfFile(print, "C:\\Mikhas\\Projetos\\Athena\\AthenaTradesReport.pdf");
		} catch (JRException e) {
			log.debug("Erro ao gerar relatorio", e);
		}

		message.setTradesReport(null);
		return message;
	}

o ultimo erro que obtive foi:

org.xml.sax.SAXParseException: Attribute "xmlns" must be declared for element type "jasperReport".
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.addDTDDefaultAttrsAndValidate(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver.scanRootElementHook(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
	at org.apache.commons.digester.Digester.parse(Digester.java:1863)
	at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:239)
	at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:226)
	at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:214)
	at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:168)
	at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:152)
	at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:151)
	at com.jpmorgan.brz.lbo.athena.component.AthenaReportGenerator.generateReports(AthenaReportGenerator.java:35)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.mule.model.resolvers.AbstractEntryPointResolver.invokeMethod(AbstractEntryPointResolver.java:154)
	at org.mule.model.resolvers.ReflectionEntryPointResolver.invoke(ReflectionEntryPointResolver.java:178)
	at org.mule.model.resolvers.DefaultEntryPointResolverSet.invoke(DefaultEntryPointResolverSet.java:50)
	at org.mule.component.DefaultLifecycleAdapter.invoke(DefaultLifecycleAdapter.java:205)
	at org.mule.component.AbstractJavaComponent.invokeComponentInstance(AbstractJavaComponent.java:83)
	at org.mule.component.AbstractJavaComponent.doInvoke(AbstractJavaComponent.java:74)
	at org.mule.component.AbstractComponent.invokeInternal(AbstractComponent.java:133)
	at org.mule.component.AbstractComponent.intercept(AbstractComponent.java:93)
	at org.mule.component.ComponentInterceptorInvoker.invoke(ComponentInterceptorInvoker.java:52)
	at org.mule.interceptor.EnvelopeInterceptor.intercept(EnvelopeInterceptor.java:41)
	at org.mule.component.ComponentInterceptorInvoker.invoke(ComponentInterceptorInvoker.java:48)
	at org.mule.component.AbstractComponent.invoke(AbstractComponent.java:165)
	at org.mule.service.AbstractService.invokeComponent(AbstractService.java:929)
	at org.mule.model.seda.SedaService.access$100(SedaService.java:56)
	at org.mule.model.seda.SedaService$ComponentStageWorker.run(SedaService.java:574)
	at org.mule.work.WorkerContext.run(WorkerContext.java:310)
	at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061)
	at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575)
	at java.lang.Thread.run(Unknown Source)

O codigo esta um pouco feio mas é só um prototipo.

Grato