1

Ich bin ein Neuling in Jira Active Object-Implementierung. ich den Fehler gefunden, als aktives Objekts Umsetzung mit jTrick http://www.j-tricks.com/tutorials/active-objects-injectionJIRA Active Objekt Ausnahme

„Es kann keine neue Referenz LazyLoadedServletReference {Descriptor = com.atlassian.jira.demo.aoDemo erstellen: Adressliste (A Servlet hinzufügen und die Liste Adresse), s[email protected]3a0a701} [INFO] [talledLocalContainer] com.atlassian.util.concurrent.LazyReference $ InitializationException: java.lang.NullPointerException: Der Containeraccount des Plugins ist null. Plugin: com.atlassian .jira.demo.aoDemo. Modulname: com.atlassian.jira.demo.Servlet.AddressServlet. "

-Code für IAOService.java

public interface IAOService { 
public ActiveObjects getActiveObjects();} 

-Code für IAOServiceImpl

public class IAOServiceImpl implements IAOService { 
private final ActiveObjects ao; 

public IAOServiceImpl(ActiveObjects ao) { 
    System.out.println("Initializing constructor impl"); 
    System.out.println("IAOServiceImpl constructor found active object ::"+ao); 
    this.ao=ao;   
} 
public ActiveObjects getActiveObjects() { 
    return this.ao; 
}} 

ich die Abhängigkeit in Servlet-Konstruktor Injizieren

Code Abhängigkeit

öffentlichen AddressServlet (IAOServ ice aoService) {
if (aoService! = null) {
this.aoService = aoService; sonst this.aoService = null; }

Ich deaktiviere die Atlassian-Plugin-Scanner-Funktionalität in meinem Plugin.

Bitte helfen Sie mir, dieses Problem zu lösen.

Ich erwähne auch AO-Modul in Plugin-Deskriptor-Datei.

Plugin Descriptor-Code:

<ao key="ao-module"> 
<description>Configuration of active object service</description> 
<entity>sample.AddressEntity</entity> 

<component-import key="ao" name="Active Objects service" interface="com.atlassian.activeobjects.external.ActiveObjects"> 
<description>Component to access Active Objects functionality from the plugin</description></component-import> 

Pom Code

<pluginArtifact> 
    <groupId>com.atlassian.activeobjects</groupId> 
    <artifactId>activeobjects-plugin</artifactId> 
    <version>${ao.version}</version> 
</pluginArtifact> 
<pluginArtifact> 
    <groupId>com.atlassian.activeobjects</groupId> 
    <artifactId>activeobjects-jira-spi</artifactId> 
    <version>${ao.version}</version> 
</pluginArtifact> 

Ao.version 0,18

Ausnahmestapel

[INFO] [talledLocalContainer] 2016.09.14 11: 26: 37.451 http-NiO-2990-exec-2 DEBUG Admin 686x211x1 1x1imyf 172.17.20.51 /rest/plugins/1.0/com.atlassian. jira.demo.aoDemo-Taste [caactiveobjects.osgi.OsgiServiceUtilsImpl] Registrieren Service [email protected] mit Schnittstelle net.java.ao.schema.TableNameConverter und Eigenschaften {com.atlassian. plugin.key = com.atlassian.jira.demo.aoDemo} [INFO] [talledLocalContainer] 2016-09-14 11: 26: 37.453 http-nio-2990-exec-2 DEBUG admin 686x211x1 1x1imyf 172.17.20.51 /Ruhe/plugins/1.0/com.atlassian.jira.demo .aoDemo-key [c.a.activeobjects.osgi.OsgiServiceUtilsImpl] Registrierungsdienst com.atlassian.activeobjects.config.internal.DefaultActiveObjectsConfiguration @ 7e886a2b mit Schnittstelle com.atlassian.activeobjects.config.ActiveObjectsConfiguration und Eigenschaften {com.atlassian.plugin.key = com.atlassian.jira.demo.aoDemo} [INFO] [talledLocalContainer] 2016.09.14 11: 26: 37.457 http-NiO-2990-exec-2 DEBUG Admin 686x211x1 1x1imyf 172.17.20.51 /rest/plugins/1.0/com.atlassian.jira.demo.aoDemo-key [caactiveobjects.osgi.ActiveObjectsServiceFactory] onPluginModuleEnabledEvent Speichern unattached Konfiguration Modul für [com.atlassian.jira.demo.aoDemo] [INFO] [talledLocalContainer] 2016.09.14 11: 26: 37.463 http-NiO-2990-exec-2 DEBUG Admin 686x211x1 1x1imyf 172.17.20.51 /rest/plugins/1.0/com.atlassian.jira.demo.aoDemo-key [caactiveobjects.osgi.ActiveObjectsServiceFactory] onPluginEnabledEvent Anbringen an ungebundenem [com.atlassian.jira.demo.aoDemo] [INFO] [talledLocalContainer ] 2016-09-14 11: 26: 37,463 http-nio-2990-exec-2 DEBUG admin 686x211x1 1x1imyf 172.17.20.51 /rest/plugins/1.0/com.atlassian.jira.demo.aoDemo-key [ cactiveobjects.osgi.TenantAwareActiveObjects] init bundle [com.atlassian.jira.demo.aoDemo] [INFO] [talledLocalContainer] 14.09.2016 11: 26: 37,464 http-nio-2990-exec-2 DEBUG admin 686x211x1 1x1imyf 172.17.20.51 /rest/plugins/1.0/com.atlassian.jira.demo.aoDemo-key [caactiveobjects.osgi.TenantAwareActiveObjects] Bündel [com.atlassian.jira.demo.aoDemo] Laden neue AO Versprechen für JiraTenantImpl {id = 'System'} [INFO] [talledLocalContainer] 2016.09.14 11: 26: 37,464 http-nio-2990-exec-2 DEBUG-Administrator 686x211x1 1x1imyf 172.17.20.51 /rest/plugins/1.0/com.atlassian.jira.demo.aoDemo-key [caactiveobjects.osgi.TenantAwareActiveObjects] setAoConfiguration [com .atlassian.jira.demo.aoDemo] [INFO] [talledLocalContainer] 14.09.2016 11: 26: 37,464 http-nio-2990-exec-2 DEBUG admin 686x211x1 1x1imyf 172.17.20.51 /rest/plugins/1.0 /com.atlassian.jira.demo.aoDemo-key [caactiveobjects.osgi.TenantAwareActiveObjects] Bündel [com.atla ssian.jira.demo.aoDemo] hat ActiveObjectsConfiguration [INFO] [talledLocalContainer] 2016-09-14 11: 26: 37,474 aktive-objekte-init-JiraTenantImpl {id = 'system'} - 0 DEBUG admin
[ca activeobjects.osgi.TenantAwareActiveObjects] Bündel [com.atlassian.jira.demo.aoDemo] ActiveObjects erstellen [INFO] [talledLocalContainer] 2016-09-14 11: 26: 37,488 Active-objects-init-JiraTenantImpl {id = ' System '} - 0 DEBUG Admin
[caactiveobjects.osgi.TenantAwareActiveObjects] Bündel [com.atlassian.jira.demo.aoDemo] erstellt ActiveObjects [INFO] [talledLocalContainer] 2016.09.14 11: 26: 47.872 http -nio-2990-exec-9 FEHLER admin 686x226x1 1x1imyf 172.1 7.20.51 /Plugins/Servlets/addressservlet [caplugin.servlet.DefaultServletModuleManager] leider nicht möglich, neue Referenz LazyLoadedServletReference {Deskriptor erstellen = com.atlassian.jira.demo.aoDemo: Adresse-Liste (A Servlet hinzuzufügen und Adressliste), s[email protected]3a0a701} [INFO] [talledLocalContainer] com.atlassian.util.concurrent.LazyReference $ InitializationException: java.lang.NullPointerException: Plugin Container Accessor ist Null. Plugin: com.atlassian.jira.demo.aoDemo. Modulname: com.atlassian.jira.demo.Servlet.AddressServlet.[INFO] [talledLocalContainer] bei com.atlassian.util.concurrent.LazyReference.getInterruptibly (LazyReference.java:149) [INFO] [talledLocalContainer] bei com.atlassian.util.concurrent.LazyReference.get (LazyReference. Java: 112) [INFO] [talledLocalContainer] bei com.atlassian.plugin.servlet.DefaultServletModuleManager.getInstance (DefaultServletModuleManager.java:374) [INFO] [talledLocalContainer] bei com.atlassian.plugin.servlet.DefaultServletModuleManager. getServlet (DefaultServletModuleManager.java:353) [INFO] [talledLocalContainer] um com.atlassian.plugin.servlet.DefaultServletModuleManager.getServlet (DefaultServletModuleManager.java:171) [INFO] [TalledLocalContainer] bei com.atlassian.plugin.servlet.ServletModuleContainerServlet.service (ServletModuleContainerServlet.java:36) [INFO] [talledLocalContainer] bei javax.servlet.http.HttpServlet.service (HttpServlet.java:725) [INFO ] [talledLocalContainer] ... 70 gefiltert [INFO] [talledLocalContainer] bei com.atlassian.labs.httpservice.resource.ResourceFilter.doFilter (ResourceFilter.java:59) [INFO] [talledLocalContainer] ... 38 [INFO] gefiltert [talledLocalContainer] bei com.atlassian.jira.security.JiraSecurityFilter.doFilter (JiraSecurityFilter.java:70) [INFO] [talledLocalContainer] ... 91 gefiltert [INFO] [talledLocalContainer] bei java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) [INFO] [talledLocalContainer] bei java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) [INFO] [talledLocalContainer ] um org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) [INFO] [talledLocalContainer] um java.lang.Thread.run (Thread.java:745) [INFO ] [talledLocalContainer] verursacht durch: java.lang.NullPointerException: Der Plugin-Container-Accessor ist null. Plugin: com.atlassian.jira.demo.aoDemo. Modulname: com.atlassian.jira.demo.Servlet.AddressServlet. [INFO] [talledLocalContainer] bei com.google.common.base.Preconditions.checkNotNull (Preconditions.java:250) [INFO] [talledLocalContainer] bei com.atlassian.plugin.module.ClassPrefixModuleFactory.createModule (ClassPrefixModuleFactory. Java: 32) [INFO] [talledLocalContainer] bei com.atlassian.plugin.module.PrefixDelegatingModuleFactory.createModule (PrefixDelegatingModuleFactory.java:88) [INFO] [talledLocalContainer] bei com.atlassian.plugin.servlet.descriptors. ServletModuleDescriptor.getModule (ServletModuleDescriptor.java:43) [INFO] [talledLocalContainer] um com.atlassian.plugin.servlet.DelegatingPluginServlet. (DelegatingPluginServlet.java:30) [INF O] [talledLocalContainer] bei com.atlassian.plugin.servlet.DefaultServletModuleManager $ LazyLoadedServletReference.create (DefaultServletModuleManager.java:456) [INFO] [talledLocalContainer] bei com.atlassian.util.concurrent.LazyReference $ Sync.run (LazyReference.java:325) [INFO] [talledLocalContainer] bei com.atlassian.util.concurrent.LazyReference.getInterruptibly (LazyReference.java:143) [INFO] [talledLocalContainer] ... weitere 211

+0

Können Sie ein vollständigeres Beispiel Ihres Codes veröffentlichen? –

+0

Ya das ist mein Code 'private final ActiveObjects ao; \t \t public ActiveServiceImpl() { \t \t this.ao = ComponentAccessor.getOSGiComponentInstanceOfType (ActiveObjects.class); \t \t System.out.println ("----------------------------------------) --------------------------------- "); \t \t System.out.println ("ActiveObject-Instanz ist" + this.ao); \t} \t \t public void addEntity (String name, String-Adresse, String Land) { \t \t \t} \t ' –

+0

1- Können Sie bitte Ihre ursprüngliche Frage bearbeiten Sie den Code hinzufügen, anstatt Einfügen in einen Kommentar (wo die Zeilenenden entfernt werden)? 2- Der von Ihnen gepostete Code zeigt nicht den Aufruf von "activeobject.create()", von dem Sie sagten, dass er nicht funktionierte. 3- Es wäre hilfreich, die gesamte Ausnahme (einschließlich des vollständigen Ausnahmetyps und der nachfolgenden Zeilen des Stack-Trace) zu posten. –

Antwort

0

Anstatt ComponentAccessor.getOSGIComponentInstanceOfType aufzurufen, sollten Sie stattdessen ActiveObjects in den Konstruktor Ihres Servlets einfügen.Dies ist das empfohlene Entwurfsmuster, und at least one source schlägt vor, dass der Zugriff auf AO ohne Verwendung der Injektion auf ähnliche Weise wie oben beschrieben unterbrochen wird.

Ich glaube, dies geschieht, weil GetOSGIComponentInstanceOfType einen einzigen AO-Kontext aus dem JIRA (Pico) -Container zurückgibt, der nicht über Ihr Plugin weiß, während Sie das AO für die eigenen Entities Ihres Plugins konfigurieren möchten.

Beachten Sie, dass Servlets bereits automatisch verkabelt sind. Sie müssen also keine separaten <component> erstellen, wie im obigen Link gezeigt. Fügen Sie einfach ActiveObjects als Konstruktorargument zu Ihrem Servlet hinzu und speichern Sie es später in Ihrer Klasse benutzen.

+1

Hallo Scott! Lösung hat nicht funktioniert. Die Übergabe des Active Object an die Servletkonstruktorservlet nicht gefunden (404) Exception wird ausgelöst. Kannst du eine Vorlage für die Verwendung der AO in Jira erstellen? –

+0

Überprüfen Sie die Protokolle - wenn Sie eine 404 erhalten, ist es wahrscheinlich, weil Ihr Plugin nicht initialisiert wurde, aus einem Grund, der darin dokumentiert werden sollte. Es ist auch generell Aufgabe des Fragestellers, einen MCVE (http://stackoverflow.com/help/mcve) zu veröffentlichen. –

+0

Hallo Scott ich ändere die Logik der Implementierung von aktiven Objekt, aber immer noch nicht erfolgreich. Bitte löse dieses Problem –