Return-Path: Delivered-To: apmail-cxf-issues-archive@www.apache.org Received: (qmail 38778 invoked from network); 30 Mar 2010 02:39:53 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 30 Mar 2010 02:39:53 -0000 Received: (qmail 36183 invoked by uid 500); 30 Mar 2010 02:39:53 -0000 Delivered-To: apmail-cxf-issues-archive@cxf.apache.org Received: (qmail 36159 invoked by uid 500); 30 Mar 2010 02:39:53 -0000 Mailing-List: contact issues-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list issues@cxf.apache.org Received: (qmail 36151 invoked by uid 99); 30 Mar 2010 02:39:53 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 30 Mar 2010 02:39:53 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 30 Mar 2010 02:39:49 +0000 Received: from brutus.apache.org (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 4DB86234C4B3 for ; Tue, 30 Mar 2010 02:39:27 +0000 (UTC) Message-ID: <725399254.569831269916767317.JavaMail.jira@brutus.apache.org> Date: Tue, 30 Mar 2010 02:39:27 +0000 (UTC) From: "Daniel Kulp (JIRA)" To: issues@cxf.apache.org Subject: [jira] Updated: (CXF-2741) JAXB hang on JBoss 5.1.0 In-Reply-To: <1314170213.562401269900027428.JavaMail.jira@brutus.apache.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/CXF-2741?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Daniel Kulp updated CXF-2741: ----------------------------- Description: We have been using CXF RESTFul services for a long time on jboss-4.2.3 with no issues. When we switched to JBoss 5.1.0.GA, things worked fine at first, but we noticed that after a short period of uptime, requests began to hang and time out. Debugging this issue, we tracked it to the synchronized block in AbstractJAXBProvider.java: {code} JAXBElementProvider(AbstractJAXBProvider).getPackageContext(Class) line: 377 JAXBElementProvider(AbstractJAXBProvider).getJAXBContext(Class, Type) line: 354 JAXBElementProvider(AbstractJAXBProvider).createMarshaller(Object, Class, Type, String) line: 453 JAXBElementProvider.marshal(Object, Class, Type, String, OutputStream, MediaType) line: 296 JAXBElementProvider.writeTo(Object, Class, Type, Annotation[], MediaType, MultivaluedMap, OutputStream) line: 219 JAXRSOutInterceptor.serializeMessage(Message, Response, OperationResourceInfo, boolean) line: 241 JAXRSOutInterceptor.processResponse(Message) line: 138 JAXRSOutInterceptor.handleMessage(Message) line: 77 PhaseInterceptorChain.doIntercept(Message) line: 243 OutgoingChainInterceptor.handleMessage(Message) line: 76 PhaseInterceptorChain.doIntercept(Message) line: 243 ChainInitiationObserver.onMessage(Message) line: 109 ServletDestination.invoke(ServletConfig, ServletContext, HttpServletRequest, HttpServletResponse) line: 98 ServletController.invokeDestination(HttpServletRequest, HttpServletResponse, ServletDestination) line: 406 ServletController.invoke(HttpServletRequest, HttpServletResponse) line: 139 CXFServlet(AbstractCXFServlet).invoke(HttpServletRequest, HttpServletResponse) line: 142 CXFServlet(AbstractHTTPServlet).handleRequest(HttpServletRequest, HttpServletResponse) line: 179 CXFServlet(AbstractHTTPServlet).doGet(HttpServletRequest, HttpServletResponse) line: 108 CXFServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse) line: 617 CXFServlet(AbstractHTTPServlet).service(ServletRequest, ServletResponse) line: 159 ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 290 ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 206 ReplyHeaderFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 96 ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 235 ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 206 StandardWrapperValve.invoke(Request, Response) line: 235 StandardContextValve.invoke(Request, Response) line: 191 SecurityAssociationValve.invoke(Request, Response) line: 190 JaccContextValve.invoke(Request, Response) line: 92 SecurityContextEstablishmentValve.process(Request, Response, HttpEvent) line: 126 SecurityContextEstablishmentValve.invoke(Request, Response) line: 70 StandardHostValve.invoke(Request, Response) line: 127 ErrorReportValve.invoke(Request, Response) line: 102 CachedConnectionValve.invoke(Request, Response) line: 158 StandardEngineValve.invoke(Request, Response) line: 109 CoyoteAdapter.service(Request, Response) line: 330 Http11Processor.process(Socket) line: 829 Http11Protocol$Http11ConnectionHandler.process(Socket) line: 598 JIoEndpoint$Worker.run() line: 447 Thread.run() line: 619 {code} Specifically, this method: {code} public JAXBContext getPackageContext(Class type) { if (type == null || type == JAXBElement.class) { return null; } synchronized (packageContexts) { String packageName = PackageUtils.getPackageName(type); JAXBContext context = packageContexts.get(packageName); if (context == null) { try { context = JAXBContext.newInstance(packageName, type.getClassLoader(), cProperties); packageContexts.put(packageName, context); } catch (JAXBException ex) { LOG.fine("Error creating a JAXBContext using ObjectFactory : " + ex.getMessage()); return null; } } return context; } } {code} It appears that something is holding on to the synchronized lock on packageContexts and thus calls just block. Any help on this would be appreciated. We are just trying to call a simple CXF service that uses JSR-311 annotated methods and uses JAXB as the data binding. The class and method being called look like this: {code} @Path("/LDAP/") public class LdapServicesImpl implements LdapServices { @GET @Path("/lookup/") @Produces("text/xml") @Override public SearchResult lookupUser(@Context UriInfo ui) { String userid = ui.getQueryParameters().getFirst("uid"); SearchResult result = getLDAPInfo(userid); ... return result; } {code} SearchResult is our JAXB annotated class: {code} @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "SearchResult", namespace = "urn:ldap", propOrder = { "ldapUsers", "error" }) @XmlRootElement(name = "searchResult", namespace = "urn:ldap") public class SearchResult implements Serializable { private final static long serialVersionUID = 987654321L; @XmlElement(namespace = "urn:ldap") protected LdapUsers ldapUsers; @XmlElement(namespace = "urn:ldap") protected String error; ... getters and setters ... } LdapUsers: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "LdapUsers", namespace = "urn:ldap", propOrder = { "ldapUsers" }) public class LdapUsers implements Serializable { private final static long serialVersionUID = 987654321L; @XmlElement(name = "ldapUser", namespace = "urn:ldap") protected List ldapUsers; ... getters and setters ... } LdapUser: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "LdapUser", namespace = "urn:ldap", propOrder = { "id", "fullName", "firstName", "middleName", "lastName", "address", "city", "state", "zip", "entityCode", "telephone", "title", "dn", "mail", "emsrowid", "community", "objectClasses", "groups" }) public class LdapUser implements Serializable { private final static long serialVersionUID = 987654321L; @XmlElement(namespace = "urn:ldap", required = true) protected String id; @XmlElement(namespace = "urn:ldap", required = true) protected String fullName; @XmlElement(namespace = "urn:ldap", required = true) protected String firstName; @XmlElement(namespace = "urn:ldap", required = true) protected String middleName; @XmlElement(namespace = "urn:ldap", required = true) protected String lastName; @XmlElement(namespace = "urn:ldap", required = true) protected String address; @XmlElement(namespace = "urn:ldap", required = true) protected String city; @XmlElement(namespace = "urn:ldap", required = true) protected String state; @XmlElement(namespace = "urn:ldap", required = true) protected String zip; @XmlElement(namespace = "urn:ldap", required = true) protected String entityCode; @XmlElement(namespace = "urn:ldap", required = true) protected String telephone; @XmlElement(namespace = "urn:ldap", required = true) protected String title; @XmlElement(namespace = "urn:ldap", required = true) protected String dn; @XmlElement(namespace = "urn:ldap", required = true) protected String mail; @XmlElement(namespace = "urn:ldap", required = true) protected String emsrowid; @XmlElement(namespace = "urn:ldap", required = true) protected String community; @XmlElement(namespace = "urn:ldap", required = true) protected ObjectClasses objectClasses; @XmlElement(namespace = "urn:ldap", required = true) protected Groups groups; ... getters and setters ... } {code} was: We have been using CXF RESTFul services for a long time on jboss-4.2.3 with no issues. When we switched to JBoss 5.1.0.GA, things worked fine at first, but we noticed that after a short period of uptime, requests began to hang and time out. Debugging this issue, we tracked it to the synchronized block in AbstractJAXBProvider.java: JAXBElementProvider(AbstractJAXBProvider).getPackageContext(Class) line: 377 JAXBElementProvider(AbstractJAXBProvider).getJAXBContext(Class, Type) line: 354 JAXBElementProvider(AbstractJAXBProvider).createMarshaller(Object, Class, Type, String) line: 453 JAXBElementProvider.marshal(Object, Class, Type, String, OutputStream, MediaType) line: 296 JAXBElementProvider.writeTo(Object, Class, Type, Annotation[], MediaType, MultivaluedMap, OutputStream) line: 219 JAXRSOutInterceptor.serializeMessage(Message, Response, OperationResourceInfo, boolean) line: 241 JAXRSOutInterceptor.processResponse(Message) line: 138 JAXRSOutInterceptor.handleMessage(Message) line: 77 PhaseInterceptorChain.doIntercept(Message) line: 243 OutgoingChainInterceptor.handleMessage(Message) line: 76 PhaseInterceptorChain.doIntercept(Message) line: 243 ChainInitiationObserver.onMessage(Message) line: 109 ServletDestination.invoke(ServletConfig, ServletContext, HttpServletRequest, HttpServletResponse) line: 98 ServletController.invokeDestination(HttpServletRequest, HttpServletResponse, ServletDestination) line: 406 ServletController.invoke(HttpServletRequest, HttpServletResponse) line: 139 CXFServlet(AbstractCXFServlet).invoke(HttpServletRequest, HttpServletResponse) line: 142 CXFServlet(AbstractHTTPServlet).handleRequest(HttpServletRequest, HttpServletResponse) line: 179 CXFServlet(AbstractHTTPServlet).doGet(HttpServletRequest, HttpServletResponse) line: 108 CXFServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse) line: 617 CXFServlet(AbstractHTTPServlet).service(ServletRequest, ServletResponse) line: 159 ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 290 ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 206 ReplyHeaderFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 96 ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 235 ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 206 StandardWrapperValve.invoke(Request, Response) line: 235 StandardContextValve.invoke(Request, Response) line: 191 SecurityAssociationValve.invoke(Request, Response) line: 190 JaccContextValve.invoke(Request, Response) line: 92 SecurityContextEstablishmentValve.process(Request, Response, HttpEvent) line: 126 SecurityContextEstablishmentValve.invoke(Request, Response) line: 70 StandardHostValve.invoke(Request, Response) line: 127 ErrorReportValve.invoke(Request, Response) line: 102 CachedConnectionValve.invoke(Request, Response) line: 158 StandardEngineValve.invoke(Request, Response) line: 109 CoyoteAdapter.service(Request, Response) line: 330 Http11Processor.process(Socket) line: 829 Http11Protocol$Http11ConnectionHandler.process(Socket) line: 598 JIoEndpoint$Worker.run() line: 447 Thread.run() line: 619 Specifically, this method: public JAXBContext getPackageContext(Class type) { if (type == null || type == JAXBElement.class) { return null; } synchronized (packageContexts) { String packageName = PackageUtils.getPackageName(type); JAXBContext context = packageContexts.get(packageName); if (context == null) { try { context = JAXBContext.newInstance(packageName, type.getClassLoader(), cProperties); packageContexts.put(packageName, context); } catch (JAXBException ex) { LOG.fine("Error creating a JAXBContext using ObjectFactory : " + ex.getMessage()); return null; } } return context; } } It appears that something is holding on to the synchronized lock on packageContexts and thus calls just block. Any help on this would be appreciated. We are just trying to call a simple CXF service that uses JSR-311 annotated methods and uses JAXB as the data binding. The class and method being called look like this: @Path("/LDAP/") public class LdapServicesImpl implements LdapServices { @GET @Path("/lookup/") @Produces("text/xml") @Override public SearchResult lookupUser(@Context UriInfo ui) { String userid = ui.getQueryParameters().getFirst("uid"); SearchResult result = getLDAPInfo(userid); ... return result; } SearchResult is our JAXB annotated class: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "SearchResult", namespace = "urn:ldap", propOrder = { "ldapUsers", "error" }) @XmlRootElement(name = "searchResult", namespace = "urn:ldap") public class SearchResult implements Serializable { private final static long serialVersionUID = 987654321L; @XmlElement(namespace = "urn:ldap") protected LdapUsers ldapUsers; @XmlElement(namespace = "urn:ldap") protected String error; ... getters and setters ... } LdapUsers: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "LdapUsers", namespace = "urn:ldap", propOrder = { "ldapUsers" }) public class LdapUsers implements Serializable { private final static long serialVersionUID = 987654321L; @XmlElement(name = "ldapUser", namespace = "urn:ldap") protected List ldapUsers; ... getters and setters ... } LdapUser: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "LdapUser", namespace = "urn:ldap", propOrder = { "id", "fullName", "firstName", "middleName", "lastName", "address", "city", "state", "zip", "entityCode", "telephone", "title", "dn", "mail", "emsrowid", "community", "objectClasses", "groups" }) public class LdapUser implements Serializable { private final static long serialVersionUID = 987654321L; @XmlElement(namespace = "urn:ldap", required = true) protected String id; @XmlElement(namespace = "urn:ldap", required = true) protected String fullName; @XmlElement(namespace = "urn:ldap", required = true) protected String firstName; @XmlElement(namespace = "urn:ldap", required = true) protected String middleName; @XmlElement(namespace = "urn:ldap", required = true) protected String lastName; @XmlElement(namespace = "urn:ldap", required = true) protected String address; @XmlElement(namespace = "urn:ldap", required = true) protected String city; @XmlElement(namespace = "urn:ldap", required = true) protected String state; @XmlElement(namespace = "urn:ldap", required = true) protected String zip; @XmlElement(namespace = "urn:ldap", required = true) protected String entityCode; @XmlElement(namespace = "urn:ldap", required = true) protected String telephone; @XmlElement(namespace = "urn:ldap", required = true) protected String title; @XmlElement(namespace = "urn:ldap", required = true) protected String dn; @XmlElement(namespace = "urn:ldap", required = true) protected String mail; @XmlElement(namespace = "urn:ldap", required = true) protected String emsrowid; @XmlElement(namespace = "urn:ldap", required = true) protected String community; @XmlElement(namespace = "urn:ldap", required = true) protected ObjectClasses objectClasses; @XmlElement(namespace = "urn:ldap", required = true) protected Groups groups; ... getters and setters ... } > JAXB hang on JBoss 5.1.0 > ------------------------ > > Key: CXF-2741 > URL: https://issues.apache.org/jira/browse/CXF-2741 > Project: CXF > Issue Type: Bug > Components: JAXB Databinding > Affects Versions: 2.2.6 > Environment: JBoss 5.1.0.GA, Spring 2.5.6, javax.ws.rs.jsr311-api 1.1 > Reporter: Jeffrey Poore > > We have been using CXF RESTFul services for a long time on jboss-4.2.3 with no issues. When we switched to JBoss 5.1.0.GA, things worked fine at first, but we noticed that after a short period of uptime, requests began to hang and time out. Debugging this issue, we tracked it to the synchronized block in AbstractJAXBProvider.java: > {code} > JAXBElementProvider(AbstractJAXBProvider).getPackageContext(Class) line: 377 > JAXBElementProvider(AbstractJAXBProvider).getJAXBContext(Class, Type) line: 354 > JAXBElementProvider(AbstractJAXBProvider).createMarshaller(Object, Class, Type, String) line: 453 > JAXBElementProvider.marshal(Object, Class, Type, String, OutputStream, MediaType) line: 296 > JAXBElementProvider.writeTo(Object, Class, Type, Annotation[], MediaType, MultivaluedMap, OutputStream) line: 219 > JAXRSOutInterceptor.serializeMessage(Message, Response, OperationResourceInfo, boolean) line: 241 > JAXRSOutInterceptor.processResponse(Message) line: 138 > JAXRSOutInterceptor.handleMessage(Message) line: 77 > PhaseInterceptorChain.doIntercept(Message) line: 243 > OutgoingChainInterceptor.handleMessage(Message) line: 76 > PhaseInterceptorChain.doIntercept(Message) line: 243 > ChainInitiationObserver.onMessage(Message) line: 109 > ServletDestination.invoke(ServletConfig, ServletContext, HttpServletRequest, HttpServletResponse) line: 98 > ServletController.invokeDestination(HttpServletRequest, HttpServletResponse, ServletDestination) line: 406 > ServletController.invoke(HttpServletRequest, HttpServletResponse) line: 139 > CXFServlet(AbstractCXFServlet).invoke(HttpServletRequest, HttpServletResponse) line: 142 > CXFServlet(AbstractHTTPServlet).handleRequest(HttpServletRequest, HttpServletResponse) line: 179 > CXFServlet(AbstractHTTPServlet).doGet(HttpServletRequest, HttpServletResponse) line: 108 > CXFServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse) line: 617 > CXFServlet(AbstractHTTPServlet).service(ServletRequest, ServletResponse) line: 159 > ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 290 > ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 206 > ReplyHeaderFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 96 > ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 235 > ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 206 > StandardWrapperValve.invoke(Request, Response) line: 235 > StandardContextValve.invoke(Request, Response) line: 191 > SecurityAssociationValve.invoke(Request, Response) line: 190 > JaccContextValve.invoke(Request, Response) line: 92 > SecurityContextEstablishmentValve.process(Request, Response, HttpEvent) line: 126 > SecurityContextEstablishmentValve.invoke(Request, Response) line: 70 > StandardHostValve.invoke(Request, Response) line: 127 > ErrorReportValve.invoke(Request, Response) line: 102 > CachedConnectionValve.invoke(Request, Response) line: 158 > StandardEngineValve.invoke(Request, Response) line: 109 > CoyoteAdapter.service(Request, Response) line: 330 > Http11Processor.process(Socket) line: 829 > Http11Protocol$Http11ConnectionHandler.process(Socket) line: 598 > JIoEndpoint$Worker.run() line: 447 > Thread.run() line: 619 > {code} > Specifically, this method: > {code} > public JAXBContext getPackageContext(Class type) { > if (type == null || type == JAXBElement.class) { > return null; > } > synchronized (packageContexts) { > String packageName = PackageUtils.getPackageName(type); > JAXBContext context = packageContexts.get(packageName); > if (context == null) { > try { > context = JAXBContext.newInstance(packageName, type.getClassLoader(), cProperties); > packageContexts.put(packageName, context); > } catch (JAXBException ex) { > LOG.fine("Error creating a JAXBContext using ObjectFactory : " > + ex.getMessage()); > return null; > } > } > return context; > } > } > {code} > It appears that something is holding on to the synchronized lock on packageContexts and thus calls just block. Any help on this would be appreciated. > We are just trying to call a simple CXF service that uses JSR-311 annotated methods and uses JAXB as the data binding. The class and method being called look like this: > {code} > @Path("/LDAP/") > public class LdapServicesImpl implements LdapServices { > @GET > @Path("/lookup/") > @Produces("text/xml") > @Override > public SearchResult lookupUser(@Context UriInfo ui) { > String userid = ui.getQueryParameters().getFirst("uid"); > SearchResult result = getLDAPInfo(userid); > ... > return result; > } > {code} > SearchResult is our JAXB annotated class: > {code} > @XmlAccessorType(XmlAccessType.FIELD) > @XmlType(name = "SearchResult", namespace = "urn:ldap", propOrder = { > "ldapUsers", > "error" > }) > @XmlRootElement(name = "searchResult", namespace = "urn:ldap") > public class SearchResult > implements Serializable > { > private final static long serialVersionUID = 987654321L; > @XmlElement(namespace = "urn:ldap") > protected LdapUsers ldapUsers; > @XmlElement(namespace = "urn:ldap") > protected String error; > ... getters and setters ... > } > LdapUsers: > @XmlAccessorType(XmlAccessType.FIELD) > @XmlType(name = "LdapUsers", namespace = "urn:ldap", propOrder = { > "ldapUsers" > }) > public class LdapUsers > implements Serializable > { > private final static long serialVersionUID = 987654321L; > @XmlElement(name = "ldapUser", namespace = "urn:ldap") > protected List ldapUsers; > ... getters and setters ... > } > LdapUser: > @XmlAccessorType(XmlAccessType.FIELD) > @XmlType(name = "LdapUser", namespace = "urn:ldap", propOrder = { > "id", > "fullName", > "firstName", > "middleName", > "lastName", > "address", > "city", > "state", > "zip", > "entityCode", > "telephone", > "title", > "dn", > "mail", > "emsrowid", > "community", > "objectClasses", > "groups" > }) > public class LdapUser > implements Serializable > { > private final static long serialVersionUID = 987654321L; > @XmlElement(namespace = "urn:ldap", required = true) > protected String id; > @XmlElement(namespace = "urn:ldap", required = true) > protected String fullName; > @XmlElement(namespace = "urn:ldap", required = true) > protected String firstName; > @XmlElement(namespace = "urn:ldap", required = true) > protected String middleName; > @XmlElement(namespace = "urn:ldap", required = true) > protected String lastName; > @XmlElement(namespace = "urn:ldap", required = true) > protected String address; > @XmlElement(namespace = "urn:ldap", required = true) > protected String city; > @XmlElement(namespace = "urn:ldap", required = true) > protected String state; > @XmlElement(namespace = "urn:ldap", required = true) > protected String zip; > @XmlElement(namespace = "urn:ldap", required = true) > protected String entityCode; > @XmlElement(namespace = "urn:ldap", required = true) > protected String telephone; > @XmlElement(namespace = "urn:ldap", required = true) > protected String title; > @XmlElement(namespace = "urn:ldap", required = true) > protected String dn; > @XmlElement(namespace = "urn:ldap", required = true) > protected String mail; > @XmlElement(namespace = "urn:ldap", required = true) > protected String emsrowid; > @XmlElement(namespace = "urn:ldap", required = true) > protected String community; > @XmlElement(namespace = "urn:ldap", required = true) > protected ObjectClasses objectClasses; > @XmlElement(namespace = "urn:ldap", required = true) > protected Groups groups; > ... getters and setters ... > } > {code} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.