2015-09-07 41 views
1

我有一個駱駝應用程序部署在weblogic服務器。駱駝引擎從servlet啓動,處理器使用下面的一段代碼綁定到駱駝註冊表。 registry = context.getRegistry(); //這裏註冊表是Registry的實例。 JndiRegistry jndiRegistry =(JndiRegistry)registry.getRegistry(); jndiRegistry.bind(「referenceJNDINodeName」,new UserReferenceObject()); // UseReferenceObject是一個簡單的POJO類,它有一個需要注入的方法。weblogic jndi節點不刪除Web應用程序的刪除

當應用程序部署在WebLogic中,您可以在的WeblogicJNDI樹查看名爲 「referenceJNDINodeName的」 JNDI節點

當您從應用程序的應用,我認爲,理想的應該刪除JNDI樹相應JNDI節點以及。 但是,JNDI節點「referenceJNDINodeName」仍然出現在JNDI樹後Web應用程序刪除以及。

因此,當您嘗試重新部署應用程序時,獲取JNDI名稱衝突並且應用程序未部署。

如何刪除JNDI節點取消從weblogic服務器部署應用程序的名稱。

回答

0

如果您想在取消部署它時取消綁定,那麼以下幾點應該可能會起作用。我使用InitialContext,因爲JndiRegistry沒有解除綁定。

@Override 
public void contextDestroyed(ServletContextEvent servletContextEvent) { 
    try { 
     unbind("referenceJNDINodeName"); 
     camelContext.stop(); 
    } catch (Exception e) { 
     LOG.error("Couldn't destroy context as wanted", e); 
    } 
} 

private void unbind(String name) { 
    try{ 
     InitialContext initialContext = new InitialContext(); 
     initialContext.unbind(name); 
    } catch (NamingException e) { 
     LOG.error("Couldn't unbind '{}'", name); 
    } 
} 

但是你也可以檢查它是否存在於初始上下文中,如果有,重新綁定它?或者不要綁定它。

+0

謝謝,你給了我一個主意。我認爲,我們可以使用下面的一段代碼解除綁定。我會驗證下面的代碼並確認你。 JndiRegistry jndiRegistry =(JndiRegistry)registry.getRegistry(); \t \t jndiRegistry.getContext()。unbind(「referenceJNDINodeName」);如你所說,// getContext將返回InitialContext。 – TechRider

+0

是的,應該工作! :) – J2B

+0

它的工作。非常感謝。 – TechRider

0

回答我得到低於:

JndiRegistry jndiRegistry =(JndiRegistry)registry.getRegistry(); jndiRegistry.getContext()解除綁定( 「referenceJNDINodeName」); // getContext將返回InitialContext

這工作。