JIRA Jabber Notifier Listener

Name JIRA Jabber Notifier Listener
Latest Version 1.5 (If upgrading from 1.2 or earlier, requires SQL to upgrade - see below)
Author(s) Jeff Turner
Issue Tracking http://developer.atlassian.com/jira/browse/JJABBER
Download Location
Source (Subversion) http://svn.atlassian.com/svn/public/atlassian/jira/jira-jabber-notifier-listener/trunk/
License Apache

This listener notifies user(s) of JIRA events via instant message, via the Jabber protocol. It was developed by Atlassian for use on our JIRA-based support site, https://support.atlassian.com, where we want support staff to be notified by IM when a customer responds to a support issue assigned to them.

The code is based on that from Yet Another IM Plugin. Thanks to the authors.

Compatibility matrix

This plugin requires JDK 1.6
JIRA version v1.2 v1.3 v1.5
pre-3.11
3.11
3.12
3.12.1
3.12.2
  • means tested
  • means untested by likely to work

Installation

Download the jars and add them to JIRA's WEB-INF/lib directory.

Configuration

First, add the listener with class name com.atlassian.jira.ext.jabbernotifier.listener.JabberNotifierListener:

Then click Edit on the new listener and configure it. The conditions under which an IM is triggered are are fairly flexible. If you have more than one set of rules, just configure another listener (the code is written to avoid conflicts).

Parameters are described directly on the listener configuration page:

Jabber configuration

You also need to ensure that the Jabber user you've specified is able to IM people. Generally this means that your Jabber user needs to appear on the roster of people it might IM.

You can achieve this by logging in as your JIRA jabber username with a normal IM client, and manually request to be added to each user, or do it centrally on the Jabber server.

Debugging

If it's not working, edit WEB-INF/classes/log4j.properties and add the lines:

log4j.category.com.atlassian.jira.ext.jabbernotifier = DEBUG, console, filelog
log4j.additivity.com.atlassian.jira.ext.jabbernotifier = false

You will then see details in the logs:

2008-01-17 19:15:33,933 resin-tcp-connection-j2ee.support.atlassian.com:6802-51 DEBUG [ext.jabbernotifier.listener.JabberNotifierListener](Evnt:jeff@atlassian.com->5@CSP-14589) User jeff@atlassian.com in ignored group support-staff; not notifying.
2008-01-17 19:16:06,098 resin-tcp-connection-j2ee.support.atlassian.com:6802-47 DEBUG [ext.jabbernotifier.listener.JabberNotifierListener](Evnt:cychan->10011@JSP-19102) Event does not match projects [CSP]
2008-01-17 19:16:06,098 resin-tcp-connection-j2ee.support.atlassian.com:6802-47 DEBUG [ext.jabbernotifier.listener.JabberNotifierListener](Evnt:cychan->10011@JSP-19102) User cychan in ignored group support-staff; not notifying.
2008-01-17 19:16:52,831 resin-tcp-connection-j2ee.support.atlassian.com:6802-55 DEBUG [ext.jabbernotifier.listener.JabberNotifierListener](Evnt:cychan->10011@JSP-19109) Event does not match projects [CSP]
2008-01-17 19:16:52,831 resin-tcp-connection-j2ee.support.atlassian.com:6802-55 DEBUG [ext.jabbernotifier.listener.JabberNotifierListener](Evnt:cychan->10011@JSP-19109) User cychan in ignored group support-staff; not notifying.

Version history

1.5 release

  • Fixed a large bug where "jira-users, jira-developers" was parsed as "jira-users" and " jira-developers", thus failing on the second group.

1.3 released

  • Added the ability to specify events by name (which is more user-friendly), as well as by ID.
  • The list of events in the help text is now dynamically generated.

To upgrade from pre-1.3:
If you are upgrading from a previous release, please run the following SQL to adapt your listeners:

update propertyentry set property_key='Events triggering message (default: all events)' 
  where property_key='Event IDs triggering message (default: all events)' and entity_name='ListenerConfig';
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. Dec 27, 2007

    Peter Wu says:

    I tried to configure this on the latest 3.12.1 with google talk and whenever i d...

    I tried to configure this on the latest 3.12.1 with google talk and whenever i do something to an issue the following error occurred:

    java.lang.NoSuchMethodError: java.lang.String.isEmpty()Z

    any ideas?

    1. Dec 27, 2007

      Sebastian Błoch says:

      I had the same problem. Try jdk 1.6

      I had the same problem. Try jdk 1.6

  2. Jan 09, 2008

    Irene García says:

    Hi\! I have installed the plugin (v.1.3) with Jira 3.12.1 I don´t rece...

    Hi! I have installed the plugin (v.1.3) with Jira 3.12.1

    I don´t receive any notification in the chat but in the log file appears:

    2008-01-09 13:04:19,281 http-8090-Processor23 ERROR [jira.event.issue.IssueEventDispatcher] Exception thrown from listener [com.atlassian.jira.ext.jabbernotifier.listener.JabberNotifierListener] : null
    java.lang.NullPointerException
     at com.atlassian.jira.ext.jabbernotifier.transport.JabberTransport.getContactStatus(JabberTransport.java:179)
     at com.atlassian.jira.ext.jabbernotifier.listener.JabberNotifierListener.workflowEvent(JabberNotifierListener.java:196)
     at com.atlassian.jira.event.issue.IssueEventDispatcher.dispatchEvent(IssueEventDispatcher.java:108)
     at com.atlassian.jira.event.issue.IssueEventDispatcher.dispatchEvent(IssueEventDispatcher.java:89)
     at com.atlassian.jira.issue.util.DefaultIssueUpdater.doUpdate(DefaultIssueUpdater.java:63)
     at com.atlassian.jira.action.issue.AbstractIssueUpdateAction.doUpdate(AbstractIssueUpdateAction.java:137)
     at com.atlassian.jira.action.issue.AbstractIssueUpdateAction.doUpdate(AbstractIssueUpdateAction.java:127)
     at com.atlassian.jira.action.issue.IssueUpdate.doExecute(IssueUpdate.java:77)
     at webwork.action.ActionSupport.execute(ActionSupport.java:153)
     at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:54)
     at com.atlassian.jira.action.JiraNonWebActionSupport.execute(JiraNonWebActionSupport.java:27)
     at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:132)
     at com.atlassian.core.action.DefaultActionDispatcher.execute(DefaultActionDispatcher.java:36)
     at com.atlassian.jira.web.action.issue.EditIssue.doExecute(EditIssue.java:197)
     at webwork.action.ActionSupport.execute(ActionSupport.java:153)
     at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:54)
     at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:132)
     at com.atlassian.jira.web.dispatcher.JiraServletDispatcher.service(JiraServletDispatcher.java:211)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.jira.web.filters.AccessLogFilter.doFilter(AccessLogFilter.java:73)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119)
     at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55)
     at com.atlassian.jira.web.filters.SitemeshExcludePathFilter.doFilter(SitemeshExcludePathFilter.java:38)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:192)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.seraph.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:114)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:110)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:132)
     at com.atlassian.jira.web.filters.JIRAProfilingFilter.doFilter(JIRAProfilingFilter.java:16)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.jira.web.filters.ActionCleanupDelayFilter.doFilter(ActionCleanupDelayFilter.java:43)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.jira.web.filters.RequestCleanupFilter.doFilter(RequestCleanupFilter.java:50)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.johnson.filters.AbstractJohnsonFilter.doFilter(AbstractJohnsonFilter.java:72)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:350)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.gzipfilter.GzipFilter.doFilter(GzipFilter.java:89)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.core.filters.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:37)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.jira.appconsistency.db.DatabaseCompatibilityEnforcerFilter.doFilter(DatabaseCompatibilityEnforcerFilter.java:39)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
     at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
     at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
     at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
     at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
     at java.lang.Thread.run(Thread.java:619)
    java.io.EOFException: no more data available - expected end tag </stream:stream> to close start tag <stream:stream> from line 1, parser stopped on END_TAG seen ...xmlns=\'http://jabber.org/features/iq-register\'/></stream:features>... @1:384
     at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:3014)
     at org.xmlpull.mxp1.MXParser.more(MXParser.java:3025)
     at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1144)
     at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
     at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:368)
     at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
     at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:76)

    --------------------------------------------------------------------------------------------------------------------------------------------

    Users to notify deisertest2@xmpp.ru
    XMPP Login deisertest1@xmpp.ru
    XMPP Password ********
    XMPP Server xmpp.ru

    --------------------------------------------------------------------------------------------------------------------------------------------------- 

    I have tested with gtalk too but I got this error:

    2008-01-09 12:31:11,171 http-8090-Processor23 ERROR [ext.jabbernotifier.transport.JabberTransport] Error logging in to Jabber server talk.google.com:5223 with username user1@gmail.com
    Connection failed. No response from server.:
     at org.jivesoftware.smack.PacketReader.startup(PacketReader.java:164)
     at org.jivesoftware.smack.XMPPConnection.initConnection(XMPPConnection.java:875)
     at org.jivesoftware.smack.XMPPConnection.connectUsingConfiguration(XMPPConnection.java:834)
     at org.jivesoftware.smack.XMPPConnection.connect(XMPPConnection.java:1276)
     at com.atlassian.jira.ext.jabbernotifier.transport.JabberTransport.connect(JabberTransport.java:107)
     at com.atlassian.jira.ext.jabbernotifier.transport.JabberTransport.getContactStatus(JabberTransport.java:176)
     at com.atlassian.jira.ext.jabbernotifier.listener.JabberNotifierListener.workflowEvent(JabberNotifierListener.java:196)
     at com.atlassian.jira.event.issue.IssueEventDispatcher.dispatchEvent(IssueEventDispatcher.java:108)
     at com.atlassian.jira.event.issue.IssueEventDispatcher.dispatchEvent(IssueEventDispatcher.java:89)
     at com.atlassian.jira.workflow.function.event.FireIssueEventFunction.execute(FireIssueEventFunction.java:60)
     at com.opensymphony.workflow.AbstractWorkflow.executeFunction(AbstractWorkflow.java:869)
     at com.opensymphony.workflow.AbstractWorkflow.transitionWorkflow(AbstractWorkflow.java:1265)
     at com.opensymphony.workflow.AbstractWorkflow.doAction(AbstractWorkflow.java:567)
     at com.atlassian.jira.workflow.SimpleWorkflowManager.doWorkflowAction(SimpleWorkflowManager.java:269)
     at com.atlassian.jira.workflow.WorkflowTransitionUtilImpl.progress(WorkflowTransitionUtilImpl.java:264)
     at com.atlassian.jira.web.action.workflow.SimpleWorkflowAction.doExecute(SimpleWorkflowAction.java:34)
     at webwork.action.ActionSupport.execute(ActionSupport.java:153)
     at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:54)
     at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:163)
     at com.atlassian.jira.web.dispatcher.JiraServletDispatcher.service(JiraServletDispatcher.java:211)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.jira.web.filters.AccessLogFilter.doFilter(AccessLogFilter.java:73)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119)
     at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55)
     at com.atlassian.jira.web.filters.SitemeshExcludePathFilter.doFilter(SitemeshExcludePathFilter.java:38)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:192)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.seraph.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:114)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:110)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:132)
     at com.atlassian.jira.web.filters.JIRAProfilingFilter.doFilter(JIRAProfilingFilter.java:16)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.jira.web.filters.ActionCleanupDelayFilter.doFilter(ActionCleanupDelayFilter.java:43)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.jira.web.filters.RequestCleanupFilter.doFilter(RequestCleanupFilter.java:50)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.johnson.filters.AbstractJohnsonFilter.doFilter(AbstractJohnsonFilter.java:72)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:350)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.gzipfilter.GzipFilter.doFilter(GzipFilter.java:89)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.core.filters.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:37)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at com.atlassian.jira.appconsistency.db.DatabaseCompatibilityEnforcerFilter.doFilter(DatabaseCompatibilityEnforcerFilter.java:39)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
     at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
     at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
     at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
     at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
     at java.lang.Thread.run(Thread.java:619)
    2008-01-09 12:31:11,171 http-8090-Processor23 WARN [ext.jabbernotifier.transport.JabberTransport] Our jabber account user1@gmail.com not able to (re)connect to talk.google.com:5223
    java.io.EOFException: input contained no data
     at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:2982)
     at org.xmlpull.mxp1.MXParser.more(MXParser.java:3025)
     at org.xmlpull.mxp1.MXParser.parseProlog(MXParser.java:1410)
     at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1395)
     at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
     at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:368)
     at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
     at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:76) 

     --------------------------------------------------------------------------------------------------------------------------------------------

    Users to notify user2@gmail.com
    XMPP Login user1@gmail.com
    XMPP Password ***********
    XMPP Server talk.google.com

    --------------------------------------------------------------------------------------------------------------------------------------------------- 

     Any idea about the problem??

    Thanks in advance for your help,

    Regards,

    Irene

    1. Jan 25, 2008

      Eudes says:

      Hi, I had the same problem, but since I changed XMPP Login from something like u...

      Hi,

      I had the same problem, but since I changed XMPP Login from something like user1@jabber-fr.net to just user1, it works !

      1. Mar 03, 2008

        Jeff Turner says:

        I have fixed up the code so this stacktrace won't occur. The help text now has a...

        I have fixed up the code so this stacktrace won't occur. The help text now has a line explaining that the XMPP Login is just the username, not a jabber ID.

  3. Jan 18, 2008

    Christian Foisy says:

    I tried version 1.3 of the listener with our JIRA 3.7.3 and got the following er...

    I tried version 1.3 of the listener with our JIRA 3.7.3 and got the following error message when adding the listener:

     Status report

    message Could not execute action [ViewListeners]:Bad version number in .class file<p><small><small><pre>java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1815) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:869) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1322) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1201) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357) at java.lang.Class.getDeclaredConstructors(Class.java:1808) at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getSortedMatchingConstructors(ConstructorInjectionComponentAdapter.java:229) at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getGreediestSatisifableConstructor(ConstructorInjectionComponentAdapter.java:76) at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.instantiateComponent(ConstructorInjectionComponentAdapter.java:193) at org.picocontainer.defaults.InstantiatingComponentAdapter.getComponentInstance(InstantiatingComponentAdapter.java:48) at org.picocontainer.defaults.DecoratingComponentAdapter.getComponentInstance(DecoratingComponentAdapter.java:42) at org.picocontainer.defaults.SynchronizedComponentAdapter.getComponentInstance(SynchronizedComponentAdapter.java:35) at org.picocontainer.defaults.DecoratingComponentAdapter.getComponentInstance(DecoratingComponentAdapter.java:42) at com.atlassian.jira.config.component.ProfilingComponentAdapter.getComponentInstance(ProfilingComponentAdapter.java:27) at org.picocontainer.defaults.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:298) at com.atlassian.jira.util.JiraUtils.loadComponent(JiraUtils.java:78) at com.atlassian.jira.util.JiraUtils.loadComponent(JiraUtils.java:60) at com.atlassian.jira.util.JiraUtils.loadComponent(JiraUtils.java:54) at com.atlassian.jira.web.action.admin.ViewListeners.doValidation(ViewListeners.java:76) at webwork.action.ActionSupport.validate(ActionSupport.java:373) at webwork.action.ActionSupport.execute(ActionSupport.java:150) at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:54) at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:132) at com.atlassian.jira.web.dispatcher.JiraServletDispatcher.service(JiraServletDispatcher.java:209) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.AccessLogFilter.doFilter(AccessLogFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119) at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55) at com.atlassian.jira.web.filters.SitemeshExcludePathFilter.doFilter(SitemeshExcludePathFilter.java:38) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:182) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.seraph.filter.LoginFilter.doFilter(LoginFilter.java:181) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:132) at com.atlassian.jira.web.filters.JIRAProfilingFilter.doFilter(JIRAProfilingFilter.java:16) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.ActionCleanupDelayFilter.doFilter(ActionCleanupDelayFilter.java:41) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.RequestCleanupFilter.doFilter(RequestCleanupFilter.java:49) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.johnson.filters.JohnsonFilter.doFilter(JohnsonFilter.java:91) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.gzip.GzipFilter.doFilter(GzipFilter.java:72) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.core.filters.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:37) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.appconsistency.db.DatabaseCompatibilityEnforcerFilter.doFilter(DatabaseCompatibilityEnforcerFilter.java:25) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595) </pre></small></small></p>

    description The requested resource (Could not execute action [ViewListeners]:Bad version number in .class file<p><small><small><pre>java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1815) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:869) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1322) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1201) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357) at java.lang.Class.getDeclaredConstructors(Class.java:1808) at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getSortedMatchingConstructors(ConstructorInjectionComponentAdapter.java:229) at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.getGreediestSatisifableConstructor(ConstructorInjectionComponentAdapter.java:76) at org.picocontainer.defaults.ConstructorInjectionComponentAdapter.instantiateComponent(ConstructorInjectionComponentAdapter.java:193) at org.picocontainer.defaults.InstantiatingComponentAdapter.getComponentInstance(InstantiatingComponentAdapter.java:48) at org.picocontainer.defaults.DecoratingComponentAdapter.getComponentInstance(DecoratingComponentAdapter.java:42) at org.picocontainer.defaults.SynchronizedComponentAdapter.getComponentInstance(SynchronizedComponentAdapter.java:35) at org.picocontainer.defaults.DecoratingComponentAdapter.getComponentInstance(DecoratingComponentAdapter.java:42) at com.atlassian.jira.config.component.ProfilingComponentAdapter.getComponentInstance(ProfilingComponentAdapter.java:27) at org.picocontainer.defaults.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:298) at com.atlassian.jira.util.JiraUtils.loadComponent(JiraUtils.java:78) at com.atlassian.jira.util.JiraUtils.loadComponent(JiraUtils.java:60) at com.atlassian.jira.util.JiraUtils.loadComponent(JiraUtils.java:54) at com.atlassian.jira.web.action.admin.ViewListeners.doValidation(ViewListeners.java:76) at webwork.action.ActionSupport.validate(ActionSupport.java:373) at webwork.action.ActionSupport.execute(ActionSupport.java:150) at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:54) at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:132) at com.atlassian.jira.web.dispatcher.JiraServletDispatcher.service(JiraServletDispatcher.java:209) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.AccessLogFilter.doFilter(AccessLogFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119) at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55) at com.atlassian.jira.web.filters.SitemeshExcludePathFilter.doFilter(SitemeshExcludePathFilter.java:38) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:182) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.seraph.filter.LoginFilter.doFilter(LoginFilter.java:181) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:132) at com.atlassian.jira.web.filters.JIRAProfilingFilter.doFilter(JIRAProfilingFilter.java:16) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.ActionCleanupDelayFilter.doFilter(ActionCleanupDelayFilter.java:41) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.RequestCleanupFilter.doFilter(RequestCleanupFilter.java:49) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.johnson.filters.JohnsonFilter.doFilter(JohnsonFilter.java:91) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.gzip.GzipFilter.doFilter(GzipFilter.java:72) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.core.filters.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:37) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.appconsistency.db.DatabaseCompatibilityEnforcerFilter.doFilter(DatabaseCompatibilityEnforcerFilter.java:25) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595) </pre></small></small></p>) is not available.


    Apache Tomcat/5.5.20



    1. Feb 20, 2008

      Jeff Turner says:

      You'll need to use JDK 1.6. I've added a note to the page about this.

      You'll need to use JDK 1.6. I've added a note to the page about this.

  4. Feb 15, 2008

    Eric Weiss says:

    Jira 3.12.1 Jira/Jabber 1.3\\ I set everything up according to the instructions ...

    Jira 3.12.1

    Jira/Jabber 1.3

    I set everything up according to the instructions above, but it isn't working.  I get NOTHING in my Jabber Error/Info/Warn/Debug logs and I get nothing in my Jira log (catalina.out) telling me anything went wrong.  When I purposely mis-configure the Listener settings, I do see the problems in both logs, but I see nothing when I use settings that should work. 

    Any suggestions on what to try next?


      Events triggering message (default: all events) 1,2,3,4,6,7
    User's Jabber ID Property JID
    Users to notify user1, user2
    XMPP Login jirajabber
    XMPP Password myPassword
    XMPP Port (Default 5222) 5222
    XMPP Server myserver  

     
    TIA,
    Eric

    1. Feb 15, 2008

      Eric Weiss says:

      PS.&nbsp; Every once in awhile, I do see the following in the Jira logs:\\ 20080...

      PS.  Every once in awhile, I do see the following in the Jira logs:

      2008-02-15 17:00:15,505 TP-Processor2 INFO [jira.soap.axis.JiraAxisServerFactory] Publishing to jirasoapservice-v2 module class com.atlassian.jira.rpc.soap.JiraSoapServiceImpl with interface interface com.atlassian.jira.rpc.soap.JiraSoapService
      stream:error (conflict)
              at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:306)
              at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
              at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:76)

    2. Feb 20, 2008

      Jeff Turner says:

      Make sure that you're able to ping users from the jirajabber account manually. E...

      Make sure that you're able to ping users from the jirajabber account manually. Everyone needs to have that user added to their roster. See the Jabber configuration section for details.

  5. Feb 21, 2008

    Erin says:

    I need some help chasing down a problem.&nbsp; Here's my setup:\\ User's Jabber ...

    I need some help chasing down a problem.  Here's my setup:

    User's Jabber ID Propertyjabberid

    Users to notifyespiceland@domain.com

    XMPP Loginjira-noreply

    XMPP Passwordjira

    XMPP Serverjabber.domain.com

    I can connect from my PC using these settings to the jabber server and send messages just fine. I can telnet to the jabber server port 5222 from my webserver just fine. When I use just "espiceland" as the Users to Notify, the log says "unknown jabber user espiceland" and when I use "espiceland@domain.com" I get a null pointer exception. I also get a null pointer exception when I use my Jira username in the users to notify slot. I have the jabberid set correctly under my username in Jira. What else can I test?  

  6. May 15

    Anil says:

    Dear Jeff, This is Anil... "Users to notify " issue In Users to Notify:&nbsp;fie...

    Dear Jeff,

    This is Anil...

    "Users to notify " issue

    In Users to Notify: field if I enter"assignee", no users receive notifications, except me, i dont know why i can(Say: Users to notify :assignee , in this case assignee is not recived any notifications ,but i can recive notifications when the Users to notify :assignee )

    but If I enter user names in "Users to notify" field instead of "assignee", the users received notifications(Say: Users to notify :anil,ravi.this two users are reciving notifications)

    dont know Why the notification is not sent if I use assignee , can you help me

    Is there any solution for this? 

    Thanks in Advance

    Anil

  7. Aug 14

    dancercl says:

    Hi jeff: &nbsp;&nbsp;&nbsp;&nbsp; Its a great job\! I like it. But &nbsp;I think...

    Hi jeff:

         Its a great job! I like it.

    But  I think it will be more useful if the 'Notifiable Status' is not restricted to just "ONLINE" and "AWAY", the "OFFLINE" should also be included.

  8. Aug 22

    Thomas Heidenreich says:

    Hi, is it possible NOT to send Notifications when I make changes to my own isses...

    Hi,

    is it possible NOT to send Notifications when I make changes to my own isses - It´s quite annoying to get PopUp-Messages about your own changes...

    Thanks,
      Thomas