cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniel Kulp (JIRA)" <j...@apache.org>
Subject [jira] Updated: (CXF-2741) JAXB hang on JBoss 5.1.0
Date Tue, 30 Mar 2010 02:39:27 GMT

     [ 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<String,Object>,
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<LdapUser> 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<String,Object>,
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<LdapUser> 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<String,Object>,
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<LdapUser> 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.


Mime
View raw message