However, I wrote a standalone java application and try to create an account programmatically, the authentication process can never be done. The following is my code:
Code:
try {
SoapHttpTransport trans = null;
trans = new SoapHttpTransport("http://mydomain/service/soap/");
Element req = Element.XMLElement.mFactory.createElement(AccountConstants.AUTH_REQUEST);
req.addAttribute(AccountConstants.E_ACCOUNT,"admin@mydomain");
req.addAttribute(AccountConstants.E_PASSWORD,"PASSWORD");
Element resp;
resp = trans.invoke(req);
SoapProvisioning sp = new SoapProvisioning();
sp.soapSetURI("http://mydomain/service/soap/");
sp.soapAdminAuthenticate("test", "aaaaa");
Map m=new HashMap();
m.put("firstName", "firstname");
m.put("lastName", "lastname");
sp.createAccount("aa@mydomain", "aaaa", m);
} catch (SoapFaultException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} There will be always a exception in this line:
resp = trans.invoke(req);
Below are the details:
Code:
- local config file `\opt\zimbra\conf\localconfig.xml' is not readable
com.zimbra.common.soap.SoapFaultException: invalid request: missing required element: account
ExceptionId:com.zimbra.common.service.ServiceException: invalid request: missing required element: account
ExceptionId:btpool0-4://mydomain/service/soap/AuthRequest:1303632129543:7c57c89c6bf314e2
Code:service.INVALID_REQUEST
at com.zimbra.common.service.ServiceException.INVALID_REQUEST(ServiceException.java:255)
at com.zimbra.common.soap.Element.checkNull(Element.java:302)
at com.zimbra.common.soap.Element.getElement(Element.java:195)
at com.zimbra.cs.service.account.Auth.handle(Auth.java:79)
at com.zimbra.soap.SoapEngine.dispatchRequest(SoapEngine.java:412)
at com.zimbra.soap.SoapEngine.dispatch(SoapEngine.java:287)
at com.zimbra.soap.SoapEngine.dispatch(SoapEngine.java:158)
at com.zimbra.soap.SoapServlet.doWork(SoapServlet.java:294)
at com.zimbra.soap.SoapServlet.doPost(SoapServlet.java:215)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at com.zimbra.cs.servlet.ZimbraServlet.service(ZimbraServlet.java:208)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:814)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.zimbra.cs.servlet.SetHeaderFilter.doFilter(SetHeaderFilter.java:79)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:81)
at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:155)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:218)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:422)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.handler.rewrite.RewriteHandler.handle(RewriteHandler.java:230)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.handler.DebugHandler.handle(DebugHandler.java:77)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:543)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:946)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:451)
The Zimbra Desktop works pretty well, but the java application does not work.