Dear all,
I am running my application on a NAT environment.
I call the java classes from my jsp pages using this client class
package webforce.utils;
import java.rmi.*;*
*import java.net.*;
public class ServiceLoader {
private static Logging log;
private static PropsLoader server_props;
public ServiceLoader(){
}
public static Remote load(String service){
try{
log = new Logging("rmi_loading.txt",false,"RMI Loader");
server_props = new PropsLoader("server.properties");
log.log("ServiceLoader --> load("+service+")");
Remote _rem;
String hostname = server_props.getProperty("webforce.server.hostname");
String ip = server_props.getProperty("webforce.server.ip");
String port = server_props.getProperty("webforce.server.port");
String bindto = server_props.getProperty("webforce.server.bindto");
if(bindto.toLowerCase().equals("hostname")){
log.log("rmi://" +hostname< </em>":"+port+"/"+service);
_rem = Naming.lookup("rmi://"< </em>hostname +":"+port+"/"+service);
}else{
_rem = Naming.lookup("rmi://"< </em>ip +":"+port+"/"+service);
}
return _rem;
}catch(RemoteException rex){
log.log("ServiceLoader --> load("+service+") --> RemoteException --> " +rex.getMessage());
return null;
}catch(MalformedURLException mex){
log.log("ServiceLoader --> load("+service+") --> MalformedURLException --> " +mex.getMessage());
return null;
}catch(NotBoundException nex){
log.log("ServiceLoader --> load("+service+") --> NotBoundException -->" +nex.getMessage());
return null;
}
}
}
while my server does the following
while(i<=li_nb_srv){
//str_service = services_props.getProperty((String)services_enum.nextElement());
str_service = services_props.getProperty("webforce.service."+i);
access_log.log("Server > Loading Service : " + str_service);
Class dyn_class=null;
try{
//Load Services Implementation dynamically
dyn_class = Class.forName(str_service+"Impl");
Object new_inst = dyn_class.newInstance();
Remote rem_ = (Remote)new_inst;
String hostname = server_props.getProperty("webforce.server.hostname");
String ip = server_props.getProperty("webforce.server.ip");
String port = server_props.getProperty("webforce.server.port");
String bindto = server_props.getProperty("webforce.server.bindto");
if(bindto.toLowerCase().equals("hostname")){
Naming.rebind("//" + hostname + ":" + port + "/" + str_service,rem_);
}else{
Naming.rebind("//" + ip + ":" + port + "/" + str_service,rem_);
}
}catch(ClassNotFoundException cnfe){
error_log.log("WebforceServer --> WebforceServer() --> ClassNotFoundException --> " + cnfe.getMessage());
access_log.log("Server > Error loading [" + str_service + "] Please check error_log");
}catch(InstantiationException ie){
error_log.log("WebforceServer --> WebforceServer() --> InstantiationException --> " + ie.getMessage());
access_log.log("Server > Error loading [" + str_service + "] Please check error_log");
}catch(IllegalAccessException iae){
error_log.log("WebforceServer --> WebforceServer() --> IllegalAccessException --> " + iae.getMessage());
access_log.log("Server > Error loading [" + str_service + "] Please check error_log");
}catch(RemoteException re){
error_log.log("WebforceServer --> WebforceServer() --> RemoteException --> " + re.getMessage());
access_log.log("Server > Error loading [" + str_service + "] Please check error_log");
}catch(MalformedURLException murlex){
error_log.log("WebforceServer --> WebforceServer() --> MalformedURLException --> " + murlex.getMessage());
access_log.log("Server > Error loading [" + str_service + "] Please check error_log");
}
access_log.log("Server > Loaded : " + str_service);
access_log.log("-");
when i run the application i get the following
java.rmi.ConnectException: Connection refused to host: 192.168.1.2; nested exception is:
java.net.ConnectException: Connection timed out: connect
sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
sun.rmi.server.UnicastRef.invoke(Unknown Source)
webforce.services.Global.GlobalServiceImpl_Stub.getDefaultLang(Unknown Source)
org.apache.jsp.main_jsp._jspService(main_jsp.java:70)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
the ip showing in the error is the internal ip of the server and not the public ip.
i tried the following
start rmiregistry -J-Djava.rmi.server.hostname=192.168.0.177 -J-Djava.security.policy=java.policy
with 192.168.0.177 being the public ip
also when printing the remote object in my page i get the following
GlobalServiceImpl_Stub[UnicastRef [liveRef: [endpoint:[192.168.1.2:1523](remote),objID:[1d2fc36:12572494b5d:-8000, 0]]]]
your help is highly appreciated...
Thank you.