Arquivo por Autor

Criando threads com stack size pré-definido

Publicado: janeiro 17, 2011 por Régis Leandro em Java
Tags:, ,

Utilizando o seguinte Thread constructor:

public Thread(ThreadGroup group,
Runnable target,
String name,
long stackSize)

você consegue determinar o stack size do thread no momento de sua criação. Um exemplo de utilização seria:

new Thread(null, new Runnable() {
public void run() {
new Main().run();
}
}, "1", 1 << 23).start();

onde o thread de nome “1” tem seu stack size configurado para 8MB.

JPA e Connection Pool Glassfish

Publicado: dezembro 18, 2009 por Régis Leandro em Java
Tags:, , , , , ,

Utilizando Hibernate + JPA + pool de conexões no Glassfish, no arquivo persistence.xml, além de ser necessário configurar o transaction-type para JTA e o jta-datasource, é necessário adicionar ao arquivo a seguinte linha:
<property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory" />

A quem interessar, neste link tem um passo a passo para configurar o pool de conexões.

Um problema com o qual me deparei aqui, ao construir um relatório Master/Detail no JasperReports, utilizando o Firebird com o banco de dados, na execução do relatório e do seu sub-Report começou a ocorrer o seguinte erro:
“Error filling print… Unable to get next record.
net.sf.jasperreports.engine.JRException: Unable to get next record. at net.sf.jasperreports.engine.JRResultSetDataSource.next(JRResultSetDataSource.java:99) at net.sf.jasperreports.engine.fill.JRFillDataset.advanceDataSource(JRFillDataset.java:842) at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:760) at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1078) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:111) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:751)

at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:660)

at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:815) at java.lang.Thread.run(Unknown Source)

Caused by: org.firebirdsql.jdbc.FBSQLException: The result set is closed at org.firebirdsql.jdbc.FBResultSet.checkCursorMove(FBResultSet.java:217)

at org.firebirdsql.jdbc.FBResultSet.next(FBResultSet.java:249) at net.sf.jasperreports.engine.JRResultSetDataSource.next(JRResultSetDataSource.java:95) … 11 more
Print was not filled. Try using an EmptyDataSource…”

a solução para esse problema é bastante simples, e foi encontrada no fórum da JasperForge, na string de conexão do jdbc
adicionar “?defaultResultSetHoldable=True” a url de conexão, por exemplo:
“jdbc:firebirdsql:10.1.1.1:dbPath?defaultResultSetHoldable=True”