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.