Ошибка начального просмотра контекста по VPN

У меня есть настройки, как показано выше. Недавно наши базы данных Oracle были перемещены в защищенный сегмент сети, защищенный брандмауэром.

    Hashtable table = new Hashtable();
    table.put("java.naming.factory.initial", "com.ibm.websphere.naming.WsnInitialContextFactory");
    table.put("java.naming.provider.url", "corbaloc:iiop:ABCD1099.x.somecompany.com:2811");


    InitialContext iContext = new InitialContext(table);

    Object object = iContext.lookup("ejb/com/somecompany/sandbox/vpn/tests/SandboxSessionEJBHome");

    SandboxSessionEJBHome sandbox_home = (SandboxSessionEJBHome) PortableRemoteObject.narrow(object, SandboxSessionEJBHome.class);
    try {
        SandboxSessionEJB bean = (SandboxSessionEJB) sandbox_home.create();

    } catch (RemoteException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (CreateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Сценарий № 1: Когда VPN (Cisco Anyconnect) не включен, мой клиент EJB 2.1 может связываться и создавать начальный контекст. Я могу посмотреть мой сеанс без сохранения состояния EJB 2.1. Пока все хорошо. Я еще не закодировал никаких вызовов в базу данных Oracle. Итак, обратите внимание, что в настоящее время у меня нет звонков в Oracle или даже попыток какого-либо соединения JDBC.

Сценарий № 2. Теперь, когда я включаю VPN, я не могу создать начальный контекст, связывание не выполняется.

Я копал дальше, суть вопроса заключается в следующем:

Перед включением VPN ABCD1099.x.somecompany.com и ABCD1099.mnsomecompany.com разрешают один и тот же адрес. После включения VPN появляется двойное подключение, и "ABCD1099.mnsomecompany.com" становится недоступным, но "ABCD1099.x.somecompany.com" по-прежнему маршрутизируется.

Во всем моем коде и при создании профиля WAS я использовал имя хоста, которое можно маршрутизировать. Тем не менее, Initial Context продолжает собирать невосстановимое имя хоста. Я также пытался использовать IP-адреса. Это не работает. Я продолжаю получать следующее исключение.

16:19:05.133 com.ibm.ws.orbimpl.transport.WSTCPTransportConnection createSocket(server,client) P=943838:O=0:CT ORBRas[default] Bind Client Socket To A Specific NIC card=true, client=ABCD1099.x.somecompany.com/10.25.95.13:0, server=ABCD1099.m.n.somecompany.com/10.7.225.141:2811, LocalHost=ABCD1099.x.somecompany.com, ConnectTimeout=10000ms 

16:19:15.164 com.ibm.ws.orbimpl.transport.WSTCPTransportConnection connect:406 P=943838:O=0:CT ORBRas[default]  java.net.SocketTimeoutException: connect timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:381)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:243)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:230)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:377)
    at java.net.Socket.connect(Socket.java:539)
    at com.ibm.ws.orbimpl.transport.WSTCPTransportConnection.createSocket(WSTCPTransportConnection.java:367)
    at com.ibm.CORBA.transport.TransportConnectionBase.connect(TransportConnectionBase.java:359)
    at com.ibm.ws.orbimpl.transport.WSTransport.getConnection(WSTransport.java:436)
    at com.ibm.CORBA.transport.TransportBase.getConnection(TransportBase.java:187)
    at com.ibm.rmi.iiop.TransportManager.get(TransportManager.java:93)
    at com.ibm.rmi.iiop.GIOPImpl.getConnection(GIOPImpl.java:130)
    at com.ibm.rmi.iiop.GIOPImpl.locate(GIOPImpl.java:219)
    at com.ibm.rmi.corba.Corbaloc.locateUsingINS(Corbaloc.java:307)
    at com.ibm.rmi.corba.Corbaloc.resolve(Corbaloc.java:378)
    at com.ibm.rmi.corba.ORB.objectURLToObject(ORB.java:3796)
    at com.ibm.CORBA.iiop.ORB.objectURLToObject(ORB.java:3263)
    at com.ibm.rmi.corba.ORB.string_to_object(ORB.java:3694)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.stringToObject(WsnInitCtxFactory.java:1645)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.getWsnNameService(WsnInitCtxFactory.java:1502)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.getRootContextFromServer(WsnInitCtxFactory.java:1040)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.getRootJndiContext(WsnInitCtxFactory.java:962)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.getInitialContextInternal(WsnInitCtxFactory.java:614)
    at com.ibm.ws.naming.util.WsnInitCtx.getContext(WsnInitCtx.java:128)
    at com.ibm.ws.naming.util.WsnInitCtx.getContextIfNull(WsnInitCtx.java:765)
    at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:164)
    at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:179)
    at javax.naming.InitialContext.lookup(InitialContext.java:436)
    at EJBInvocationTest.main(EJBInvocationTest.java:34)

2 ответа

С помощью командной строки на сервере вы можете Telnet к месту назначения, когда VPN включен?

имя хоста telnet порт #

или traceroute пункт назначения?

Возможно ли, когда VPN включен, хотя пункт назначения маршрутизируемый, он все еще проходит через брандмауэр, который блокирует порты? Я предполагаю, что нам нужно было бы увидеть выходные данные traceroute, чтобы увидеть, достижим ли пункт назначения и происходит ли это, когда telnet'ing до этого пункта назначения в порту.

Я не знаю, является ли это все еще актуальным, но... Первоначальный поиск отвечает ссылкой на объект в зависимости от привязки имени, используемого вашим сервером - поэтому, если сервер отвечает ссылкой на ABCD1099.mnsomecompany.com, он не ' Не имеет значения, что вы указали в URL провайдера именования, поскольку он используется только при первоначальном поиске, в то время как ответы будут использовать любой сервер имен, настроенный для ответа...

И сервер, и клиент используют свои имена (как настроено) в общении, и вы должны убедиться, что оба они разрешимы и маршрутизируемы.

Другие вопросы по тегам