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.