The Caboteria / Tech Web / JbossTips (12 May 2009, TobyCabot)
(back to JavaNotes)

Example database datasource configs are in docs/example/jca.

Give jboss more memory than the java default - you'll be glad you did (or sorry if you don't)!

Pay attention to the pool sizes in standardjboss.xml, especially the Stateless Session Bean pool size, which is 100 by default. This seems pretty low, at least if you have methods that take a while to perform. If you're using MDB's you'll want to bump the MaximumSize in the Message Driven Bean container-invoker-conf to something larger than the default (which is 15).

A strange error in jboss happened when I had the same ejb-jar declared twice in the application.xml. It caused strange errors that looked like classloader problems. For example, one error was an access violation error when one class tried to access a package-protected method of a class in the same package. Another had to do with a class not being able to call a method in another class because it couldn't find the appropriate signature, even though everything appeared to match.

Oracle

JBoss and Oracle's jdbc driver don't play nice unless you turn on "TrackConnectionByTx".

If you get an error like this when you try to use an Oracle XA datasource:

18:32:14,956 WARN  [TransactionImpl] XAException: tx=TransactionImpl:XidImpl [FormatId=257, GlobalId=DBHMKY11//245, BranchQual=] errorCode=XAER_RMERR
oracle.jdbc.xa.OracleXAException
        at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1157)
        at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:295)
        at org.jboss.resource.adapter.jdbc.xa.XAManagedConnection.start(XAManagedConnection.java:133)
        at org.jboss.tm.TransactionImpl.startResource(TransactionImpl.java:1137)
        at org.jboss.tm.TransactionImpl.enlistResource(TransactionImpl.java:624)
        ...
Then you need to install the Oracle server JVM option.

CMP EJB Finders

I had a problem where I got "EJB Spec Violation" messages indicating that I had violated section 10.5.6 of the spec. Turns out I was trying to declare a custom CMP finder method with a String parameter but it needs to be fully-qualified, i.e. java.lang.String instead. See http://www.jboss.org/thread.jsp?forum=141&thread=33904&message=3783551

Multi-homed machines

jboss uses a lot of ports by default so it's a pain if more than one instance want to share a machine. Weblogic handles this really gracefully - they multiplex all of their comm over one port so it's easy to change, but jboss isn't there yet. http://www.jboss.org/thread.jsp?forum=61&thread=33958&message=3783690

Unified JMX

You can tell jboss and the JVM to use the same JMX server: http://www.jboss.org/community/wiki/JBossMBeansInJConsole

This is great for monitoring.

Edit | Attach | Print version | History: r7 < r6 < r5 < r4 < r3 | Backlinks | Raw View | Raw edit | More topic actions
Copyright © 2008-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding The Caboteria? Send feedback