SlideShare una empresa de Scribd logo
1 de 63
Descargar para leer sin conexión
Java: Finding Bugs, Fixing Bugs 
in IBM Domino Designer and XPages 
Julian Robichaux Senior Software Engineer, panagenda 
Paul T. Calhoun Senior Software Engineer, panagenda 
MWLUG 2014
Your Speakers 
• Julian Robichaux 
- Developer at panagenda, an Austrian based IT management 
software provider 
- Purveyor of nsftools.com 
- Writer of open-­‐source (and commercial) software 
- Speaker at Lotusphere since 2006, many LUG and View 
conferences in various countries 
- Doing almost exclusively Java and Eclipse development (often 
Notes related) for the past few years 
- Not as pretty as Paul Calhoun, but still easy on the eyes
Your Speakers 
• Paul T. Calhoun 
- I have been working with Lotus/IBM technologies for the past 25 
years. 
- I have been certified in both Administration and Development on 
every major release of Notes/Domino since release 3. 
- My focus has always been on training and enablement of 
Administrators and Developers, but I also provide mentoring and 
consulting services. 
- Most recently I have been focused on XPages consulting, training 
and enablement. 
- When not working, my passion is spending all my spare time with 
my awesomely wonderful grand-­‐kids. (WARNING: I have 
pictures !)
Agenda 
• Debugging 
- Java Agents 
- XPages 
• Logging 
• Using FindBugs 
• Using JConsole and Dump Analysis 
• Q & A
Debugging Java Agents 
• There are several steps to enable a Java debugger to debug a 
Java agent running on the Notes client: 
- Enable Java debugging on the Notes client. 
- Enable debugging in the agent (compile code with debug info). 
- Add thread sleep commands to the Java agent. 
- Set breakpoints in the Java code. 
- Create a Debug Configuration in the Java Perspective in Domino 
Designer to connect to the Notes client. 
- Add the agent source to the debug configuration. 
- Run the debugger in Domino Designer client. 
- Start the Notes agent to debug. 
- Debug the code as needed. 
• Detach the debugger from Notes.
Enable Debugger 
• Follow these steps to enable remote Java debugging on the 
Notes client: 
- Choose Tools | Java Debugging Preferences from the menu. 
- In the Java Debugging Preferences dialog, choose the appropriate 
types of agents to debug and set the port values. 
- Port values must be unique when enabling debugging for more 
than one type of agent. 
- Click [OK] to save the settings and close the dialog.
Enable Debugger 
• Variables in the NOTES.INI file are added to reflect the port 
settings and agent type selections 
- JavaDebugClientForeground=1 
- JavaDebugClientForegroundPort=8701 
- JavaDebugClientScheduled=1 
- JavaDebugClientScheduledPort=8702 
- JavaDebugClientWebPreview=1 
- JavaDebugClientWebPreviewPort=8703 
! 
• Notes must be restarted for the NOTES.INI changes to take 
effect. Click [OK] when prompted to restart Notes. 
• Exit and restart Notes.
Enable Agent for Debugging 
• Follow these steps to enable debugging for a Java agent: 
- Open the Java agent's Properties. 
- From the Basics tab of the Properties view 
• Enable the 'Compile Java code with debugging information' option. 
• This will add line numbers and information about variables to the 
compiled code to allow the agent to be debugged.
Enable Breakpoints 
• Follow these steps to add breakpoints to an agent: 
- Open the agent in Designer. 
- Breakpoints can be added by either: 
• Right-­‐clicking in the left margin of the code editor and choosing 
• Toggle Breakpoint 
• Double-­‐clicking in the margin next to the code to add/remove the 
breakpoint. 
- The breakpoints are indicated by a blue dots in the bar beside the 
editor margin.
Create Debug Configuration 
• This only has to be done once 
• In Designer: 
- Click the down arrow next to the blue “Debug” icon 
- Choose “Manage Debug Configurations”
Create Debug Configuration 
• In the Debug Configurations Dialog 
- Right Click on “Remote Java Application” 
- Choose “New”
Set Debug Configuration 
• Provide a Name 
• Change Port to Port set in Notes.ini 
- Default is 8701 but can be any open port 
• Click “Apply” and “Close” to save 
• Click “Apply” and “Debug” to start the debugger listening on 
the defined port
Switch to the Debug Perspective 
• If not already in the Debug Perspective a dialog will open 
prompting to switch to that perspective 
- Choose “Yes” 
• Optionally choose “Remember my decision” to suppress this 
dialog from popping up every time
The Debug Perspective
Debugging 
• The Code will stop at the first breakpoint 
• From there you can… 
- Inspect (and change) variables 
- Step through the code using the icons
Stop the Debugger 
• After the debugging session is complete the debugger is still 
“listening” on the open port 
• In the debug perspective make sure to “Disconnect” from the 
listening port to turn debugging off
Debugging Java XPages 
• If XPages make calls to Java Code elements then that Java 
code can be debugged using a similar process to debugging 
agents. 
• In order to debug Java code called by an XPage add the 
following lines to the notes.ini 
- JavaEnableDebug=1 
- JavaDebugOptions=transport=dt_socket,server=y,suspend=n,addr 
ess=<port to listen on> 
• GOTCHA !! 
- If the previous ports are enabled for Java agent debugging then 
“connecting” to the port above will never work 
- Disable the Java Debug Ports and restart your Notes, Designer 
client prior to debugging Java called from XPages 
- Your firewall might block the port
Debug Configuration 
• Create a new Debug Configuration to “listen” on the port 
that was set in the notes.ini file 
• Preview the XPage to start the local web preview 
• Start the debugger
Execute XPage Action 
• Set breakpoints in the Java code to be debugged 
• In the XPage in the browser 
- Execute the action that will call the Java code 
• If not already in the Debug perspective you will be prompted 
to switch to that perspective 
• Step through your code reviewing the variable values at each 
breakpoint 
• Clear breakpoints and resume to end 
• Disconnect from Debugger when done.
WARNING 
DO NOT EVER ENABLE 
DEBUGGING ON A 
PRODUCTION SERVER
Demo
Agenda 
• Debugging 
- Java Agents 
- XPages 
• Logging 
• Using FindBugs 
• Using JConsole and Dump Analysis 
• Q & A
Logging
Logging Basics 
• System.out.println() is NOT logging! 
• Java has native logging classes 
- java.util.logging 
- There are other popular logging frameworks, which we will ignore 
for the sake of brevity 
- The native Java classes work just fine 
• The big picture: 
- Each bit of code can have its own logger, or loggers can be shared 
- Java manages all the different loggers being used 
- The logging level determines the severity of the message 
- Different handlers send messages to the console or to files
Logging Example 
create logger 
log to various 
levels 
easy 
Exception 
handling
Logging Levels 
• Log Levels, in order of highest to lowest: 
- SEVERE – serious failure, horrible stuff 
- WARNING – potential problem 
- INFO – informational, non-­‐technical 
- CONFIG – system/program configuration 
- FINE – simplest trace messages 
- FINER – medium trace messages 
- FINEST – detailed trace messages
Interpreting Levels 
• What level you use for your messages is a matter of personal 
preference. Here’s a general guideline/suggestion: 
- Showstopping issues go to SEVERE 
- Errors your admin (and nosy users) should see go to WARNING 
- Unobtrusive “heartbeat” kinds of messages go to INFO 
- Start and stop messages go to CONFIG 
- Debug info goes to FINE/ER/EST, with FINEST being very tedious 
and verbose 
• These are “trace” levels 
• Generally only enabled for troubleshooting purposes
Log Handlers 
• Typical log handlers write to either the console or a file 
• There are default handlers for different contexts 
- Java agents: Java console (client), server console (server) 
- XPages: server console (server), files (client and server) 
- Plugins: OSGi console, files 
• Handlers also have levels 
- Console normally only displays log messages for SEVERE, 
WARNING, and INFO 
- File logs often display log messages for all levels
Logging Example 
where did 
this one go?
Log Levels and Output 
• Loggers often have a default level of INFO 
• This means that by default, any messages with a level lower 
than INFO will not be logged anywhere 
- So messages at level CONFIG and FINE/ER/EST will never be sent 
to a Handler because the Logger discards them 
• Messages get filtered by the Logger before they are passed to 
the Handler 
- Even a Handler at Level.FINEST will not get any FINE/ER/EST 
messages if the Logger is set to Level.INFO
Adjusting Log Levels 
• Adjusting log levels programmatically 
- setLevel() for Logger and Handler 
- This will cause a SecurityException! 
- You can get around this by editing jvm/lib/security/java.policy 
- permission java.util.logging.LoggingPermission "control" 
• Adjusting log levels with config files 
- Notes agents: {notes}jvmliblogging.properties 
- XPages: {domino}datadominoworkspace.configrcpinstall.properties
Example Log Level Adjustment 
Don’t forget 
the .level!
Logging Quirks in Notes 
• Prior to 8.5.3 FP2, Java logging in Notes worked just fine 
- Although logging in local agents didn’t log anywhere by default 
• In 9.0.0 and 8.5.3 FP2, FP3, and FP4 Java logging gave errors 
- java.security.AccessControlException 
- Add LoggingPermission to jvm/lib/security/java.policy 
• In 9.0.1 and 8.5.3 FP5, Java logging worked again 
- NEW: Local Java agents log to the Java Agent Console by default 
- NEW: if you still need the LoggingPermission so you can set 
custom Handlers or Levels, you also need to add a special 
SecurityPermission 
• http://www-­‐01.ibm.com/support/docview.wss?uid=swg21669594
XPages Log Output 
• XPages logging trace log files 
- Server 8.5.1: none, server console only 
- Server 8.5.2+: {domino}datadominoworkspacelogs 
• SEVERE messages still show up on the console too 
- XPiNC: {notes}dataworkspacelogs 
• Default logger level is WARNING, not INFO 
• Prior to 8.5.3, non-­‐logged XPages exceptions also used to 
show up in the trace logs. Now they are in 
{notes}dataIBM_TECHNICAL_SUPPORTxpages_exc_*.log 
- http://www-­‐01.ibm.com/support/docview.wss?uid=swg1LO66802
Viewing Trace Log Files 
• Trying to view the trace log files as raw XML is… painful 
• A better way is to right-­‐click them in the “logs” folder and 
open them in a browser 
- There is an XSLT file that will format them nicely for you 
• HOWEVER, if the client or server is still running, the XSLT file 
won’t work because the closing XML tag is missing 
- Make a copy, open in a text editor, and add a closing 
</CommonBaseEvents> tag to the end. Then open in a browser. 
- Make sure you open the copy from within the “logs” folder; 
otherwise the XSLT file will not be found 
- Sometimes log messages don’t show up immediately in the log 
files! Everything gets flushed when you shut down the server.
XPages Logging Example
XPages Logging Example
XPages Logging Example
Logging Best Practices 
• Use the same logger for your entire package (maybe even 
your entire library) 
• Most messages should be logged to FINE/ER/EST; don’t 
clutter up the console with INFO messages 
• Log actions, but not every step of a method or every single 
get/set – logging is NOT a replacement for a debugger 
• DO NOT EVER log sensitive data 
- Personal user information, passwords, system “secrets” 
- “No one will ever look at those anyway” is bad security
Agenda 
• Debugging 
- Java Agents 
- XPages 
• Logging 
• Using FindBugs 
• Using JConsole and Dump Analysis 
• Q & A
FindBugs 
• FindBugs is a program that uses static analysis to look for 
bugs in Java code. 
- Current version is 3.x 
• Source and Documentation at 
- http://findbugs.cs.umd.edu/eclipse 
• Latest version of FindBugs CANNOT be installed into DDE 
natively 
- Either install in a stand alone version of Eclipse 
- Use FindBugs for Domino Designer from OpenNTF 
- FYI, This is a version 2.x implementation of FindBugs 
• http://www.openntf.org/main.nsf/project.xsp?r=project/FindBugs 
%20for%20DominoDesigner
FindBugs 
• Available as an Eclipse plug-­‐in, install instructions at 
- http://findbugs.cs.umd.edu/eclipse 
• Agents contained in an NSF are not “readable” during the 
FindBugs analysis. 
- The agent code will need to be exported and imported into Eclipse 
for analysis.
Change FindBugs Properties 
• Change the FindBugs Properties to show all bugs
Running FindBugs 
• In Domino Designer open the Package Explorer view 
- If this view is not in the current perspective, either 
• Switch to the XPages perspective 
• Add it to the current working perspective 
• Right click over the code folder to be analyzed and choose 
“Run FindBugs”
FindBugs Perspective 
• After analyzing code, switch to the FindBugs perspective 
• Or add the Bug Explorer view to the current perspective 
• Remediate the found bugs
Demo
Agenda 
• Debugging 
- Java Agents 
- XPages 
• Logging 
• Using FindBugs 
• Using JConsole and Dump Analysis 
• Q & A
My Notes Client is Slow! 
• Troubleshooting slow performance is tricky 
- How do you define “slow”? 
- How do you know it’s your code and not something else? 
- Task Manager only tells you about high-­‐level processes 
• Much easier to troubleshoot on a client, rather than a server 
- Not disruptive to restart 
- Easy to change parameters 
- Crash at will! 
• Whenever possible, port your Java code to a local Notes 
agent or a local XPage for troubleshooting
A Tale of Two VMs 
• The Notes client actually has two Java VMs for running code 
- Java agents 
- The rest of the Notes client (including local XPages) 
• The VM for Java agents is adjusted with: 
- Notes.ini settings 
- {notes}jvmlib properties files 
• The VM for everything else (on the client) is adjusted with: 
- {notes}frameworkrcpdeployjvm.properties 
- {data}workspace.configrcpinstall.properties
JConsole 
• JConsole is a tool for monitoring performance and resource 
usage in a running JVM 
- http://docs.oracle.com/javase/6/docs/technotes/guides/ 
management/jconsole.html 
• I wrote an article on setting this up for local XPages and 
plugins (non-­‐Java-­‐agents) here: 
- http://www.socialbizug.org/blogs/2ec5d0ed-­‐ 
d04e-­‐4b18-­‐9610-­‐9819fcebca79/entry/ 
using_jconsole_to_monitor_your_ibm_notes_client 
• Quick demo…
JConsole Screenshot
JConsole for Local Java Agents 
• To use JConsole to monitor local Java agents, there’s a trick 
- Add JavaUserOptionsFile to your Notes.ini file: 
• JavaUserOptionsFile=c:IBMNotesjava.options.txt 
- In your Java options file add these lines: 
• -­‐Dcom.sun.management.jmxremote.port=9876 
-­‐Dcom.sun.management.jmxremote.ssl=false 
-­‐Dcom.sun.management.jmxremote.authenticate=false 
• Connect JConsole to the jmxremote.port you defined 
- This port won’t be active until AFTER you run a Java agent 
- Make sure nothing else is using that port 
- Make sure the firewall allows that port to be used
JavaUserOptionsFile
Analyzing Dump Files 
• If your Notes client (or Domino server) crashes due to a Java 
problem, it will usually generate a core dump file 
- default location is workspacelogs 
- Just a text file 
- Shows what threads were running, system info, etc. 
• IBM Thread and Memory Dump Analyzer does a good job of 
parsing the core dump file for you 
- https://www.ibm.com/developerworks/community/groups/ 
service/html/communityview?communityUuid=2245aa39-­‐ 
fa5c-­‐4475-­‐b891-­‐14c205f7333c 
- run like this: java -Xmx500m -jar jca455.jar
IBM Memory Dump Analyzer
Heap Dumps 
• Heap Dumps are a snapshot of the JVM threads and 
processes at a specific point in time, while it’s running 
- Like a slice of what you see in JConsole 
• Used for: 
- Tracking down memory leaks 
- Finding high-­‐memory-­‐use objects (and arrays) 
- Finding objects that are unexpectedly still in memory 
• IBM Heap Analyzer is a nice tool for viewing the information 
- https://www.ibm.com/developerworks/community/alphaworks/tech/ 
heapanalyzer 
- http://www-­‐01.ibm.com/support/docview.wss?uid=swg27006624&aid=1
How to Generate a Heap Dump 
• Generating a Heap Dump file (no crash required!) 
- Domino XPages 
• tell http xsp heap dump 
• XPages Toolbox ( http://www.openntf.org/p/XPages%20Toolbox ) 
- Notes Client (from a command prompt) 
• notesframeworkrcprcplauncher.exe -­‐com.ibm.rcp.core.logger#dump heap -­‐dumps heapdump 
• writes to {data}workspacelogsheapdump.###.phd by default 
• You can also do a core (thread) dump with: 
• notesframeworkrcprcplauncher.exe -­‐com.ibm.rcp.core.logger#dump threads -­‐dumps javacore 
- Java Agent 
• com.ibm.jvm.Dump.HeapDump(); 
• writes to {notes}frameworkheapdump.###.phd
IBM Heap Analyzer Screenshot
IBM Heap Analyzer Screenshot
IBM Heap Analyzer Screenshot 
2318 Notes Documents 
2318 Notes Items 
1 Notes View 
1 Notes Database 
1 Notes Session 
1 ??? 
——————————— 
4640 NotesWeakReferences
Agenda 
• Debugging 
- Java Agents 
- XPages 
• Logging 
• Using FindBugs 
• Using JConsole and Dump Analysis 
• Q & A
Q & A 
Questions? 
Anyone?
THANK YOU 
Julian Robichaux 
panagenda 
jrobichaux@panagenda.com 
MWLUG 2014 
Paul Calhoun 
panagenda 
paul.calhoun@panagenda.com

Más contenido relacionado

La actualidad más candente

Introduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsIntroduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsEric Hogue
 
Engage2022 - Domino Admin Tips
Engage2022 - Domino Admin TipsEngage2022 - Domino Admin Tips
Engage2022 - Domino Admin TipsGabriella Davis
 
A Introduction of Packer
A Introduction of PackerA Introduction of Packer
A Introduction of PackerFreyr Lin
 
Enable Domino Data Access Services (DAS)
Enable Domino Data Access Services (DAS)Enable Domino Data Access Services (DAS)
Enable Domino Data Access Services (DAS)Slobodan Lohja
 
Fixing Domino Server Sickness
Fixing Domino Server SicknessFixing Domino Server Sickness
Fixing Domino Server SicknessGabriella Davis
 
Learn everything about IBM iNotes Customization
Learn everything about IBM iNotes CustomizationLearn everything about IBM iNotes Customization
Learn everything about IBM iNotes CustomizationIBM Connections Developers
 
Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Wangeun Lee
 
Domino OSGi Development
Domino OSGi DevelopmentDomino OSGi Development
Domino OSGi DevelopmentPaul Fiore
 
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked ChangesJiyeon Seo
 
FE로 취업 전에 알았으면 좋았을 것들
FE로 취업 전에 알았으면 좋았을 것들FE로 취업 전에 알았으면 좋았을 것들
FE로 취업 전에 알았으면 좋았을 것들Taegon Kim
 
Testing with JUnit 5 and Spring - Spring I/O 2022
Testing with JUnit 5 and Spring - Spring I/O 2022Testing with JUnit 5 and Spring - Spring I/O 2022
Testing with JUnit 5 and Spring - Spring I/O 2022Sam Brannen
 
Engage 2020 - HCL Notes V11 Performance Boost
Engage 2020 - HCL Notes V11 Performance BoostEngage 2020 - HCL Notes V11 Performance Boost
Engage 2020 - HCL Notes V11 Performance BoostChristoph Adler
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 introTerry Cho
 
MuleSoft Deployment Strategies (RTF vs Hybrid vs CloudHub)
MuleSoft Deployment Strategies (RTF vs Hybrid vs CloudHub)MuleSoft Deployment Strategies (RTF vs Hybrid vs CloudHub)
MuleSoft Deployment Strategies (RTF vs Hybrid vs CloudHub)Prashanth Kurimella
 
Best Practice TLS for IBM Domino
Best Practice TLS for IBM DominoBest Practice TLS for IBM Domino
Best Practice TLS for IBM DominoJared Roberts
 
Implementing Certificate Based Authentication for HCL Traveler Access - Enga...
 Implementing Certificate Based Authentication for HCL Traveler Access - Enga... Implementing Certificate Based Authentication for HCL Traveler Access - Enga...
Implementing Certificate Based Authentication for HCL Traveler Access - Enga...Milan Matejic
 
Angular Interview Questions-PDF.pdf
Angular Interview Questions-PDF.pdfAngular Interview Questions-PDF.pdf
Angular Interview Questions-PDF.pdfJohnLeo57
 
Swagger / Quick Start Guide
Swagger / Quick Start GuideSwagger / Quick Start Guide
Swagger / Quick Start GuideAndrii Gakhov
 

La actualidad más candente (20)

HCL Domino V12 - TOTP
HCL Domino V12 - TOTPHCL Domino V12 - TOTP
HCL Domino V12 - TOTP
 
Introduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsIntroduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec Jenkins
 
Engage2022 - Domino Admin Tips
Engage2022 - Domino Admin TipsEngage2022 - Domino Admin Tips
Engage2022 - Domino Admin Tips
 
A Introduction of Packer
A Introduction of PackerA Introduction of Packer
A Introduction of Packer
 
Enable Domino Data Access Services (DAS)
Enable Domino Data Access Services (DAS)Enable Domino Data Access Services (DAS)
Enable Domino Data Access Services (DAS)
 
Fixing Domino Server Sickness
Fixing Domino Server SicknessFixing Domino Server Sickness
Fixing Domino Server Sickness
 
Learn everything about IBM iNotes Customization
Learn everything about IBM iNotes CustomizationLearn everything about IBM iNotes Customization
Learn everything about IBM iNotes Customization
 
Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계
 
Domino OSGi Development
Domino OSGi DevelopmentDomino OSGi Development
Domino OSGi Development
 
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
 
HCL Domino REST API 利用ガイド
HCL Domino REST API 利用ガイドHCL Domino REST API 利用ガイド
HCL Domino REST API 利用ガイド
 
FE로 취업 전에 알았으면 좋았을 것들
FE로 취업 전에 알았으면 좋았을 것들FE로 취업 전에 알았으면 좋았을 것들
FE로 취업 전에 알았으면 좋았을 것들
 
Testing with JUnit 5 and Spring - Spring I/O 2022
Testing with JUnit 5 and Spring - Spring I/O 2022Testing with JUnit 5 and Spring - Spring I/O 2022
Testing with JUnit 5 and Spring - Spring I/O 2022
 
Engage 2020 - HCL Notes V11 Performance Boost
Engage 2020 - HCL Notes V11 Performance BoostEngage 2020 - HCL Notes V11 Performance Boost
Engage 2020 - HCL Notes V11 Performance Boost
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 intro
 
MuleSoft Deployment Strategies (RTF vs Hybrid vs CloudHub)
MuleSoft Deployment Strategies (RTF vs Hybrid vs CloudHub)MuleSoft Deployment Strategies (RTF vs Hybrid vs CloudHub)
MuleSoft Deployment Strategies (RTF vs Hybrid vs CloudHub)
 
Best Practice TLS for IBM Domino
Best Practice TLS for IBM DominoBest Practice TLS for IBM Domino
Best Practice TLS for IBM Domino
 
Implementing Certificate Based Authentication for HCL Traveler Access - Enga...
 Implementing Certificate Based Authentication for HCL Traveler Access - Enga... Implementing Certificate Based Authentication for HCL Traveler Access - Enga...
Implementing Certificate Based Authentication for HCL Traveler Access - Enga...
 
Angular Interview Questions-PDF.pdf
Angular Interview Questions-PDF.pdfAngular Interview Questions-PDF.pdf
Angular Interview Questions-PDF.pdf
 
Swagger / Quick Start Guide
Swagger / Quick Start GuideSwagger / Quick Start Guide
Swagger / Quick Start Guide
 

Destacado

Logging library migrations - A case study for the Apache Software Foundation ...
Logging library migrations - A case study for the Apache Software Foundation ...Logging library migrations - A case study for the Apache Software Foundation ...
Logging library migrations - A case study for the Apache Software Foundation ...corpaulbezemer
 
SCAM 2014 - A few notes from the Program Chairs
SCAM 2014 - A few notes from the Program ChairsSCAM 2014 - A few notes from the Program Chairs
SCAM 2014 - A few notes from the Program ChairsRocco Oliveto
 
ICSME2014
ICSME2014ICSME2014
ICSME2014swy351
 
Introduction to logging in django
Introduction to logging in djangoIntroduction to logging in django
Introduction to logging in djangoSiva Arunachalam
 
Logging Application Behavior to MongoDB
Logging Application Behavior to MongoDBLogging Application Behavior to MongoDB
Logging Application Behavior to MongoDBRobert Stewart
 
Log Engineering: Towards Systematic Log Mining to Support the Development of ...
Log Engineering: Towards Systematic Log Mining to Support the Development of ...Log Engineering: Towards Systematic Log Mining to Support the Development of ...
Log Engineering: Towards Systematic Log Mining to Support the Development of ...SAIL_QU
 

Destacado (6)

Logging library migrations - A case study for the Apache Software Foundation ...
Logging library migrations - A case study for the Apache Software Foundation ...Logging library migrations - A case study for the Apache Software Foundation ...
Logging library migrations - A case study for the Apache Software Foundation ...
 
SCAM 2014 - A few notes from the Program Chairs
SCAM 2014 - A few notes from the Program ChairsSCAM 2014 - A few notes from the Program Chairs
SCAM 2014 - A few notes from the Program Chairs
 
ICSME2014
ICSME2014ICSME2014
ICSME2014
 
Introduction to logging in django
Introduction to logging in djangoIntroduction to logging in django
Introduction to logging in django
 
Logging Application Behavior to MongoDB
Logging Application Behavior to MongoDBLogging Application Behavior to MongoDB
Logging Application Behavior to MongoDB
 
Log Engineering: Towards Systematic Log Mining to Support the Development of ...
Log Engineering: Towards Systematic Log Mining to Support the Development of ...Log Engineering: Towards Systematic Log Mining to Support the Development of ...
Log Engineering: Towards Systematic Log Mining to Support the Development of ...
 

Similar a Java: Finding Bugs, Fixing Bugs in IBM Domino Designer and XPages

Java developer trainee implementation and import
Java developer trainee implementation and importJava developer trainee implementation and import
Java developer trainee implementation and importiamluqman0403
 
Connect 2014 JMP101: Java for XPages Development
Connect 2014 JMP101: Java for XPages DevelopmentConnect 2014 JMP101: Java for XPages Development
Connect 2014 JMP101: Java for XPages Developmentpanagenda
 
Compilers and interpreters
Compilers and interpretersCompilers and interpreters
Compilers and interpretersRAJU KATHI
 
DevOps, A brief introduction to Vagrant & Ansible
DevOps, A brief introduction to Vagrant & AnsibleDevOps, A brief introduction to Vagrant & Ansible
DevOps, A brief introduction to Vagrant & AnsibleArnaud LEMAIRE
 
Here Be Dragons – Advanced JavaScript Debugging
Here Be Dragons – Advanced JavaScript DebuggingHere Be Dragons – Advanced JavaScript Debugging
Here Be Dragons – Advanced JavaScript DebuggingFITC
 
FITC - Here Be Dragons: Advanced JavaScript Debugging
FITC - Here Be Dragons: Advanced JavaScript DebuggingFITC - Here Be Dragons: Advanced JavaScript Debugging
FITC - Here Be Dragons: Advanced JavaScript DebuggingRami Sayar
 
Chelberg ptcuser 2010
Chelberg ptcuser 2010Chelberg ptcuser 2010
Chelberg ptcuser 2010Clay Helberg
 
Java Chapter 2 Overview.ppt
Java Chapter 2 Overview.pptJava Chapter 2 Overview.ppt
Java Chapter 2 Overview.pptMiltonMolla1
 
Java Chapter 2 Overview.ppt
Java Chapter 2 Overview.pptJava Chapter 2 Overview.ppt
Java Chapter 2 Overview.pptMiltonMolla1
 
CNIT 126 8: Debugging
CNIT 126 8: DebuggingCNIT 126 8: Debugging
CNIT 126 8: DebuggingSam Bowne
 
Topic production code
Topic production codeTopic production code
Topic production codeKavi Kumar
 
CNIT 126: 8: Debugging
CNIT 126: 8: DebuggingCNIT 126: 8: Debugging
CNIT 126: 8: DebuggingSam Bowne
 
Practical Malware Analysis: Ch 8: Debugging
Practical Malware Analysis: Ch 8: Debugging Practical Malware Analysis: Ch 8: Debugging
Practical Malware Analysis: Ch 8: Debugging Sam Bowne
 
Java Code Quality Tools
Java Code Quality ToolsJava Code Quality Tools
Java Code Quality ToolsAnju ML
 
Android course session 1 ( intoduction to java )
Android course session 1 ( intoduction to java )Android course session 1 ( intoduction to java )
Android course session 1 ( intoduction to java )Keroles M.Yakoub
 
debugging (1).ppt
debugging (1).pptdebugging (1).ppt
debugging (1).pptjerlinS1
 
An important characteristic of a test suite that is computed by a dynamic ana...
An important characteristic of a test suite that is computed by a dynamic ana...An important characteristic of a test suite that is computed by a dynamic ana...
An important characteristic of a test suite that is computed by a dynamic ana...jeyasrig
 
Debugging webOS applications
Debugging webOS applicationsDebugging webOS applications
Debugging webOS applicationsfpatton
 

Similar a Java: Finding Bugs, Fixing Bugs in IBM Domino Designer and XPages (20)

Java developer trainee implementation and import
Java developer trainee implementation and importJava developer trainee implementation and import
Java developer trainee implementation and import
 
Connect 2014 JMP101: Java for XPages Development
Connect 2014 JMP101: Java for XPages DevelopmentConnect 2014 JMP101: Java for XPages Development
Connect 2014 JMP101: Java for XPages Development
 
debugging and testing
debugging and testingdebugging and testing
debugging and testing
 
Compilers and interpreters
Compilers and interpretersCompilers and interpreters
Compilers and interpreters
 
DevOps, A brief introduction to Vagrant & Ansible
DevOps, A brief introduction to Vagrant & AnsibleDevOps, A brief introduction to Vagrant & Ansible
DevOps, A brief introduction to Vagrant & Ansible
 
Here Be Dragons – Advanced JavaScript Debugging
Here Be Dragons – Advanced JavaScript DebuggingHere Be Dragons – Advanced JavaScript Debugging
Here Be Dragons – Advanced JavaScript Debugging
 
FITC - Here Be Dragons: Advanced JavaScript Debugging
FITC - Here Be Dragons: Advanced JavaScript DebuggingFITC - Here Be Dragons: Advanced JavaScript Debugging
FITC - Here Be Dragons: Advanced JavaScript Debugging
 
Chelberg ptcuser 2010
Chelberg ptcuser 2010Chelberg ptcuser 2010
Chelberg ptcuser 2010
 
Java Chapter 2 Overview.ppt
Java Chapter 2 Overview.pptJava Chapter 2 Overview.ppt
Java Chapter 2 Overview.ppt
 
Java Chapter 2 Overview.ppt
Java Chapter 2 Overview.pptJava Chapter 2 Overview.ppt
Java Chapter 2 Overview.ppt
 
CNIT 126 8: Debugging
CNIT 126 8: DebuggingCNIT 126 8: Debugging
CNIT 126 8: Debugging
 
PHP - Introduction to PHP Bugs - Debugging
PHP -  Introduction to  PHP Bugs - DebuggingPHP -  Introduction to  PHP Bugs - Debugging
PHP - Introduction to PHP Bugs - Debugging
 
Topic production code
Topic production codeTopic production code
Topic production code
 
CNIT 126: 8: Debugging
CNIT 126: 8: DebuggingCNIT 126: 8: Debugging
CNIT 126: 8: Debugging
 
Practical Malware Analysis: Ch 8: Debugging
Practical Malware Analysis: Ch 8: Debugging Practical Malware Analysis: Ch 8: Debugging
Practical Malware Analysis: Ch 8: Debugging
 
Java Code Quality Tools
Java Code Quality ToolsJava Code Quality Tools
Java Code Quality Tools
 
Android course session 1 ( intoduction to java )
Android course session 1 ( intoduction to java )Android course session 1 ( intoduction to java )
Android course session 1 ( intoduction to java )
 
debugging (1).ppt
debugging (1).pptdebugging (1).ppt
debugging (1).ppt
 
An important characteristic of a test suite that is computed by a dynamic ana...
An important characteristic of a test suite that is computed by a dynamic ana...An important characteristic of a test suite that is computed by a dynamic ana...
An important characteristic of a test suite that is computed by a dynamic ana...
 
Debugging webOS applications
Debugging webOS applicationsDebugging webOS applications
Debugging webOS applications
 

Más de panagenda

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
De05_panagenda_Prepare-Applications-for-64-bit-Clients.pdf
De05_panagenda_Prepare-Applications-for-64-bit-Clients.pdfDe05_panagenda_Prepare-Applications-for-64-bit-Clients.pdf
De05_panagenda_Prepare-Applications-for-64-bit-Clients.pdfpanagenda
 
Co01_panagenda_NotesDomino-Licensing-Understand-and-Optimize-DLAU-results-wit...
Co01_panagenda_NotesDomino-Licensing-Understand-and-Optimize-DLAU-results-wit...Co01_panagenda_NotesDomino-Licensing-Understand-and-Optimize-DLAU-results-wit...
Co01_panagenda_NotesDomino-Licensing-Understand-and-Optimize-DLAU-results-wit...panagenda
 
Ad01_Navigating-HCL-Notes-14-Upgrades_A-Comprehensive-Guide-for-Conquering-Ch...
Ad01_Navigating-HCL-Notes-14-Upgrades_A-Comprehensive-Guide-for-Conquering-Ch...Ad01_Navigating-HCL-Notes-14-Upgrades_A-Comprehensive-Guide-for-Conquering-Ch...
Ad01_Navigating-HCL-Notes-14-Upgrades_A-Comprehensive-Guide-for-Conquering-Ch...panagenda
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Why you need monitoring to keep your Microsoft 365 journey successful
Why you need monitoring to keep your Microsoft 365 journey successfulWhy you need monitoring to keep your Microsoft 365 journey successful
Why you need monitoring to keep your Microsoft 365 journey successfulpanagenda
 
Developer Special: How to Prepare Applications for Notes 64-bit Clients
Developer Special: How to Prepare Applications for Notes 64-bit ClientsDeveloper Special: How to Prepare Applications for Notes 64-bit Clients
Developer Special: How to Prepare Applications for Notes 64-bit Clientspanagenda
 
Everything You Need to Know About HCL Notes 14
Everything You Need to Know About HCL Notes 14Everything You Need to Know About HCL Notes 14
Everything You Need to Know About HCL Notes 14panagenda
 
Alles was Sie über HCL Notes 14 wissen müssen
Alles was Sie über HCL Notes 14 wissen müssenAlles was Sie über HCL Notes 14 wissen müssen
Alles was Sie über HCL Notes 14 wissen müssenpanagenda
 
Workshop: HCL Notes 14 Upgrades einfach gemacht – von A bis Z
Workshop: HCL Notes 14 Upgrades einfach gemacht – von A bis ZWorkshop: HCL Notes 14 Upgrades einfach gemacht – von A bis Z
Workshop: HCL Notes 14 Upgrades einfach gemacht – von A bis Zpanagenda
 
How to Perform HCL Notes 14 Upgrades Smoothly
How to Perform HCL Notes 14 Upgrades SmoothlyHow to Perform HCL Notes 14 Upgrades Smoothly
How to Perform HCL Notes 14 Upgrades Smoothlypanagenda
 
The Ultimate Administrator’s Guide to HCL Nomad Web
The Ultimate Administrator’s Guide to HCL Nomad WebThe Ultimate Administrator’s Guide to HCL Nomad Web
The Ultimate Administrator’s Guide to HCL Nomad Webpanagenda
 
Die ultimative Anleitung für HCL Nomad Web Administratoren
Die ultimative Anleitung für HCL Nomad Web AdministratorenDie ultimative Anleitung für HCL Nomad Web Administratoren
Die ultimative Anleitung für HCL Nomad Web Administratorenpanagenda
 
Bring the Modern and Seamless User Experience You Deserve to HCL Nomad
Bring the Modern and Seamless User Experience You Deserve to HCL NomadBring the Modern and Seamless User Experience You Deserve to HCL Nomad
Bring the Modern and Seamless User Experience You Deserve to HCL Nomadpanagenda
 
Wie man HCL Nomad eine moderne User Experience verschafft
Wie man HCL Nomad eine moderne User Experience verschafftWie man HCL Nomad eine moderne User Experience verschafft
Wie man HCL Nomad eine moderne User Experience verschafftpanagenda
 
Im Praxistest – Microsoft Teams Performance im hybriden Arbeitsalltag
Im Praxistest – Microsoft Teams Performance im hybriden ArbeitsalltagIm Praxistest – Microsoft Teams Performance im hybriden Arbeitsalltag
Im Praxistest – Microsoft Teams Performance im hybriden Arbeitsalltagpanagenda
 
Hybrid Environments and What They Mean for HCL Notes and Nomad
Hybrid Environments and What They Mean for HCL Notes and NomadHybrid Environments and What They Mean for HCL Notes and Nomad
Hybrid Environments and What They Mean for HCL Notes and Nomadpanagenda
 

Más de panagenda (20)

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
De05_panagenda_Prepare-Applications-for-64-bit-Clients.pdf
De05_panagenda_Prepare-Applications-for-64-bit-Clients.pdfDe05_panagenda_Prepare-Applications-for-64-bit-Clients.pdf
De05_panagenda_Prepare-Applications-for-64-bit-Clients.pdf
 
Co01_panagenda_NotesDomino-Licensing-Understand-and-Optimize-DLAU-results-wit...
Co01_panagenda_NotesDomino-Licensing-Understand-and-Optimize-DLAU-results-wit...Co01_panagenda_NotesDomino-Licensing-Understand-and-Optimize-DLAU-results-wit...
Co01_panagenda_NotesDomino-Licensing-Understand-and-Optimize-DLAU-results-wit...
 
Ad01_Navigating-HCL-Notes-14-Upgrades_A-Comprehensive-Guide-for-Conquering-Ch...
Ad01_Navigating-HCL-Notes-14-Upgrades_A-Comprehensive-Guide-for-Conquering-Ch...Ad01_Navigating-HCL-Notes-14-Upgrades_A-Comprehensive-Guide-for-Conquering-Ch...
Ad01_Navigating-HCL-Notes-14-Upgrades_A-Comprehensive-Guide-for-Conquering-Ch...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Why you need monitoring to keep your Microsoft 365 journey successful
Why you need monitoring to keep your Microsoft 365 journey successfulWhy you need monitoring to keep your Microsoft 365 journey successful
Why you need monitoring to keep your Microsoft 365 journey successful
 
Developer Special: How to Prepare Applications for Notes 64-bit Clients
Developer Special: How to Prepare Applications for Notes 64-bit ClientsDeveloper Special: How to Prepare Applications for Notes 64-bit Clients
Developer Special: How to Prepare Applications for Notes 64-bit Clients
 
Everything You Need to Know About HCL Notes 14
Everything You Need to Know About HCL Notes 14Everything You Need to Know About HCL Notes 14
Everything You Need to Know About HCL Notes 14
 
Alles was Sie über HCL Notes 14 wissen müssen
Alles was Sie über HCL Notes 14 wissen müssenAlles was Sie über HCL Notes 14 wissen müssen
Alles was Sie über HCL Notes 14 wissen müssen
 
Workshop: HCL Notes 14 Upgrades einfach gemacht – von A bis Z
Workshop: HCL Notes 14 Upgrades einfach gemacht – von A bis ZWorkshop: HCL Notes 14 Upgrades einfach gemacht – von A bis Z
Workshop: HCL Notes 14 Upgrades einfach gemacht – von A bis Z
 
How to Perform HCL Notes 14 Upgrades Smoothly
How to Perform HCL Notes 14 Upgrades SmoothlyHow to Perform HCL Notes 14 Upgrades Smoothly
How to Perform HCL Notes 14 Upgrades Smoothly
 
The Ultimate Administrator’s Guide to HCL Nomad Web
The Ultimate Administrator’s Guide to HCL Nomad WebThe Ultimate Administrator’s Guide to HCL Nomad Web
The Ultimate Administrator’s Guide to HCL Nomad Web
 
Die ultimative Anleitung für HCL Nomad Web Administratoren
Die ultimative Anleitung für HCL Nomad Web AdministratorenDie ultimative Anleitung für HCL Nomad Web Administratoren
Die ultimative Anleitung für HCL Nomad Web Administratoren
 
Bring the Modern and Seamless User Experience You Deserve to HCL Nomad
Bring the Modern and Seamless User Experience You Deserve to HCL NomadBring the Modern and Seamless User Experience You Deserve to HCL Nomad
Bring the Modern and Seamless User Experience You Deserve to HCL Nomad
 
Wie man HCL Nomad eine moderne User Experience verschafft
Wie man HCL Nomad eine moderne User Experience verschafftWie man HCL Nomad eine moderne User Experience verschafft
Wie man HCL Nomad eine moderne User Experience verschafft
 
Im Praxistest – Microsoft Teams Performance im hybriden Arbeitsalltag
Im Praxistest – Microsoft Teams Performance im hybriden ArbeitsalltagIm Praxistest – Microsoft Teams Performance im hybriden Arbeitsalltag
Im Praxistest – Microsoft Teams Performance im hybriden Arbeitsalltag
 
Hybrid Environments and What They Mean for HCL Notes and Nomad
Hybrid Environments and What They Mean for HCL Notes and NomadHybrid Environments and What They Mean for HCL Notes and Nomad
Hybrid Environments and What They Mean for HCL Notes and Nomad
 

Último

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 

Último (20)

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 

Java: Finding Bugs, Fixing Bugs in IBM Domino Designer and XPages

  • 1. Java: Finding Bugs, Fixing Bugs in IBM Domino Designer and XPages Julian Robichaux Senior Software Engineer, panagenda Paul T. Calhoun Senior Software Engineer, panagenda MWLUG 2014
  • 2. Your Speakers • Julian Robichaux - Developer at panagenda, an Austrian based IT management software provider - Purveyor of nsftools.com - Writer of open-­‐source (and commercial) software - Speaker at Lotusphere since 2006, many LUG and View conferences in various countries - Doing almost exclusively Java and Eclipse development (often Notes related) for the past few years - Not as pretty as Paul Calhoun, but still easy on the eyes
  • 3. Your Speakers • Paul T. Calhoun - I have been working with Lotus/IBM technologies for the past 25 years. - I have been certified in both Administration and Development on every major release of Notes/Domino since release 3. - My focus has always been on training and enablement of Administrators and Developers, but I also provide mentoring and consulting services. - Most recently I have been focused on XPages consulting, training and enablement. - When not working, my passion is spending all my spare time with my awesomely wonderful grand-­‐kids. (WARNING: I have pictures !)
  • 4. Agenda • Debugging - Java Agents - XPages • Logging • Using FindBugs • Using JConsole and Dump Analysis • Q & A
  • 5. Debugging Java Agents • There are several steps to enable a Java debugger to debug a Java agent running on the Notes client: - Enable Java debugging on the Notes client. - Enable debugging in the agent (compile code with debug info). - Add thread sleep commands to the Java agent. - Set breakpoints in the Java code. - Create a Debug Configuration in the Java Perspective in Domino Designer to connect to the Notes client. - Add the agent source to the debug configuration. - Run the debugger in Domino Designer client. - Start the Notes agent to debug. - Debug the code as needed. • Detach the debugger from Notes.
  • 6. Enable Debugger • Follow these steps to enable remote Java debugging on the Notes client: - Choose Tools | Java Debugging Preferences from the menu. - In the Java Debugging Preferences dialog, choose the appropriate types of agents to debug and set the port values. - Port values must be unique when enabling debugging for more than one type of agent. - Click [OK] to save the settings and close the dialog.
  • 7. Enable Debugger • Variables in the NOTES.INI file are added to reflect the port settings and agent type selections - JavaDebugClientForeground=1 - JavaDebugClientForegroundPort=8701 - JavaDebugClientScheduled=1 - JavaDebugClientScheduledPort=8702 - JavaDebugClientWebPreview=1 - JavaDebugClientWebPreviewPort=8703 ! • Notes must be restarted for the NOTES.INI changes to take effect. Click [OK] when prompted to restart Notes. • Exit and restart Notes.
  • 8. Enable Agent for Debugging • Follow these steps to enable debugging for a Java agent: - Open the Java agent's Properties. - From the Basics tab of the Properties view • Enable the 'Compile Java code with debugging information' option. • This will add line numbers and information about variables to the compiled code to allow the agent to be debugged.
  • 9. Enable Breakpoints • Follow these steps to add breakpoints to an agent: - Open the agent in Designer. - Breakpoints can be added by either: • Right-­‐clicking in the left margin of the code editor and choosing • Toggle Breakpoint • Double-­‐clicking in the margin next to the code to add/remove the breakpoint. - The breakpoints are indicated by a blue dots in the bar beside the editor margin.
  • 10. Create Debug Configuration • This only has to be done once • In Designer: - Click the down arrow next to the blue “Debug” icon - Choose “Manage Debug Configurations”
  • 11. Create Debug Configuration • In the Debug Configurations Dialog - Right Click on “Remote Java Application” - Choose “New”
  • 12. Set Debug Configuration • Provide a Name • Change Port to Port set in Notes.ini - Default is 8701 but can be any open port • Click “Apply” and “Close” to save • Click “Apply” and “Debug” to start the debugger listening on the defined port
  • 13. Switch to the Debug Perspective • If not already in the Debug Perspective a dialog will open prompting to switch to that perspective - Choose “Yes” • Optionally choose “Remember my decision” to suppress this dialog from popping up every time
  • 15. Debugging • The Code will stop at the first breakpoint • From there you can… - Inspect (and change) variables - Step through the code using the icons
  • 16. Stop the Debugger • After the debugging session is complete the debugger is still “listening” on the open port • In the debug perspective make sure to “Disconnect” from the listening port to turn debugging off
  • 17. Debugging Java XPages • If XPages make calls to Java Code elements then that Java code can be debugged using a similar process to debugging agents. • In order to debug Java code called by an XPage add the following lines to the notes.ini - JavaEnableDebug=1 - JavaDebugOptions=transport=dt_socket,server=y,suspend=n,addr ess=<port to listen on> • GOTCHA !! - If the previous ports are enabled for Java agent debugging then “connecting” to the port above will never work - Disable the Java Debug Ports and restart your Notes, Designer client prior to debugging Java called from XPages - Your firewall might block the port
  • 18. Debug Configuration • Create a new Debug Configuration to “listen” on the port that was set in the notes.ini file • Preview the XPage to start the local web preview • Start the debugger
  • 19. Execute XPage Action • Set breakpoints in the Java code to be debugged • In the XPage in the browser - Execute the action that will call the Java code • If not already in the Debug perspective you will be prompted to switch to that perspective • Step through your code reviewing the variable values at each breakpoint • Clear breakpoints and resume to end • Disconnect from Debugger when done.
  • 20. WARNING DO NOT EVER ENABLE DEBUGGING ON A PRODUCTION SERVER
  • 21. Demo
  • 22. Agenda • Debugging - Java Agents - XPages • Logging • Using FindBugs • Using JConsole and Dump Analysis • Q & A
  • 24. Logging Basics • System.out.println() is NOT logging! • Java has native logging classes - java.util.logging - There are other popular logging frameworks, which we will ignore for the sake of brevity - The native Java classes work just fine • The big picture: - Each bit of code can have its own logger, or loggers can be shared - Java manages all the different loggers being used - The logging level determines the severity of the message - Different handlers send messages to the console or to files
  • 25. Logging Example create logger log to various levels easy Exception handling
  • 26. Logging Levels • Log Levels, in order of highest to lowest: - SEVERE – serious failure, horrible stuff - WARNING – potential problem - INFO – informational, non-­‐technical - CONFIG – system/program configuration - FINE – simplest trace messages - FINER – medium trace messages - FINEST – detailed trace messages
  • 27. Interpreting Levels • What level you use for your messages is a matter of personal preference. Here’s a general guideline/suggestion: - Showstopping issues go to SEVERE - Errors your admin (and nosy users) should see go to WARNING - Unobtrusive “heartbeat” kinds of messages go to INFO - Start and stop messages go to CONFIG - Debug info goes to FINE/ER/EST, with FINEST being very tedious and verbose • These are “trace” levels • Generally only enabled for troubleshooting purposes
  • 28. Log Handlers • Typical log handlers write to either the console or a file • There are default handlers for different contexts - Java agents: Java console (client), server console (server) - XPages: server console (server), files (client and server) - Plugins: OSGi console, files • Handlers also have levels - Console normally only displays log messages for SEVERE, WARNING, and INFO - File logs often display log messages for all levels
  • 29. Logging Example where did this one go?
  • 30. Log Levels and Output • Loggers often have a default level of INFO • This means that by default, any messages with a level lower than INFO will not be logged anywhere - So messages at level CONFIG and FINE/ER/EST will never be sent to a Handler because the Logger discards them • Messages get filtered by the Logger before they are passed to the Handler - Even a Handler at Level.FINEST will not get any FINE/ER/EST messages if the Logger is set to Level.INFO
  • 31. Adjusting Log Levels • Adjusting log levels programmatically - setLevel() for Logger and Handler - This will cause a SecurityException! - You can get around this by editing jvm/lib/security/java.policy - permission java.util.logging.LoggingPermission "control" • Adjusting log levels with config files - Notes agents: {notes}jvmliblogging.properties - XPages: {domino}datadominoworkspace.configrcpinstall.properties
  • 32. Example Log Level Adjustment Don’t forget the .level!
  • 33. Logging Quirks in Notes • Prior to 8.5.3 FP2, Java logging in Notes worked just fine - Although logging in local agents didn’t log anywhere by default • In 9.0.0 and 8.5.3 FP2, FP3, and FP4 Java logging gave errors - java.security.AccessControlException - Add LoggingPermission to jvm/lib/security/java.policy • In 9.0.1 and 8.5.3 FP5, Java logging worked again - NEW: Local Java agents log to the Java Agent Console by default - NEW: if you still need the LoggingPermission so you can set custom Handlers or Levels, you also need to add a special SecurityPermission • http://www-­‐01.ibm.com/support/docview.wss?uid=swg21669594
  • 34. XPages Log Output • XPages logging trace log files - Server 8.5.1: none, server console only - Server 8.5.2+: {domino}datadominoworkspacelogs • SEVERE messages still show up on the console too - XPiNC: {notes}dataworkspacelogs • Default logger level is WARNING, not INFO • Prior to 8.5.3, non-­‐logged XPages exceptions also used to show up in the trace logs. Now they are in {notes}dataIBM_TECHNICAL_SUPPORTxpages_exc_*.log - http://www-­‐01.ibm.com/support/docview.wss?uid=swg1LO66802
  • 35. Viewing Trace Log Files • Trying to view the trace log files as raw XML is… painful • A better way is to right-­‐click them in the “logs” folder and open them in a browser - There is an XSLT file that will format them nicely for you • HOWEVER, if the client or server is still running, the XSLT file won’t work because the closing XML tag is missing - Make a copy, open in a text editor, and add a closing </CommonBaseEvents> tag to the end. Then open in a browser. - Make sure you open the copy from within the “logs” folder; otherwise the XSLT file will not be found - Sometimes log messages don’t show up immediately in the log files! Everything gets flushed when you shut down the server.
  • 39. Logging Best Practices • Use the same logger for your entire package (maybe even your entire library) • Most messages should be logged to FINE/ER/EST; don’t clutter up the console with INFO messages • Log actions, but not every step of a method or every single get/set – logging is NOT a replacement for a debugger • DO NOT EVER log sensitive data - Personal user information, passwords, system “secrets” - “No one will ever look at those anyway” is bad security
  • 40. Agenda • Debugging - Java Agents - XPages • Logging • Using FindBugs • Using JConsole and Dump Analysis • Q & A
  • 41. FindBugs • FindBugs is a program that uses static analysis to look for bugs in Java code. - Current version is 3.x • Source and Documentation at - http://findbugs.cs.umd.edu/eclipse • Latest version of FindBugs CANNOT be installed into DDE natively - Either install in a stand alone version of Eclipse - Use FindBugs for Domino Designer from OpenNTF - FYI, This is a version 2.x implementation of FindBugs • http://www.openntf.org/main.nsf/project.xsp?r=project/FindBugs %20for%20DominoDesigner
  • 42. FindBugs • Available as an Eclipse plug-­‐in, install instructions at - http://findbugs.cs.umd.edu/eclipse • Agents contained in an NSF are not “readable” during the FindBugs analysis. - The agent code will need to be exported and imported into Eclipse for analysis.
  • 43. Change FindBugs Properties • Change the FindBugs Properties to show all bugs
  • 44. Running FindBugs • In Domino Designer open the Package Explorer view - If this view is not in the current perspective, either • Switch to the XPages perspective • Add it to the current working perspective • Right click over the code folder to be analyzed and choose “Run FindBugs”
  • 45. FindBugs Perspective • After analyzing code, switch to the FindBugs perspective • Or add the Bug Explorer view to the current perspective • Remediate the found bugs
  • 46. Demo
  • 47. Agenda • Debugging - Java Agents - XPages • Logging • Using FindBugs • Using JConsole and Dump Analysis • Q & A
  • 48. My Notes Client is Slow! • Troubleshooting slow performance is tricky - How do you define “slow”? - How do you know it’s your code and not something else? - Task Manager only tells you about high-­‐level processes • Much easier to troubleshoot on a client, rather than a server - Not disruptive to restart - Easy to change parameters - Crash at will! • Whenever possible, port your Java code to a local Notes agent or a local XPage for troubleshooting
  • 49. A Tale of Two VMs • The Notes client actually has two Java VMs for running code - Java agents - The rest of the Notes client (including local XPages) • The VM for Java agents is adjusted with: - Notes.ini settings - {notes}jvmlib properties files • The VM for everything else (on the client) is adjusted with: - {notes}frameworkrcpdeployjvm.properties - {data}workspace.configrcpinstall.properties
  • 50. JConsole • JConsole is a tool for monitoring performance and resource usage in a running JVM - http://docs.oracle.com/javase/6/docs/technotes/guides/ management/jconsole.html • I wrote an article on setting this up for local XPages and plugins (non-­‐Java-­‐agents) here: - http://www.socialbizug.org/blogs/2ec5d0ed-­‐ d04e-­‐4b18-­‐9610-­‐9819fcebca79/entry/ using_jconsole_to_monitor_your_ibm_notes_client • Quick demo…
  • 52. JConsole for Local Java Agents • To use JConsole to monitor local Java agents, there’s a trick - Add JavaUserOptionsFile to your Notes.ini file: • JavaUserOptionsFile=c:IBMNotesjava.options.txt - In your Java options file add these lines: • -­‐Dcom.sun.management.jmxremote.port=9876 -­‐Dcom.sun.management.jmxremote.ssl=false -­‐Dcom.sun.management.jmxremote.authenticate=false • Connect JConsole to the jmxremote.port you defined - This port won’t be active until AFTER you run a Java agent - Make sure nothing else is using that port - Make sure the firewall allows that port to be used
  • 54. Analyzing Dump Files • If your Notes client (or Domino server) crashes due to a Java problem, it will usually generate a core dump file - default location is workspacelogs - Just a text file - Shows what threads were running, system info, etc. • IBM Thread and Memory Dump Analyzer does a good job of parsing the core dump file for you - https://www.ibm.com/developerworks/community/groups/ service/html/communityview?communityUuid=2245aa39-­‐ fa5c-­‐4475-­‐b891-­‐14c205f7333c - run like this: java -Xmx500m -jar jca455.jar
  • 55. IBM Memory Dump Analyzer
  • 56. Heap Dumps • Heap Dumps are a snapshot of the JVM threads and processes at a specific point in time, while it’s running - Like a slice of what you see in JConsole • Used for: - Tracking down memory leaks - Finding high-­‐memory-­‐use objects (and arrays) - Finding objects that are unexpectedly still in memory • IBM Heap Analyzer is a nice tool for viewing the information - https://www.ibm.com/developerworks/community/alphaworks/tech/ heapanalyzer - http://www-­‐01.ibm.com/support/docview.wss?uid=swg27006624&aid=1
  • 57. How to Generate a Heap Dump • Generating a Heap Dump file (no crash required!) - Domino XPages • tell http xsp heap dump • XPages Toolbox ( http://www.openntf.org/p/XPages%20Toolbox ) - Notes Client (from a command prompt) • notesframeworkrcprcplauncher.exe -­‐com.ibm.rcp.core.logger#dump heap -­‐dumps heapdump • writes to {data}workspacelogsheapdump.###.phd by default • You can also do a core (thread) dump with: • notesframeworkrcprcplauncher.exe -­‐com.ibm.rcp.core.logger#dump threads -­‐dumps javacore - Java Agent • com.ibm.jvm.Dump.HeapDump(); • writes to {notes}frameworkheapdump.###.phd
  • 58. IBM Heap Analyzer Screenshot
  • 59. IBM Heap Analyzer Screenshot
  • 60. IBM Heap Analyzer Screenshot 2318 Notes Documents 2318 Notes Items 1 Notes View 1 Notes Database 1 Notes Session 1 ??? ——————————— 4640 NotesWeakReferences
  • 61. Agenda • Debugging - Java Agents - XPages • Logging • Using FindBugs • Using JConsole and Dump Analysis • Q & A
  • 62. Q & A Questions? Anyone?
  • 63. THANK YOU Julian Robichaux panagenda jrobichaux@panagenda.com MWLUG 2014 Paul Calhoun panagenda paul.calhoun@panagenda.com