I'm not sure whether I said my problem clearly. So I try to make it clear in this reply.
I am using openmeetings_2_0. I have written a Java client to use SOAP api. My intent is to automatically log the user in a specific room. My Java code performs follwoing steps: 1. getSession 2. loginUser 3. SetUserObjectAndGenerateRoomHash 4.http://localhost:5080/openmeetings/ main.as3.swf11.swf?secureHash=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&language=11&lz proxied=solo&lc_SID=139032 Step 3 return the secureHash which is used in step 4. The user can login the room, and both voice and video work fine, but the whiteboard cannot work. HTTP-ERROR:500 when load a pdf to whiteboard. Audience cannot see share doc on whiteboard which create in http://localhost:5080/openmeetings entrance . I see some bloges about this, but none works. I hope people see this letter help me. Thanks in advance. And all codes are in my first letter. com.ron.openmeetings.util. meetingManager return the secureHash URL. Calling Com.ron.openmeetings.servlet.Room can automatically log the user in a specific room. -----Original Message----- From: ron sun [mailto:[email protected]] Sent: 2013年3月28日 17:22 To: [email protected] Subject: login using SOAP API whiteboard don't work. Hi all, I'm using openmeetnis 2.0. I want my client directly enter the conference room by using SOAP API. /**********************************utility********************************** / package com.ron.openmeetings.util; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.openmeetings.axis.services.UserServiceStub; import org.apache.openmeetings.axis.services.UserServiceStub.GetSession; import org.apache.openmeetings.axis.services.UserServiceStub.GetSessionResponse; import org.apache.openmeetings.axis.services.UserServiceStub.LoginUser; import org.apache.openmeetings.axis.services.UserServiceStub.LoginUserResponse; import org.apache.openmeetings.axis.services.UserServiceStub.SetUserObjectAndGenera teRoomHash; import org.apache.openmeetings.axis.services.UserServiceStub.SetUserObjectAndGenera teRoomHashResponse; public class meetingManager{ public static String generateSecureLoginUrl(String userName, int roomId){ try { //generate sessionId UserServiceStub userServiceStub = new UserServiceStub("http://192.168.202.14:5080/openmeetings/services/UserServic e"); GetSession getSession = new GetSession(); GetSessionResponse session = userServiceStub.getSession(getSession); String sessionId = session.get_return().getSession_id(); // log.debug("Meeting SessionId:" + sessionId); LoginUser loginUser = new LoginUser(); loginUser.setSID(sessionId); loginUser.setUsername("admin"); loginUser.setUserpass("pass"); LoginUserResponse loginUserResponse = userServiceStub.loginUser(loginUser); long loginResult = loginUserResponse.get_return(); // log.debug("Meeting LoginResult:" + loginResult); if(loginResult < 0){ return null; } //secure room hash SetUserObjectAndGenerateRoomHash userObjectAndGenerateRoomHash = new SetUserObjectAndGenerateRoomHash(); userObjectAndGenerateRoomHash.setSID(sessionId); userObjectAndGenerateRoomHash.setUsername(userName); userObjectAndGenerateRoomHash.setFirstname(userName); userObjectAndGenerateRoomHash.setLastname(""); userObjectAndGenerateRoomHash.setProfilePictureUrl(""); userObjectAndGenerateRoomHash.setEmail(""); userObjectAndGenerateRoomHash.setExternalUserId(""); userObjectAndGenerateRoomHash.setExternalUserType(""); userObjectAndGenerateRoomHash.setRoom_id(roomId); userObjectAndGenerateRoomHash.setBecomeModeratorAsInt(0); userObjectAndGenerateRoomHash.setShowAudioVideoTestAsInt(1); SetUserObjectAndGenerateRoomHashResponse userObjectAndGenerateRoomHashResponse = userServiceStub.setUserObjectAndGenerateRoomHash(userObjectAndGenerateRoomHa sh); String roomHash = userObjectAndGenerateRoomHashResponse.get_return(); // log.debug("Meeting secure roomHash:" + roomHash); String ssoUrl = "http://192.168.202.14:5080/openmeetings/main.as3.swf11.swf?secureHash=" + roomHash + "&language=11&lzproxied=solo&lc_SID=139032"; // log.debug("Final secure login url:" + ssoUrl); return ssoUrl; }catch(Exception e) { // log.error(e.getMessage(),e); // throw new TSharkException(e); } return null; } } /************************servlet*********************************/ package com.ron.openmeetings.servlet; import java.io.IOException; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.ron.openmeetings.util.meetingManager; /** * Servlet implementation class Room */ public class Room extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Room() { super(); // TODO Auto-generated constructor stub } /** * @see Servlet#init(ServletConfig) */ public void init(ServletConfig config) throws ServletException { // TODO Auto-generated method stub } /** * @see Servlet#destroy() */ public void destroy() { // TODO Auto-generated method stub super.destroy(); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doPost(request,response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub try{ room(request, response); }catch(Exception e){ } } // @RequestMapping(value = "/room/admin") public void room(HttpServletRequest request, HttpServletResponse response) throws Exception { // String roomId = request.getParameter("roomId"); // String roomSecureLoginUrl = meetingManager.generateSecureLoginUrl("renjiao", Integer.valueOf(roomId)); String roomSecureLoginUrl = meetingManager.generateSecureLoginUrl("renjiao", 6); response.sendRedirect(roomSecureLoginUrl); } } Everything goes correctly except whiteboad don't work. I search on the internet and find it's a bug. On WebContent/src/modules/conference/commonVideoComponentAdapter.lzx, On line 37, it reads "//FIXME: Throws a Null Pointer Exception if the parent view was already destroyed Someone suggests modify method reconnectSuccess, like this: <method name="reconnectSuccess" args="isInterview"> if ($debug) Debug.write("Send reconnectSuccess to ",canvas.rtmp_lc_name); canvas.sendViaLocalConnection(canvas.rtmp_lc_name, "reconnectSuccess", [canvas.thishib.src, canvas.publicSID, hib.userobject, isInterview]); //add secure remote login if(canvas.secureRemoteUserLogin){ if ($debug) Debug.write("as3ConnectionSuccess invoke: ",""); this.parent.as3ConnectionSuccess();//using SOAP API login, miss this. } </method> It doesn't work and cause other error. How to fix it? Thanks a lot! Ron Sun.
