Сначала, в пользовательском интерфейсе, измените value
для параметра sliderInput, «EU_slider_DF» на value=1
, затем измените свой сервер, чтобы следовать этому
#Add session argument so we can push updates
server<-function(input,output,session){
#Output to our text output, render is reactive so directly use input Сначала, в пользовательском интерфейсе, измените value
для параметра sliderInput, «EU_slider_DF» на value=1
, затем измените свой сервер, чтобы следовать этому
[110]
output$dropinput<-renderPrint({input$szenarios})
#Observe event used to monitor changes anytime the selectinput is changed
observeEvent(input$szenarios,{
if (input$szenarios=="shiny"){ (dropinput<- 2)
}else if (input$szenarios=="calculated") { (dropinput<- 3)
}else{ (dropinput<-1) }
#updates slider based on what is selected
updateSliderInput(session,"EU_slider_DF",value=dropinput, min = 0,
max = 3,step=0.001)
})
}
Немного поздно ответьте, но если это - все еще проблема для Вас (или кто-то еще), я думаю, что это добьется цели:
import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.net.*;
import java.rmi.registry.LocateRegistry;
import java.rmi.server.RMISocketFactory;
import javax.management.MBeanServer;
import javax.management.remote.*;
public class LocalJMXPort {
public static void main(String[] args) {
try {
int port = 12468;
// Create an instance of our own socket factory (see below)
RMISocketFactory factory = new LocalHostSocketFactory();
// Set it as default
RMISocketFactory.setSocketFactory(factory);
// Create our registry
LocateRegistry.createRegistry(port);
// Get the MBeanServer and setup a JMXConnectorServer
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://127.0.0.1:"+port+"/jndi/rmi://127.0.0.1:"+port+"/jmxrmi");
JMXConnectorServer rmiServer = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
rmiServer.start();
// Say something
System.out.println("Connect your jconsole to localhost:"+port+". Press a key to exit");
// Wait for a key press
int in = System.in.read();
//Exit
System.out.println("Exiting");
System.exit(0);
} catch(Exception ex) {
ex.printStackTrace();
}
}
static private class LocalHostSocketFactory extends RMISocketFactory {
public ServerSocket createServerSocket(int port) throws IOException {
ServerSocket ret = new ServerSocket();
ret.bind(new InetSocketAddress("localhost", port));
return ret;
}
public Socket createSocket(String host, int port) throws IOException {
return new Socket(host, port);
}
}
}
Я просто соединил его, и возможно, что я сделал что-то действительно глупое, потому что моя единственная цель состояла в том, чтобы иметь его связывающий с localhost:port вместо *:port и что часть, кажется, работает.
Не стесняйтесь комментировать, существуют ли вещи, которые могли бы быть улучшены или просто глупы.
К сожалению, в настоящее время нет никакого способа сделать это.
Согласно документации Sun единственный-Dcom.sun.management.jmxremote должен открыть только локальный порт, в то время как-Dcom.sun.management.jmxremote.port = открывает удаленно доступный порт.
Оба пути открывают дополнительный случайный порт, который доступен от удаленного.
Я видел-Dcom.sun.management.jmxremote.host =, но это, кажется, не имеет эффекта.
Я пришел к выводу, что нет никакого пути и не использовал локальный брандмауэр для защиты сервера.
Не может помочь с солнцем способу сделать его. Даже после jmx адаптеры начал идти с jdk (6, я думаю?) Я продолжал использовать mx4j для установки адаптера наименьшего-количества-усилия. Это тривиально для запуска адаптера mx4j http на 127.0.0.1 или внутренний единственный интерфейс. Затем SOP был к ssh в с портом вперед или сценариями использования с командами wget.
Если вы получаете доступ с локального хоста, то в этом случае можно сделать то, что делают JConsole и JVisualVM, а именно использовать Attach API для поиска локального адреса сервера (что вы получите, если запустите с -Dcom.sun.management.jmxremote, а не с -Dcom.sun.management.jmxremote.port=N) и подключитесь к нему. В другом ответе Thraidh говорит, что даже в этом случае открыт порт с удаленным доступом, что было верно в более ранних версиях, но не было верно в течение пары лет.
Решение Фредрика работает, но переборщит. Вам нужно только определить RMIServerSocketFactory, а не RMISocketFactory (которая определяет и клиента, и сервер). Это устраняет необходимость в специальной настройке клиента. Код по адресу http://vafer.org/blog/20061010091658 мне кажется корректным.
Управление "из коробки", построенное со свойствами командной строки типа -Dcom.sun.management.jmxremote, может занять вас только до того, как вам понадобится начать программирование с помощью самого JMX API. Обычно мы не хотели, чтобы "нестандартное" управление превратилось в полноценное параллельное API, поэтому есть проблемы, подобные этой, которые недоступны. Мы объясняем, как перейти от одного к другому здесь.
Эймон Макманус, JMX Spec Lead
.