Java Agents, JNI and multi-value fields

I am running a 6.5 Domino server with the ini variable JavaVerboseJNI set to 1 so I can see the extra messages from the JNI mechanism in the JVM.

I have a simple scheduled java agent that updates multi-value fields (as well as single value fields) in a large number of documents. When the number of values in the multi-value fields exceeds a certain number, I begin to get the following messages in the server Log:

01/14/2004 05:45:45 AM Agent error: ***ALERT: JNI local ref creation exceeded capacity (creating: 17, limit: 16).

01/14/2004 05:45:45 AM Agent error: at lotus.domino.local.Document.NreplaceItemValue(Native Method)

01/14/2004 05:45:45 AM Agent error: at lotus.domino.local.Document.replaceItemValue(Unknown Source)

01/14/2004 05:45:45 AM Agent error: at org.navyfcu.ccs.AppMember.addToList(AppMember.java:402)

01/14/2004 05:45:45 AM Agent error: at org.navyfcu.ccs.AppMember.updateInvestigator(AppMember.java:287)

01/14/2004 05:45:45 AM Agent error: at org.navyfcu.ccs.AppMember.save(AppMember.java:206)

01/14/2004 05:45:45 AM Agent error: at org.navyfcu.ccs.DailyAssignment.NotesMain(DailyAssignment.java:190)

01/14/2004 05:45:45 AM Agent error: at lotus.domino.AgentBase.runNotes(Unknown Source)

01/14/2004 05:45:45 AM Agent error: at lotus.domino.NotesThread.run(NotesThread.java:208)

Depending on the size of the multi-value fields, the local ref creation can get up to 100 or so.

Does anyone know if this can cause problems and if so, is there a work-around when dealing with multi-value fields in Java.

Please note that I am recycling all objects after they are used, so this is not the issue. When I comment out the code that deals with the multi-value fields, I don’t get these messages.

Thanks

Subject: Java Agents, JNI and multi-value fields

You should be fine. The JVM will handle the expansion. The back end classes use JNI to talk to the lower level Notes api’s and there are JNI object references being used in these calls, so this is normal. It’s up to the back end classes to clean these JNI local refs up when the object is recycled.

Joseph Millar

Principal Software Engineer

Brightline Technology