Olá a todos,
Estou com um problema muito estranho. Criei um datapoint onde guardo um valor de mac-address de placas de rede que é calculado por um meta data source. isso funicona bem…
contudo, quando o valor do mac mudar eu desejo executar um jsp que receberá esse novo mac para processamento posterior. o jsp funciona perfeitamente…
O problema esta no publisher HTTP:
O arquivo jsp não recebe nenhum parametro… Onde estou errando?
Na imagem abaixo, nota-se o alarme com a saida do jsp (sem receber nenhum parametro) e nota se entre as chamadas a mudança do valor do datapoint mac relativo…
Aqui esta o código do teste.jsp que esta na pasta ScadaBR e que funiona normalmente se receber o parametro:
<%@ page import="java.net.*" %>
<%
final int PORT = 9;
String ipStr = "192.168.0.255";
String macStr = request.getParameter("mac");
%>
<%!
final byte[] getMacBytes(String macStr) throws IllegalArgumentException {
byte[] bytes = new byte[6];
String[] hex = macStr.split("(\\:|\\-)");
if (hex.length != 6) {
throw new IllegalArgumentException("Invalid MAC address.");
}
try {
for (int i = 0; i < 6; i++) {
bytes[i] = (byte) Integer.parseInt(hex[i], 16);
}
}
catch (NumberFormatException e) {
throw new IllegalArgumentException("Invalid hex digit in MAC address.");
}
return bytes;
}
%>
<html>
<head><title>Acorda <%= macStr %>! </title></head>
<body>
<h2>JSP URI, URL, Context</h2>
<p>Request Context Path: <%= request.getContextPath() %><br></p>
<p>Request URI: <%= request.getRequestURI() %><br></p>
<p>getQueryString: <%= request.getQueryString() %><br></p>
<%
try {
byte[] macBytes = getMacBytes(macStr);
byte[] bytes = new byte[6 + 16 * macBytes.length];
for (int i = 0; i < 6; i++) {
bytes[i] = (byte) 0xff;
}
for (int i = 6; i < bytes.length; i += macBytes.length) {
System.arraycopy(macBytes, 0, bytes, i, macBytes.length);
}
InetAddress address = InetAddress.getByName(ipStr);
DatagramPacket packet = new DatagramPacket(bytes, bytes.length, address, PORT);
DatagramSocket socket = new DatagramSocket();
socket.send(packet);
socket.close();
%>
<h2>Pacote enviado para </h2><p>(<%= macStr %>)</p>
<%
}
catch (Exception e) {
%>
<h2>Falhou no envido do Pacote </h2><p>(<%= macStr %>)</p>
<%
}
%>
</body>
</html>
Se voce chamar o jsp manualmente como se vê abaixo tudo funciona:
Aqui esta o datapoint Meta-Data-Source: