Coherence*Extend remote-addresses
We're trying to use multiple addresses for our Coherence*Extend clients to provide load-balancing and redundancy. To accomplish this, we've configured our clients with multiple socket-address entries:
<remote-addresses>
<socket-address>
<address>proxyHost1</address>
<port>9099</port>
</socket-address>
<socket-address>
<address>proxyHost2</address>
<port>9099</port>
</socket-address>
<socket-address>
<address>proxyHost3</address>
<port>9099</port>
</socket-address>
</remote-addresses>
This works fine for failure situations, however, in our testing it appears that the client will connect to the nodes in a round-robin method starting with the last defined host. So, with the above configuration every client will connect to proxyHost3, and only connect to proxyHost2 if host3's connection failed. We could maintain a separate configuration file across all of our nodes shuffling the order, however this could be problematic and would not be preferred.
Is there a better way to effectively distribute the client connections across our pool of proxies?
Thanks,
-Allen
Hi Allen,
The Coherence*Extend TCP/IP client randomizes the list of socket addresses before attempting the initial connect, so I'm not sure why you always see your clients connect to the last address in the list. I ran a quick test using both the Java and .NET client, but could not reproduce what you are seeing. Are you sure that the proxyHostX host names resolve to different IP addresses on the test client machine?
Regards,
Jason
Similar Messages
-
Coherence Extend remote address port in TCP Connection
Hi,
From the log below, I see remote address port is picked some random port(48552). (currently i disabled the firewall), If i enable the firewall it could be an issue, is there any way i can specify the remote ports that tcp connection use?
2011-02-24 13:18:18.076/1280.207 Oracle Coherence GE 3.6.0.1 <D6> (thread=Proxy:ExtendTcpProxyService:TcpAcceptor, member=13): Opened: TcpConnection(Id=0x0000012E56A3CA1B0A1F96B688F7EEBCEDA2AA9397203393CF480379B3963D86, Open=true, LocalAddress=10.31.150.182:9099, RemoteAddress=10.31.150.182:48552)
One more question,
I have two proxy servers, is it possible to configure the client to make two connection (redundant) one for first proxy and another for second proxy. is it make sense?
Thanks
Prab
Edited by: 833796 on Feb 24, 2011 2:35 AMHi Prab
The random port is what normally is called an ephemeral port for the client and is usually not a problem for firewalls since this is expected behavior. If you want to control the client port you can do this by adding the <local-address> to the tcp-initiator element.
As for the second question, it doesn't quite work to do as you suggest. The proxy contains state for the client, as this is not replicable between the proxies one cannot continue where the other one left off.
Thanks
/Charlie -
Coherence Extend: is remote address a JVM/System property?
Hello,
I want to pass remote address and port as a JVM argument (not really being part of the cache configuration of the extend clients), is it possible?
<remote-addresses>
<socket-address>
<address>192.168.0.2</address>
<port>9099</port>
</socket-address>
<socket-address>
<address>192.168.0.3</address>
<port>9099</port>
</socket-address>
</remote-addresses>
is it possible to Dynamically inject the Address into the cache configuration file?
<socket-address>
*<address>{IPAddress}</address>*
<port>9099</port>
</socket-address>
</remote-addresses>
Thanks
PrabHi Prab,
You do it like this:
<socket-address>
<address system-property="my.extend.address"></address>
<port system-property="my.extend.port"></port>
</socket-address>You then specify the properties when you start up
-Dmy.extend.address=192.168.0.2 -Dmy.extend.port=9099JK -
Hi
I have installed coheI have installed coherence server "fmw_12.1.3.0.0_coherence_Disk1_1of1.zip" along with Examples on windows machine and C++ client coherence-cpp-12.1.3.0.0b51709-windows-x86-vs2012.zip on the same machine.
I have built the "contacts" C++ Example successfully and while I execute this "contacts" using run I am facing TcpAcceptor error.
On my coherence server the TcpAcceptor is listening on port 8088, so I have modified the extend-cache-config.xml file with values "ip address of my windows machine" and port as "8088".
All the time I am getting below error,
coherence::net::messaging::ConnectionException: could not establish a connection to one of the following addresses: {10.242.152.242/10.242.152.242:8088}; make sure the "remote-addresses" configuration element contains an address and port of a running TcpAcceptor
at class coherence::lang::TypedHandle<class coherence::component::net::extend::PofConnection> __thiscall coherence::component::util::TcpInitiator::openConne
ction(void)(TcpInitiator.cpp:307)
at coherence::component::util::TcpInitiator::openConnection
at coherence::component::util::Initiator::ensureConnection
at coherence::component::net::extend::RemoteCacheService::openChannel
at coherence::component::net::extend::RemoteService::doStart
at coherence::component::net::extend::RemoteService::start
at coherence::component::util::SafeService::startService
at coherence::component::util::SafeService::restartService
at coherence::component::util::SafeService::ensureRunningServiceInternal
at coherence::component::util::SafeService::start
at coherence::net::DefaultConfigurableCacheFactory::configureService
at coherence::net::DefaultConfigurableCacheFactory::ensureService
at coherence::net::DefaultConfigurableCacheFactory::ensureRemoteCache
at coherence::net::DefaultConfigurableCacheFactory::configureCache
at coherence::net::DefaultConfigurableCacheFactory::ensureCache
at coherence::net::CacheFactory::getCache
at unsigned __int64 coherence::lang::class_spec<class coherence::lang::Managed<class ContactId>,class coherence::lang::extends<class coherence::lang::Object,class coherence::lang::Void<class coherence::lang::Object> >,class coherence::lang::implements<void,void,void,void,void,void,void,void,void,void,void,void,void,void,void,void> >::sizeOf(bool)
at _onexit
at class coherence::util::Hashtable * coherence::lang::factory<class coherence::util::Hashtable>::create(void)
at class coherence::util::Hashtable * coherence::lang::factory<class coherence::util::Hashtable>::create(void)
at BaseThreadInitThunk
at RtlInitializeExceptionChain
at RtlInitializeExceptionChain
on thread "main"
Caused by: coherence::net::messaging::ConnectionException: coherence::component::util::TcpInitiator::TcpConnection@029EAD78{Id=NULL, Open=1, LocalAddress=NULL,
RemoteAddress=10.242.152.242/10.242.152.242:8088}: socket disconnect
at class coherence::lang::TypedHandle<class coherence::net::messaging::Response> __thiscall coherence::component::net::extend::AbstractPofRequest::Status::g
etResponse(void)(AbstractPofRequest.cpp:203)
at coherence::component::net::extend::AbstractPofRequest::Status::getResponse
at coherence::component::net::extend::AbstractPofRequest::Status::waitForResponse
at coherence::component::util::Initiator::openConnection
at coherence::component::net::extend::PofConnection::open
at coherence::component::util::TcpInitiator::openConnection
at coherence::component::util::Initiator::ensureConnection
at coherence::component::net::extend::RemoteCacheService::openChannel
at coherence::component::net::extend::RemoteService::doStart
at coherence::component::net::extend::RemoteService::start
at coherence::component::util::SafeService::startService
at coherence::component::util::SafeService::restartService
at coherence::component::util::SafeService::ensureRunningServiceInternal
at coherence::component::util::SafeService::start
at coherence::net::DefaultConfigurableCacheFactory::configureService
at coherence::net::DefaultConfigurableCacheFactory::ensureService
at coherence::net::DefaultConfigurableCacheFactory::ensureRemoteCache
at coherence::net::DefaultConfigurableCacheFactory::configureCache
at coherence::net::DefaultConfigurableCacheFactory::ensureCache
at coherence::net::CacheFactory::getCache
at unsigned __int64 coherence::lang::class_spec<class coherence::lang::Managed<class ContactId>,class coherence::lang::extends<class coherence::lang::Object
,class coherence::lang::Void<class coherence::lang::Object> >,class coherence::lang::implements<void,void,void,void,void,void,void,void,void,void,void,void,void
,void,void,void> >::sizeOf(bool)
at _onexit
at class coherence::util::Hashtable * coherence::lang::factory<class coherence::util::Hashtable>::create(void)
at class coherence::util::Hashtable * coherence::lang::factory<class coherence::util::Hashtable>::create(void)
at BaseThreadInitThunk
at RtlInitializeExceptionChain
at RtlInitializeExceptionChain
on thread "main"
Caused by: coherence::io::IOException: socket disconnect
at unsigned int __thiscall coherence::net::Socket::readInternal(unsigned char *,unsigned int)(Socket.cpp:333)
at coherence::net::Socket::readInternal
at coherence::net::Socket::SocketInput::read
at coherence::io::BufferedInputStream::fillBuffer
at coherence::io::BufferedInputStream::read
at coherence::component::util::TcpInitiator::readMessageLength
at coherence::component::util::TcpInitiator::TcpConnection::TcpReader::onNotify
at coherence::component::util::Daemon::run
at coherence::lang::Thread::run
on thread "ExtendTcpCacheService:coherence::component::util::TcpInitiator:coherence::component::util::TcpInitiator::TcpConnection::TcpReader"We are facing same issue. Could you please provide us any working .Net sample code for the version 12.1.2.0.
<ssl>
<protocol>Tls</protocol>
<local-certificates>
<certificate>
<url>c:\Cert\</url>
<password>password</password>
<flags>DefaultKeySet</flags>
</certificate>
</local-certificates>
</ssl>
thanks
Bala -
Coherence Extend Address-provider for dynamic load balancing
Hi,
I want to have load balancing across my proxies. so, trying to use <address-provider> feature.
Here is my setup,
I have two proxies and many clients.I am configuring both proxy and the client to use load sharing scheme.
There are implemented classes for the interface AddressProvider. So, i am going to use that.
Here is proxy server settings,
<proxy-scheme>
<service-name>ExtendTcpProxyService</service-name>
<thread-count>10</thread-count>
<acceptor-config>
<tcp-acceptor>
<address-provider>
<class-name>com.tangosol.net.RefreshableAddressProvider</class-name>
</address-provider>
</tcp-acceptor>
</acceptor-config>
<autostart>true</autostart>
</proxy-scheme>
I know there is some silly mistake with that,
I am getting error message in the following log,
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.emc.srm.common.daemon.SrmDaemon.start(SrmDaemon.java:59)
... 5 more
Caused by: (Wrapped: Missing or inaccessible constructor "com.tangosol.net.RefreshableAddressProvider()"
<address-provider>
<class-name>com.tangosol.net.RefreshableAddressProvider</class-name>
</address-provider>) java.lang.InstantiationException
at com.tangosol.util.Base.ensureRuntimeException(Base.java:293)
at com.tangosol.run.xml.XmlHelper.createInstance(XmlHelper.java:2542)
at com.tangosol.run.xml.XmlHelper.createInstance(XmlHelper.java:2426)
at com.tangosol.net.ConfigurableAddressProvider.createAddressProvider(ConfigurableAddressProvider.java:277)
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.peer.acceptor.TcpAcceptor.configure(TcpAcceptor.CDB:78)
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.grid.ProxyService.configure(ProxyService.CDB:67)
at com.tangosol.coherence.component.util.SafeService.startService(SafeService.CDB:6)
at com.tangosol.coherence.component.util.SafeService.ensureRunningService(SafeService.CDB:27)
at com.tangosol.coherence.component.util.SafeService.start(SafeService.CDB:14)
at com.tangosol.net.DefaultConfigurableCacheFactory.ensureServiceInternal(DefaultConfigurableCacheFactory.java:1057)
at com.tangosol.net.DefaultConfigurableCacheFactory.ensureService(DefaultConfigurableCacheFactory.java:892)
at com.tangosol.net.DefaultCacheServer.startServices(DefaultCacheServer.java:81)
at com.tangosol.net.DefaultCacheServer.intialStartServices(DefaultCacheServer.java:250)
at com.tangosol.net.DefaultCacheServer.startAndMonitor(DefaultCacheServer.java:55)
at com.tangosol.net.DefaultCacheServer.main(DefaultCacheServer.java:197)
... 10 more
Caused by: java.lang.InstantiationException
at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at com.tangosol.util.ClassHelper.newInstance(ClassHelper.java:587)
at com.tangosol.run.xml.XmlHelper.createInstance(XmlHelper.java:2501)
... 23 more
Cannot start daemon
First question:
1) without address provider section in the proxy server configuration xml, will it use any default address provider implementation?
2) what's wrong with the proxy server settings xml which causes above error?
Thanks
PrabHi LuK,
Sounds like there is no load balancing is happening in my environment.
I didn't use address provider tag since it's mentioned in AddressProvider Interface API that by default it uses ConfigurableAddressProvider implementation.
Here is a xml snippet in remote client cache configuration xml,
<tcp-initiator>
*<remote-addresses>*
*<socket-address>*
*<address>PROXY-A</address>*
*<port>9099</port>*
*</socket-address>*
*<socket-address>*
*<address>PROXY-B</address>*
*<port>9099</port>*
*</socket-address>*
*</remote-addresses>*
<connect-timeout>10s</connect-timeout>
</tcp-initiator>
what i mean by load balancing is,
I will be having lot of web service queries which runs very fast. I would like to see both the proxies serves the web requests.
I am observing, One connection has been made to one proxy when it's starts up and keep hold on to it (no matter whether other proxy is free or not).
is it a bug? or am i doing some mistake?
Thanks
Prab -
Coherence Extend Config: Client create a new Cluster
Hi,
I have configured one storage-enabled coherence node and one proxy server on port 9099 as shown in the wiki. Coherence client is configured with the right -Dtangosol.coherence.cacheconfig which points to the xml file with
+ +<remote-cache-scheme>++
++ <scheme-name>extend-dist</scheme-name>++
++ <service-name>ExtendTcpCacheService</service-name>++
++ <initiator-config>++
++ <tcp-initiator>++
++ <remote-addresses>++
++ <socket-address>++
++ <address>Proxy_IP</address>++
++ <port>9099</port>++
++ </socket-address>++
++ </remote-addresses>++
++ <connect-timeout>10s</connect-timeout>++
++ </tcp-initiator>++
++ <outgoing-message-handler>++
++ <heartbeat-interval>5s</heartbeat-interval>++
++ <heartbeat-timeout>4s</heartbeat-timeout>++
++ <request-timeout>50s</request-timeout>++
++ </outgoing-message-handler>++
++ </initiator-config>++
++ </remote-cache-scheme>++
My Client logs shows that it has created a new cluster and then it loaded the Dtangosol.coherence.cacheconfig xml file. Is there a way to prevent my client starting a new cluster? Is configuration incorrect? Any help will be greatly appreciated :)
Client Log:
======
2011-02-10 04:39:37.599/0.599 Oracle Coherence 3.6.0.1 <Info> (thread=main, member=n/a): Loaded operational configuration from "jar:file:/usr/share/java/coherence-3.6.0.1.jar!/tangosol-coherence.xml"
2011-02-10 04:39:37.606/0.606 Oracle Coherence 3.6.0.1 <Info> (thread=main, member=n/a): Loaded operational overrides from "jar:file:/usr/share/java/coherence-3.6.0.1.jar!/tangosol-coherence-override-dev.xml"
2011-02-10 04:39:37.606/0.606 Oracle Coherence 3.6.0.1 <D5> (thread=main, member=n/a): Optional configuration override "/tangosol-coherence-override.xml" is not specified
2011-02-10 04:39:37.615/0.615 Oracle Coherence 3.6.0.1 <D5> (thread=main, member=n/a): Optional configuration override "/custom-mbeans.xml" is not specified
Oracle Coherence Version 3.6.0.1 Build 17846
Grid Edition: Development mode
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
2011-02-10 04:39:38.112/1.112 Oracle Coherence GE 3.6.0.1 <D4> (thread=main, member=n/a): TCMP bound to /172.23.73.236:8088 using SystemSocketProvider
2011-02-10 04:39:38.432/1.432 Oracle Coherence GE 3.6.0.1 <Info> (thread=Cluster, member=n/a): This Member(Id=3, Timestamp=2011-02-10 04:39:38.236, Address=172.23.73.236:8088, MachineId=62188, Location=site:lss.emc.com,machine:lglor236,process:5631, Role=ApacheCommonsDaemonDaemonLoader, Edition=Grid Edition, Mode=Development, CpuCount=4, SocketCount=4) joined cluster "*cluster:0xC4DB" with senior Member(Id=2, Timestamp=2011-02-10* 04:33:09.003, Address=172.23.73.236:8090, MachineId=62188, Location=site:lss.emc.com,machine:lglor236,process:4193, Role=ApacheCommonsDaemonDaemonLoader, Edition=Grid Edition, Mode=Development, CpuCount=4, SocketCount=4)
2011-02-10 04:39:38.439/1.439 Oracle Coherence GE 3.6.0.1 <D5> (thread=Cluster, member=n/a): Member 2 joined Service Cluster with senior member 2
2011-02-10 04:39:38.440/1.440 Oracle Coherence GE 3.6.0.1 <D5> (thread=Cluster, member=n/a): Member 2 joined Service Management with senior member 2
2011-02-10 04:39:38.440/1.440 Oracle Coherence GE 3.6.0.1 <D5> (thread=Cluster, member=n/a): Member 2 joined Service DistributedCache with senior member 2
2011-02-10 04:39:38.442/1.442 Oracle Coherence GE 3.6.0.1 <Info> (thread=main, member=n/a): Started cluster Name=cluster:0xC4DB
Group{Address=224.3.6.0, Port=36000, TTL=4}
MasterMemberSet
ThisMember=Member(Id=3, Timestamp=2011-02-10 04:39:38.236, Address=172.23.73.236:8088, MachineId=62188, Location=site:lss.emc.com,machine:lglor236,process:5631, Role=ApacheCommonsDaemonDaemonLoader)
OldestMember=Member(Id=2, Timestamp=2011-02-10 04:33:09.003, Address=172.23.73.236:8090, MachineId=62188, Location=site:lss.emc.com,machine:lglor236,process:4193, Role=ApacheCommonsDaemonDaemonLoader)
ActualMemberSet=MemberSet(Size=2, BitSetCount=2
Member(Id=2, Timestamp=2011-02-10 04:33:09.003, Address=172.23.73.236:8090, MachineId=62188, Location=site:lss.emc.com,machine:lglor236,process:4193, Role=ApacheCommonsDaemonDaemonLoader)
Member(Id=3, Timestamp=2011-02-10 04:39:38.236, Address=172.23.73.236:8088, MachineId=62188, Location=site:lss.emc.com,machine:lglor236,process:5631, Role=ApacheCommonsDaemonDaemonLoader)
RecycleMillis=1200000
RecycleSet=MemberSet(Size=0, BitSetCount=0
TcpRing{Connections=[2]}
IpMonitor{AddressListSize=0}
2011-02-10 04:39:38.477/1.477 Oracle Coherence GE 3.6.0.1 <D5> (thread=Invocation:Management, member=3): Service Management joined the cluster with senior service member 2
Feb 10, 2011 4:39:38 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@257b40fe: display name [org.springframework.context.support.ClassPathXmlApplicationContext@257b40fe]; startup date [Thu Feb 10 04:39:38 EST 2011]; root of context hierarchy
Feb 10, 2011 4:39:38 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [configurationRestApplicationContext.xml]
Feb 10, 2011 4:39:38 AM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@257b40fe]: org.springframework.beans.factory.support.DefaultListableBeanFactory@4bd27069
Feb 10, 2011 4:39:38 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@4bd27069: defining beans [component,server,router,srmconfigurationsresource,srmconfigurationtyperesource,srmconfigurationresource,coherenceStatusResource,configurationMapRepository,configurationOVFFileLoader,defaultConfigurationLoader,feedpagingLinkHandler,adminConfigTransformer,configurationMapQueryHandler,fileUploadResource,postProcessorImpl]; root of factory hierarchy
[Fatal Error] :-1:-1: Premature end of file.
[Fatal Error] :-1:-1: Premature end of file.
*2011-02-10 04:39:39.332/2.332 Oracle Coherence GE 3.6.0.1 <Info> (thread=main, member=3): Loaded cache configuration from "file:/etc/sysconfig/proxy_node.xml"*
2011-02-10 04:39:39.504/2.504 Oracle Coherence GE 3.6.0.1 <D5> (thread=DistributedCache, member=3): Service DistributedCache joined the cluster with senior service member 2
Also I have verified that my storage enabled node and proxy node have formed a cluster...
The client has been started with -Dtangosol.coherence.cacheconfig=/etc/sysconfig/proxy_node.xml
Thanks & Regards,
SandeepHi,
Used -Dtangosol.coherence.tcmp.enabled=false to disable TCMP mode... ( Phew... :) )
In my client code we have the following statements...
*==> Service service = CacheFactory.getService("DistributedCache");*
* Set<Member> storeEnabledSet = ((DistributedCacheService) service)*
* .getStorageEnabledMembers();*
*==> CacheFactory.ensureCluster();*
Does this needs to be changed for an Extend Client configuration?
With my current setup I am getting exceptions ...
2011-02-13 22:36:59.075/111.151 Oracle Coherence GE 3.6.0.1 <Error> (thread=main, member=n/a): Error while starting cluster: java.lang.UnsupportedOperationException: TCMP clustering has been disabled*; this configuration may only access clustered services via Extend proxies.*
at com.tangosol.coherence.component.net.Cluster.onStart(Cluster.CDB:42)
at com.tangosol.coherence.component.net.Cluster.start(Cluster.CDB:11)
at com.tangosol.coherence.component.util.SafeCluster.startCluster(SafeCluster.CDB:3)
at com.tangosol.coherence.component.util.SafeCluster.restartCluster(SafeCluster.CDB:7)
at com.tangosol.coherence.component.util.SafeCluster.ensureRunningCluster(SafeCluster.CDB:26)
at com.tangosol.coherence.component.util.SafeCluster.start(SafeCluster.CDB:2)
at com.tangosol.net.CacheFactory.ensureCluster(CacheFactory.java:998)
at com.emc.srm.admin.config.rest.RestApplicationLauncher.waitForCacheServer(RestApplicationLauncher.java:155)
at com.emc.srm.admin.config.rest.RestApplicationLauncher.main(RestApplicationLauncher.java:108)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.emc.srm.common.daemon.SrmDaemon.start(SrmDaemon.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.commons.daemon.support.DaemonLoader.start(DaemonLoader.java:219)
Any ideas on how to fix this?
Regards,
Sandeep
===========================
Client configuration:
<cache-mapping>
<cache-name>ConfigurationMapRepository</cache-name>
<scheme-name>extend-dist</scheme-name>
</cache-mapping>
<caching-schemes>
<near-scheme>
<scheme-name>extend-near</scheme-name>
<front-scheme>
<local-scheme>
<high-units>1000</high-units>
</local-scheme>
</front-scheme>
<back-scheme>
<remote-cache-scheme>
<scheme-ref>extend-dist</scheme-ref>
</remote-cache-scheme>
</back-scheme>
<invalidation-strategy>all</invalidation-strategy>
</near-scheme>
<!-- Event Repository cache scheme definition START -->
<remote-cache-scheme>
<scheme-name>extend-dist</scheme-name>
<service-name>DistributedCache</service-name>
<initiator-config>
<tcp-initiator>
<remote-addresses>
<socket-address>
<address>X.X.X.X</address>
<port>9099</port>
</socket-address>
</remote-addresses>
<connect-timeout>10s</connect-timeout>
</tcp-initiator>
<outgoing-message-handler>
<heartbeat-interval>5s</heartbeat-interval>
<heartbeat-timeout>4s</heartbeat-timeout>
<request-timeout>50s</request-timeout>
</outgoing-message-handler>
</initiator-config>
</remote-cache-scheme>
</caching-schemes> -
Accessing Coherence Extend* Proxy Deployoed on Weblogic Coherence Cluster from Java Client
Hi,
I am trying to access Extend Proxy through Thick Java Client
Followed steps as per below links and deployed a GAR on 3 Server ( 2 Storage Enabled Coherence Cluster and 1 Coherence Storage Disabled Extend Proxy Enabled). I could see ExtendProxyService using JMX and can see Port running on the System.
Ref :
Setting Up Coherence*Extend - 12c (12.1.2)
http://docs.oracle.com/middleware/1212/coherence/COHAG/deploy_options.htm#CHDJBJDI
Issue :
When I tried to Execute Java Client to Connect to Proxy Server it Connects to Port and then Disconnects with ConnectionException as below.
Observer below Lines in Box is show he Connected Socket with Port 9099 which is Extend Proxy Port
Error Message
2013-11-08 14:55:55.114/1.202 Oracle Coherence GE 12.1.2.0.0 <D5> (thread=TcpClientRemoteService:TcpInitiator, member=n/a): Started: TcpInitiator{Name=TcpClientRemoteService:TcpInitiator, State=(SERVICE_STARTED), ThreadCount=0, Codec=Codec(Format=POF), Serializer=com.tangosol.io.DefaultSerializer, PingInterval=0, PingTimeout=30000, RequestTimeout=30000, ConnectTimeout=10000, SocketProvider=[email protected], RemoteAddresses=WrapperSocketAddressProvider{Providers=[[DTC37446E9C6CBD/127.0.0.0:9099]]}, SocketOptions{LingerTimeout=0, KeepAliveEnabled=true, TcpDelayEnabled=false}}
2013-11-08 14:55:55.146/1.234 Oracle Coherence GE 12.1.2.0.0 <D5> (thread=main, member=n/a): Connecting Socket to 127.0.0.0:9099
2013-11-08 14:55:55.146/1.234 Oracle Coherence GE 12.1.2.0.0 <Info> (thread=main, member=n/a): Connected Socket to 127.0.0.0:9099
2013-11-08 14:55:55.161/1.249 Oracle Coherence GE 12.1.2.0.0 <Info> (thread=main, member=n/a): Error establishing a connection with 127.0.0.0:9099: com.tangosol.net.messaging.ConnectionException: TcpConnection(Id=null, Open=true, LocalAddress=0.0.0.0:54384, RemoteAddress=127.0.0.0:9099)
2013-11-08 14:55:55.161/1.249 Oracle Coherence GE 12.1.2.0.0 <Error> (thread=main, member=n/a): Error while starting service "TcpClientRemoteService": com.tangosol.net.messaging.ConnectionException: could not establish a connection to one of the following addresses: [127.0.0.0:9099]; make sure the "remote-addresses" configuration element contains an address and port of a running TcpAcceptor
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.peer.initiator.TcpInitiator.openConnection(TcpInitiator.CDB:121)
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.peer.Initiator.ensureConnection(Initiator.CDB:11)
at com.tangosol.coherence.component.net.extend.remoteService.RemoteCacheService.openChannel(RemoteCacheService.CDB:7)
at com.tangosol.coherence.component.net.extend.RemoteService.doStart(RemoteService.CDB:11)
at com.tangosol.coherence.component.net.extend.RemoteService.start(RemoteService.CDB:5)
at com.tangosol.coherence.component.util.SafeService.startService(SafeService.CDB:53)
at com.tangosol.coherence.component.util.safeService.SafeCacheService.startService(SafeCacheService.CDB:5)
at com.tangosol.coherence.component.util.SafeService.ensureRunningService(SafeService.CDB:27)
at com.tangosol.coherence.component.util.SafeService.start(SafeService.CDB:14)
at com.tangosol.net.ExtensibleConfigurableCacheFactory.startService(ExtensibleConfigurableCacheFactory.java:681)
at com.tangosol.net.ExtensibleConfigurableCacheFactory.ensureService(ExtensibleConfigurableCacheFactory.java:599)
at com.tangosol.coherence.config.scheme.AbstractCachingScheme.realizeCache(AbstractCachingScheme.java:50)
at com.tangosol.coherence.config.scheme.AbstractBundlingScheme.realizeCache(AbstractBundlingScheme.java:31)
at com.tangosol.net.ExtensibleConfigurableCacheFactory.ensureCache(ExtensibleConfigurableCacheFactory.java:254)
at com.tangosol.net.CacheFactory.getCache(CacheFactory.java:205)
at com.tangosol.net.CacheFactory.getCache(CacheFactory.java:182)If this proxy design (not starting up due to a invalid entry in "authroized-hosts") is on-purpose from Coherence Engineers - then it should be re-visited.
I think the PROXY Server should just log a message stating about the invalid DNS entry for the Authorized-host and continue with the startup...Failing to start completely doesn;t make sense since one cannot rely completely on DNS to
say everything should be correct before a server start.
Ofcourse you can overcome by writing your own Custom Filter - but the issue pop's out as with any custom filter(s) is maintaining them along the road (with all minor/major coherence upgrades).
Also - this "Authorized-Hosts" concept should be carefully analyzed particularly for the following issues...
(1) if the client IP is changed in the DNS server - will the proxy-server allow the new Client connection without any issues? when will the PROXY server flush its CLIENT DNS entries or what is the TTL time-limit for a CLIENT cached through Authorized-hosts by the PROXY-SERVER?
(2) Suppose, we have a CLIENT in the "Authroized-Hosts" making a valid connection to the PROXY and putting some cache into the SERVER CACHE through the PROXY....now if the IP-address (DNS being the same) of the CLIENT is changed - can the CLIENT can GET the CACHE it just PUT into the SERVER without any ERRORS?
(3) How often we need to re-start PROXIES? Do we need to re-start them often for the DNS issues (if any) mentioned above?
Looks like the Limited documentation & examples for Coherence*Extend - particularly for .NET & C++ clients & *Extend Proxies is a point of concern.
vk -
Coherence *Extend-TCP configuration not working
Hi,
I was trying to setup the Coherence *Extend-TCP configuration on my solaris box.
To start with, i'm trying to start a Cache server instance by using the cluster-side configuration XML (given at URL below)
http://wiki.tangosol.com/display/COH32UG/Configuring+and+Using+Coherence*Extend
But while starting its throwing me the below error. The Coherence version that i'm using is 3.2/353. Please advise.
Exception in thread "main" java.lang.IllegalArgumentException: The "Proxy" element is missing a required acceptor configuration element
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.ProxyService.configure(ProxyService.CDB:30)
at com.tangosol.coherence.component.util.SafeService.startService(SafeService.CDB:5)
at com.tangosol.coherence.component.util.SafeService.getRunningService(SafeService.CDB:26)
at com.tangosol.coherence.component.util.SafeService.ensureRunningService(SafeService.CDB:1)
at com.tangosol.coherence.component.util.SafeService.start(SafeService.CDB:9)
at com.tangosol.net.DefaultConfigurableCacheFactory.ensureService(DefaultConfigurableCacheFactory.java:775)
at com.tangosol.net.DefaultCacheServer.start(DefaultCacheServer.java:138)
at com.tangosol.net.DefaultCacheServer.main(DefaultCacheServer.java:60)
regards
MikeSorry,
I noticed that the above error occurs for version 3.1.1 (& not for 3.2) as previously
specified in previous message (above). My apologies.
As a follow-up, i've now installed 3.2 jars on my environment & i noticed that the
above error doesnt occur for this version. The cache server seems to be coming
up fine now (with the appropriate TCP/IP configuration tag in the xml).
But when i try to run my client application (which attempts to connect to this
remote cache server), it throws an InvocationTargetException error (full exception
below).
The error indicates that i'm missing some elements in the XML configuration.
Exception
(Wrapped) java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.tangosol.net.extend.AdapterFactory.ensureCacheServiceAdapter(AdapterFactory.java:69)
at com.tangosol.net.DefaultConfigurableCacheFactory.ensureService(DefaultConfigurableCacheFactory.java:729)
at com.tangosol.net.DefaultConfigurableCacheFactory.ensureCache(DefaultConfigurableCacheFactory.java:650)
at com.tangosol.net.DefaultConfigurableCacheFactory.configureCache(DefaultConfigurableCacheFactory.java:831)
at com.tangosol.net.DefaultConfigurableCacheFactory.ensureCache(DefaultConfigurableCacheFactory.java:284)
at com.tangosol.net.CacheFactory.getCache(CacheFactory.java:622)
at com.tangosol.net.CacheFactory.getCache(CacheFactory.java:600)
at com.tangosol.examples.explore.SimpleCacheClient.main(SimpleCacheClient.java:25)
Caused by: java.lang.IllegalArgumentException: Missing required initiator child configuration element: <extend-cache-scheme tier='front'>
<scheme-name>extend-direct</scheme-name>
<service-name>ExtendTcpCacheService</service-name>
<initiator-config tier='front'>
<tcp-initiator>
<remote-addresses>
<socket-address>
<address>gpblnx1d.nam.nsroot.net</address>
<port>32000</port>
</socket-address>
</remote-addresses>
<connect-timeout>10s</connect-timeout>
<request-timeout>5s</request-timeout>
</tcp-initiator>
</initiator-config>
</extend-cache-scheme>
at com.tangosol.coherence.extend.component.comm.Adapter.getInitiatorElement(Adapter.CDB:13)
at com.tangosol.coherence.extend.component.comm.adapter.CacheServiceStub.configure(CacheServiceStub.CDB:5)
at com.tangosol.coherence.extend.component.application.library.generic.CoherenceExtend.createCacheServiceStub(CoherenceExtend.CDB:4)
at com.tangosol.coherence.extend.component.application.library.generic.CoherenceExtend.ensureCacheServiceStub(CoherenceExtend.CDB:15) -
Coherence Extends and Local Cache
I am triying to use coherence extends to do some work with cache,
with a local cache is that possible i keep getting null pointer exception,
like if the data is not being stored in the cache.
<cache-mapping>
<cache-name>local-pds2-*</cache-name>
<scheme-name>local-cache</scheme-name>
</cache-mapping>
<local-scheme>
<scheme-name>local-cache</scheme-name>
<eviction-policy>LRU</eviction-policy>
<high-units>32000</high-units>
<low-units>10</low-units>
<unit-calculator>FIXED</unit-calculator>
<expiry-delay>10ms</expiry-delay>
<flush-delay>1000ms</flush-delay>
</local-scheme>
is there something wrong in my configuration?this is the config y use for the client
<?xml version="1.0"?>
<!DOCTYPE cache-config SYSTEM "cache-config.dtd">
<cache-config>
<caching-scheme-mapping>
<cache-mapping>
<cache-name>local-pds2-*</cache-name>
<scheme-name>local-cache</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>dist-pds2-*</cache-name>
<scheme-name>extend-dist</scheme-name>
</cache-mapping>
</caching-scheme-mapping>
<caching-schemes>
<local-scheme>
<scheme-name>local-cache</scheme-name>
<eviction-policy>LRU</eviction-policy>
<high-units>32000</high-units>
<low-units>10</low-units>
<unit-calculator>FIXED</unit-calculator>
<expiry-delay>10ms</expiry-delay>
<flush-delay>1000ms</flush-delay>
</local-scheme>
<remote-cache-scheme>
<scheme-name>extend-dist</scheme-name>
<service-name>ExtendTcpCacheService</service-name>
<initiator-config>
<tcp-initiator>
<remote-addresses>
<socket-address>
<address>172.16.2.229</address>
<address>localhost</address>
<port>5354</port>
</socket-address>
</remote-addresses>
<connect-timeout>10s</connect-timeout>
</tcp-initiator>
<outgoing-message-handler>
<request-timeout>5s</request-timeout>
</outgoing-message-handler>
</initiator-config>
</remote-cache-scheme>
</caching-schemes>
</cache-config>
and this for the server
<?xml version="1.0"?>
<!DOCTYPE cache-config SYSTEM "cache-config.dtd">
<cache-config>
<defaults>
<serializer system-property="tangosol.coherence.serializer"/>
<socket-provider system-property="tangosol.coherence.socketprovider"/>
</defaults>
<caching-scheme-mapping>
<cache-mapping>
<cache-name>dist-pds2-*</cache-name>
<scheme-name>dist-default</scheme-name>
</cache-mapping>
</caching-scheme-mapping>
<cache-mapping>
<cache-name>dist-*</cache-name>
<scheme-name>distributed</scheme-name>
<init-params>
<init-param>
<param-name>back-size-limit</param-name>
<param-value>8MB</param-value>
</init-param>
</init-params>
</cache-mapping>
<distributed-scheme>
<scheme-name>distributed</scheme-name>
<service-name>DistributedCache</service-name>
<backing-map-scheme>
<local-scheme>
<scheme-ref>binary-backing-map</scheme-ref>
</local-scheme>
</backing-map-scheme>
<autostart>true</autostart>
</distributed-scheme>
<local-scheme>
<scheme-name>binary-backing-map</scheme-name>
<eviction-policy>HYBRID</eviction-policy>
<high-units>{back-size-limit 0}</high-units>
<unit-calculator>BINARY</unit-calculator>
<expiry-delay>{back-expiry 1h}</expiry-delay>
<flush-delay>1m</flush-delay>
<cachestore-scheme></cachestore-scheme>
</local-scheme>
<caching-schemes>
<distributed-scheme>
<scheme-name>dist-default</scheme-name>
<backing-map-scheme>
<local-scheme/>
</backing-map-scheme>
<autostart>true</autostart>
</distributed-scheme>
<proxy-scheme>
<service-name>ExtendTcpProxyService</service-name>
<acceptor-config>
<tcp-acceptor>
<local-address>
<address >localhost</address>
<port >5354</port>
</local-address>
</tcp-acceptor>
</acceptor-config>
<proxy-config>
<cache-service-proxy>
<enabled>true</enabled>
</cache-service-proxy>
<invocation-service-proxy>
<enabled>true</enabled>
</invocation-service-proxy>
</proxy-config>
<autostart >true</autostart>
</proxy-scheme>
</caching-schemes>
</cache-config> -
Coherence-Extend and Continuous Query performance
Hi,
I am trying to evaluate the performance impact of continous queries, when using coherence extend (TCP). The idea is that desktop clients will be running continuous queries against a cluster, and other processes will be updating the data in that cluster. The clients themselves take a purely read-only view of the data.
In my tests, I find that the updater process takes about 250ms to update 5000 values in the cache (using a putAll operation). When I have a continuous query running against a remote cache, linked with coherence extend, the update time increases to about 1500ms. This is not CPU bound.
Is this what people would expect?
If so this raises questions to me about:
1) slow subscribers - what if one of my clients is very badly behaved? Can I detect this and/or take action?
2) conflation of updates - can Coherence do conflation?
3) can I get control to send object deltas over the wire rather than entire objects?
Is this a use case for which CoherenceExtend and continuous queries were designed?
RobertYes, it is certainly possible, although depending on your requirements it may be more or less additional coding. You have a few choices. For example, since you have a CQC on the cache, you could conceivably aggregate locally (on any event). In other words, since all the data are local, there is no need to do the parallel aggregation (unless it is CPU limited). Depending on the aggregation, you may only have to recalculate part of it.
You can access the internal data structure (Map) within the CQC as follows:
Map map = cqc.getInternalCache();
// now we can do aggregation
NamedCache cache = new WrapperNamedCache(map);
cache.aggregate(..);More complex approaches would only recalculate portions based on the event, or (depending on the function) might use the event to adjust the aggregated results.
Peace,
Cameron Purdy | Oracle Coherence
http://coherence.oracle.com/ -
Coherence *Extend configuration
Hello,
To enable Coherence Extend, we should define a proxy-scheme in our cluster cache-config that defines a coherence *extend proxy-service, containing a tcp-acceptor with a local address and port.
Can there be only 1 such an extend proxy service running on the same node? Or should we redefine the extend proxy-service configuration for each cache server that is running on the same node (to use a different port)? In both cases, we have to define at least 2 new cache-config files - one with the extend proxy service and one without. Is this correct?
We're now trying to run 2 cache servers on the same node with an extend proxy service. When we try to start the 2nd cache server, we get the following exception (which is quite normal because the coherence proxy service tries to bind to a socket that is already in use by the other cache server instance that is running the extend proxy service):
2010-01-21 09:48:10.923/7.865 Oracle Coherence GE 3.5.2/463 <Error> (thread=Proxy:ExtendTcpProxyService:TcpAcceptor:TcpProcessor, member=1): error binding ServerSocket to 10.2.12.144:9099: java.net.BindException: Address already in use
at sun.nio.ch.Net.bind(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source)
at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.peer.acceptor.TcpAcceptor.configureSocket(TcpAcceptor.CDB:27)
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.peer.acceptor.TcpAcceptor$TcpProcessor.onEnter(TcpAcceptor.CDB:25)
at com.tangosol.coherence.component.util.Daemon.run(Daemon.CDB:14)
at java.lang.Thread.run(Unknown Source)
Is there a workaround that makes it possible to use the same cache configuration (containing coherence *extend proxy-service, with tcp-acceptor) with different cache servers on the same machine?
If not, what is the best practice to configure the *extend proxy service?
Thanks in advanceyou can inject system properties into your coherence cache configuration as follows:
<tcp-acceptor>
<local-address>
<address system-property="wouters.address">localhost</address>
<port system-property="wouters.port">1234</port>
</local-address>
</tcp-acceptor>
The above example will default to localhost:1234, however you can override these with system properties. This will allow you to reuse the same config, but tailor it to your application.
Cheers,
Neville. -
Can I use VIP to load balance Coherence Extend?
Hi,
It is possible to provide a list of remote addresses for a remote cache configuration as shown below:
<remote-cache-scheme>
<scheme-name>remote-scheme</scheme-name>
<service-name>ExtendTcpCacheService</service-name>
<tcp-initiator>
<remote-addresses>
<socket-address>
<address>server1_IP</address>
<port>35501</port>
</socket-address>
<socket-address>
<address>server2_IP</address>
<port>35501</port>
</socket-address>
</remote-cache-scheme>
Now is it possible to use a VIP instead of individual IPs for the same purpose?
I tried it and failed. The error was caused by "RequestTimeout". I verified the VIP configuration and it was correct.
Does anyone have similar experience?
Regards,I haven't worked with VIP, but my vague recollection regarding VIP is that:
(1) A VIP address can only be bound to a single server as it's primarily a fast failover mechanism, so you'd still need a set of them.
(2) VIP isn't intended to be used without CRS. As Coherence includes its own cluster management stack, it would be unusual to configure CRS as well.
One would normally use a general purpose loadbalancer (HW or SW) to achieve your goals, which is a supported configuration.
Jon Purdy -
ASA 5505 - L2TP over IPsec - Remote Address shows outside interface address
Using an ASA 5505 for firewall and VPN. We've enabled L2TP over IPsec to allow Windows clients to connect without third party software.
The devices complete the connection and authenticate fine, but then are unable to hit any internal resources. Split tunneling seems to be working, as they can still hit outside resources. Packet tracer shows tcp flowing freely between VPN clients (192.168.102.0/24) and internal resources (192.168.100.0/24). Even the NAT translation looks good in packet tracer.
I pulled up the session details for one of the VPN clients in the ASDM and under the IPsecOverNatT details, it is showing the VPN client's remote address correctly, but displays the local address as the address assigned to the outside interface (which the client is using to connect.) This seems to be the problem, as viewing detailed connection logs shows the internal resources trying to send packets back to the outside interface rather than the VPN client's assigned internal addresses. Details:
Crypto map tag: SYSTEM_DEFAULT_CRYPTO_MAP, seq num: 65535, local addr: [OUTSIDE INTERFACE ADDRESS]
local ident (addr/mask/prot/port): ([OUTSIDE INTERFACE ADDRESS]/255.255.255.255/17/1701)
remote ident (addr/mask/prot/port): ([VPN CLIENT ADDRESS]/255.255.255.255/17/0)
current_peer: [VPN CLIENT ADDRESS], username: vpnuser
dynamic allocated peer ip: 192.168.102.1 [This is what I think it should be showing for local ident]
dynamic allocated peer ip(ipv6): 0.0.0.0
#pkts encaps: 16, #pkts encrypt: 16, #pkts digest: 16
#pkts decaps: 18, #pkts decrypt: 18, #pkts verify: 18
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 16, #pkts comp failed: 0, #pkts decomp failed: 0
#post-frag successes: 0, #post-frag failures: 0, #fragments created: 0
#PMTUs sent: 0, #PMTUs rcvd: 0, #decapsulated frgs needing reassembly: 0
#TFC rcvd: 0, #TFC sent: 0
#Valid ICMP Errors rcvd: 0, #Invalid ICMP Errors rcvd: 0
#pkts no sa (send): 0, #pkts invalid sa (rcv): 0
#pkts encaps failed (send): 0, #pkts decaps failed (rcv): 0
#pkts invalid prot (rcv): 0, #pkts verify failed: 0
#pkts invalid identity (rcv): 0, #pkts invalid len (rcv): 0
#pkts invalid pad (rcv): 0,
#pkts invalid ip version (rcv): 0,
#pkts replay rollover (send): 0, #pkts replay rollover (rcv): 0
#pkts replay failed (rcv): 0
#pkts min mtu frag failed (send): 0, #pkts bad frag offset (rcv): 0
#pkts internal err (send): 0, #pkts internal err (rcv): 0
local crypto endpt.: [OUTSIDE INTERFACE ADDRESS]/4500, remote crypto endpt.: [VPN CLIENT ADDRESS]/8248
path mtu 1500, ipsec overhead 82(52), media mtu 1500
PMTU time remaining (sec): 0, DF policy: copy-df
ICMP error validation: disabled, TFC packets: disabled
current outbound spi: 05BFAE20
current inbound spi : CF85B895
inbound esp sas:
spi: 0xCF85B895 (3481647253)
transform: esp-aes esp-sha-hmac no compression
in use settings ={RA, Transport, NAT-T-Encaps, IKEv1, }
slot: 0, conn_id: 77824, crypto-map: SYSTEM_DEFAULT_CRYPTO_MAP
sa timing: remaining key lifetime (kB/sec): (4373998/3591)
IV size: 16 bytes
replay detection support: Y
Anti replay bitmap:
0x00000000 0x000FFFFD
outbound esp sas:
spi: 0x05BFAE20 (96448032)
transform: esp-aes esp-sha-hmac no compression
in use settings ={RA, Transport, NAT-T-Encaps, IKEv1, }
slot: 0, conn_id: 77824, crypto-map: SYSTEM_DEFAULT_CRYPTO_MAP
sa timing: remaining key lifetime (kB/sec): (4373999/3591)
IV size: 16 bytes
replay detection support: Y
Anti replay bitmap:
0x00000000 0x00000001
Any ideas? The remote clients connect but when internal resources try to send traffic to the VPN clients, the packets are directed to the outside interface address instead of the local address assigned to the VPN client.I have what I believe to be a similar issue. Site to site vpn is working well. That is site b can ping and send traffic to site A but Site A can not. Site B is a 3rd party vpn router. Site A is a Cisco 5505.
It appears that when the crypto map inserts the route into the routing table it shows the route via the outside IP of the outside interface and not the IP of Site B. in the crypto map I can see the proper ip address for the peer. I can't figure out why when it inserts the route that it uses the wrong ip address -
How to extend an address of a BP with more fields ???? EEWB??
Hi Gurus,
I need to extend the address of a BP with some customer fields. I have tried to do it using EEWB but when you have to choose a Business Object for the new extension, the reasonable only possibility is to choose BUPA Object. Thus, the DB table BUT000 is extended with a custom include that contains the customer fields, but what I want to do is extending ADRC DB table. There is some way that I do not know of achieve this in which the system creates automatically all the FM for the BDT events????
If it is not possible, which would be the procedure to do that with my own development???
Thanks in Advance.
Regards,
RosaRosa, you can only extend table BUP000 and not the actual address table. Sorry for that for more details on how to extend the BP itself refer to my WeBLOG I wrote on this. Have fun and let me know whether you need more help, Tiest.
Also do not forget to award points to useful responses.
<a href="/people/tiest.vangool/blog/2005/07/24/pc-ui-and-easy-enhancement-workbench-eew-integration and Easy Enhancement Workbench (EEW) Integration</a> -
Can I check remote address connecting to a ServerSocket before accepting?
I have a ServerSocket for which I'd like to implement an IP filter, using an allow or deny list to control which IP addresses can connect. After accepting the connection, I check the remote address on the Socket that is created, and apply the filter. However, if I close the connection to a denied address, the client sees that the connection was accpeted, but then it throws a SocketException when it tries to write to it.
That accomplishes the purpose of the filter, but it doesn't seem like good behavior from the client's perspective. I'd like to implement a ServerSocket that doesn't even accept the connection if the remote address is not permitted. Is there any way to do that?Why not write a connection accepted/refused message
to the client and then carry on (or close the
socket/streams at both ends)?I'm not sure I understand your suggestion. When ServerSocket.accept() returns by providing a Socket object, that is the first time the server code can determine the IP address of the client and apply an IP filter. However, the connection has already been established at this point, so it's not possible to make an accept/refuse decision for the connection based on the client IP address. By the time the server code sees the IP address, the connection has already been accepted, and the only recourse is to close the connection from the server (by calling close() on the Socket object that was returned), and the client will then throw an exception with the message saying that the software closed the connection.
Legitimate users trying to connect may interpret this as a software problem, if they don't know any better. Intruders will discover from this behavior that the port is open through the firewall, and may conclude that IP filtering is being applied, and if they have some idea of what IP addresses are allowed, they could easily spoof them. Or they could keep trying, hoping to catch the server when the IP filtering is turned off.
It would be better to mimic the filtering behavior of a firewall, whereby the connection is not established. Then the client would report that it could not establish the connection, and the user would be more likely to look into whether the port is open or IP filtering is occurring, rather than thinking there is a software problem. And the intruder would conclude that the port is not open and go somewhere else.
I would need a different implementation of ServerSocket to do this. I checked jakarta commons net, but that only provides client side utilities. I'm currently untangling the source code of java.net.ServerSocket to see how difficult it will be to override the accept() method to provide filtering behavior. This seems like a useful thing, and I thought perhaps someone had already done so. Or perhaps someone can tell me why this is not a good idea.
Message was edited by:
MidnightJava
Maybe you are looking for
-
If I transfer my iTunes library to a new Mac, will my iPod's data be saved?
I'm purchasing a new Mac, but I use an iPod Touch with a different Mac. If I copy my current iTunes library to the new computer, what will happen when I plug my iPod in? I'm hoping that if I make a copy of the library, I won't have to completely rysn
-
How to create a table of figures
Can someone please tell me how do you create a table of figures in Pages? How about a Bibliography in APA format?
-
ABAP Rpt to PDF using CONVERT_ABAPSPOOLJOB_2_PDF issues in Batch
Hi, We just upgraded to 731 level 09. Our program using CONVERT_ABAPSPOOLJOB_2_PDF works in the foreground. The PDF contains the report, It does not work in the background. The program does capture the spool number, but the PDF created is empty. The
-
Accessing data from tables P2050, P2051 and P2052
Hello all, I am trying to access the data stored in P2050, P2051, and P2052. I cannot access this data directly. Is there a way to get this data through another tables?? Thanks SL
-
Why wont itunes activate my iphone 3gs it keeps saying no sim is installed????