小编Ana*_*and的帖子

重新启动LDAP服务器时如何重新连接?

我有一种情况,通过Java程序,我创建一个javax.naming.ldap.LdapContext 并对其进行search()操作 - 这是一个底层连接.然后我将Java应用程序线程置于休眠状态,在此期间我重新启动LDAP服务器(OpenLDAP,只需注意).当App线程唤醒并尝试对LdapContext之前创建的任何操作进行操作时,它会抛出" CommunicationException: Connection is closed".

我想要的是能够重新建立连接.

我看到LdapContext有一个reconnect()方法 - 我将控件传递给null.但是,这没有任何效果.我在Sun LDAP实现中看到,在重新启动LDAP服务器期间,Sun实现维护的ConnectionPool com.sun.jndi.ldap.LdapClient使用"useful = false" 标记了基础实例.在reconnect()通话时 - 它只是呼叫ensureOpen(),再次检查usable标志是否false- 如果是false; 然后它抛出CommunicationException- 所以回到原点.

我的问题是:Java应用程序如何在外部LDAP服务器重启后继续存在?是新的创造LdapContext又是唯一出路?欣赏任何见解.

这是异常的堆栈跟踪:

javax.naming.CommunicationException: connection closed [Root exception is java.io.IOException: connection closed]; remaining name 'uid=foo,ou=People,dc=example,dc=com'
at com.sun.jndi.ldap.LdapCtx.doSearch(LdapCtx.java:1979)
at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1824)
at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1749)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:368)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:338)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:321)
at javax.naming.directory.InitialDirContext.search(InitialDirContext.java:248)
Caused by: java.io.IOException: …
Run Code Online (Sandbox Code Playgroud)

java ldap exception reconnect

8
推荐指数
1
解决办法
7071
查看次数

JAXB Unmarshalling期间的InstantiationException(抽象基类,带有@XmlSeeAlso具体子类)

我遇到了JAXB Unmarshalling错误,如下所示.foo.bar.Base是一个抽象类,带有@XmlSeeAlso注释,其中列出了foo.bar.SubBase(这是foo.bar.Base的具体子类)

上述两个类都可以从main/entry类静态访问:com.example.Request

使用包字符串变量viz创建JAXBContext:

JAXBContext.newInstance("com.example",...);
Run Code Online (Sandbox Code Playgroud)

上面创建的JAXBContext正确列出了所有三个类: com.example.Request, foo.bar.Base and foo.bar.SubBase as "classes known to this JAXBContext"

但它在运行时在下面的解组调用中失败了.我无法弄清楚这里有什么问题.

unmarshaller.unmarshal(<some-DOM-Element-Instance>, com.example.Request.class);
Run Code Online (Sandbox Code Playgroud)

任何指针将不胜感激!谢谢!

堆栈跟踪是:

    Caused by: javax.xml.bind.UnmarshalException: Unable to create an instance of foo.bar.Base  - with linked exception: [java.lang.InstantiationException]

    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:642)

    at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:254)

    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.createInstance(UnmarshallingContext.java:609)

    at com.sun.xml.bind.v2.runtime.unmarshaller.StructureLoader.startElement(StructureLoader.java:181)

    at com.sun.xml.bind.v2.runtime.unmarshaller.XsiTypeLoader.startElement(XsiTypeLoader.java:76)

    at com.sun.xml.bind.v2.runtime.unmarshaller.ProxyLoader.startElement(ProxyLoader.java:55)

    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:481)

    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:459)

    at com.sun.xml.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(InterningXmlVisitor.java:71)

    at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:148)

    at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:239)

    at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:276)

    at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:245)

    at com.sun.xml.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:122)

    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:314)

    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:293)

Caused by: java.lang.InstantiationException

    at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30)

    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

    at com.sun.xml.bind.v2.ClassFactory.create0(ClassFactory.java:123)

    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.createInstance(ClassBeanInfoImpl.java:261)

    at …
Run Code Online (Sandbox Code Playgroud)

abstract-class jaxb

6
推荐指数
1
解决办法
1万
查看次数

JAXB(联合国)xsd类型的编组:xsd:base64Binary和xsd:hexBinary

JAXB将两者xsd:base64Binaryxsd:hexBinary类型映射到byte[].

鉴于我有一个架构/一个DOM元素代表这些类型中的每一个,例如:

<foo>ABCD</foo>对于xsd:hexBinary和
<foo>YTM0NZomIzI2OTsmIzM0NTueYQ==</foo>对于xsd:base64Binary,

目前尚不清楚JAXB 2.1如何处理它.

JAXB.unmarshal(new DOMSource(node), byte[].class)不喜欢有效载荷.
以下都不是:

JAXBContext ctx = JAXBContext.newInstance(byte[].class); ctx.createUnmarshaller().unmarshal(node);

处理这些类型的正确方法是什么?提前致谢.

xml xsd jaxb unmarshalling

5
推荐指数
1
解决办法
1万
查看次数

Jackson JSON:顶级细分市场

我指的是这篇文章:使用jackson将json转换为object,最后一个答案是StaxMan,它表示在Jackson 1.7中可以设置配置,以便Jackson开始生成(也可能解析?)顶级标签/ JSON中的段.

有人可以阐明如何设置该配置,它只适用于JSON生成或解析吗?

非常感谢你!

json jackson

5
推荐指数
1
解决办法
2852
查看次数

LDAP错误:结构对象类链无效(organizationalUnit/referral)

我试图使用命令在我的OpenLDAP实例中从Oracle的JNDI教程导入以下示例:

ldapadd -x -D cn=admin,dc=example,dc=com -W -f refserver.ldif
Run Code Online (Sandbox Code Playgroud)

在哪里,refserver.ldif看起来像这样:

dn: o=JNDITutorial,dc=example,dc=com
o: JNDITutorial
objectclass: top
objectclass: organization

dn: ou=All, o=JNDITutorial,dc=example,dc=com
ou: All
objectclass: top
objectclass: organizationalunit

dn: ou=People, o=JNDITutorial,dc=example,dc=com
ou: People
objectclass: top
objectclass: organizationalunit
objectclass: referral
ref: ldap://10.97.98.201:389/ou=People,o=JNDITutorial

dn: ou=People, ou=All, o=JNDITutorial,dc=example,dc=com
ou: People
objectclass: top
objectclass: organizationalunit
objectclass: referral
ref: ldap://10.97.98.201:389/ou=People,o=JNDITutorial

dn: ou=NewHires, ou=All, o=JNDITutorial,dc=example,dc=com
ou: NewHires
objectclass: top
objectclass: organizationalunit
objectclass: referral
ref: ldap://10.97.98.201:389/ou=NewHires,o=JNDITutorial
Run Code Online (Sandbox Code Playgroud)

这取得了部分成功,报告了以下内容:

adding new entry "o=JNDITutorial,dc=example,dc=com"

adding new entry "ou=All, …
Run Code Online (Sandbox Code Playgroud)

java ldap openldap

3
推荐指数
1
解决办法
6629
查看次数

标签 统计

java ×2

jaxb ×2

ldap ×2

abstract-class ×1

exception ×1

jackson ×1

json ×1

openldap ×1

reconnect ×1

unmarshalling ×1

xml ×1

xsd ×1