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.


Reply via email to