Olá pessoal,
Estou tentando acessar o método de um Applet via JavaScript, e até já consegui. Porém estou utilizando uma api de VoIP e preciso efetuar uma chamada, mas quando meu Applet chama o método via JavaScript eu estou recebendo um NullPointerException no browser. Isso só acontece quando chamo o método via javascript, mas quando executo no eclipse funciona perfeitamente.
Minha página HTML
<html>
<head>
<script type="text/javascript">
function chamar() {
var userpart = document.getElementById("userpart").value;
var domain = document.getElementById("domain").value;
var port = document.getElementById("port").value;
var result;
try {
result = document.SipApplet.call(userpart, domain, port);
} catch (err) {
result = err;
}
document.getElementById("result").innerHTML = result;
}
</script>
</head>
<body>
<applet name="SipApplet" code=SipApplet.class width="100" height="100">
</applet>
<br />
Ramal: <input type="text" id="userpart" name="userpart" /> <br />
Servidor: <input type="text" id="domain" name="domain" /> <br />
Porta: <input type="text" id="port" name="port" /> <br />
<input type="button" id="btn_chamar" value="Chamar" onclick="chamar();" /><br />
<br />
<div id="result"></div>
</body>
</html>
Meu Applet
import java.applet.Applet;
import net.sourceforge.peers.AppletManager;
@SuppressWarnings("serial")
public class SipApplet extends Applet {
public String call(String userpart, String domain, String port) {
return AppletManager.getInstance().call(userpart, domain, port);
}
}
E o AppletManager que chama as funções para efetuar a chamada.
import java.net.SocketException;
import net.sourceforge.peers.sip.Utils;
import net.sourceforge.peers.sip.core.useragent.SipListener;
import net.sourceforge.peers.sip.core.useragent.UserAgent;
import net.sourceforge.peers.sip.syntaxencoding.SipUriSyntaxException;
import net.sourceforge.peers.sip.transport.SipRequest;
import net.sourceforge.peers.sip.transport.SipResponse;
public class AppletManager implements SipListener {
private static AppletManager instance;
private UserAgent userAgent;
private AppletManager() {
try {
userAgent = new UserAgent(this, Utils.DEFAULT_PEERS_HOME, new Logger(Utils.DEFAULT_PEERS_HOME));
} catch (SocketException e) {
e.printStackTrace();
}
}
public static AppletManager getInstance() {
if (instance == null) {
instance = new AppletManager();
}
return instance;
}
public String call(String userpart, String domain, String port) {
String callId = Utils.generateCallID(userAgent.getConfig().getLocalInetAddress());
StringBuffer uri = new StringBuffer();
uri.append("sip:");
uri.append(userpart);
uri.append("@");
if (domain == null || domain.isEmpty()) {
domain = userAgent.getConfig().getDomain();
}
uri.append(domain);
if (port != null && !port.isEmpty()) {
uri.append(":");
uri.append(port);
}
String result;
try {
SipRequest sipRequest = userAgent.getUac().invite(uri.toString(), callId);
result = sipRequest.toString();
} catch (SipUriSyntaxException e) {
result = e.getLocalizedMessage();
e.printStackTrace();
} catch (Exception e) {
result = e.getLocalizedMessage();
e.printStackTrace();
}
return result;
}
}
Obrigado.