Cache Invalidation
How/where do I need to invalidate the cache for the Access Manager when a user id is added to a uniqueMember attribute in the group?
With Access Manager 7.0, patch 5:
Here's the story:
I have a policy with a rule that blocks access to URLs that match "edit" and "create," accept for anyone in "Group 1." Accounts that are in "Group 1" are permitted.
When someone accesses the site and tries to access a URL that matches "edit" or "create" they are redirected to a CGI configured in the com.sun.am.policy.agents.accessDeniedURL property of the AMAgent.properties. The CGI collects the goto parameter, redirects to another CGI that will authenticate the browser. A brief form is submitted and from the HTTP_HEADER this CGI will insert the account in the "Group 1" in the Ldapv3 repository store necessary to make the edit.
The browser is redirected back to the page that initially prompted the redirect for the accessDeniedURL, except the browser is redirected back and receives an access denied because the cache in the agent or Access Manager still has the session cached and the account not in "Group 1."
I'm pretty sure the cache in the data store on the Access Manager server needs to be invalidated, but I have no idea where to start or how to do this. Can someone offer some assistance?
Some advice from Sun Support, there doesn't appear to be a way to do this. Logout/Login does work.
Similar Messages
-
WD Java RFC metadata cache invalidation without recycle JAVA
Since we are in a high availability production system, we cannot recycle or CE instance. There are times were the RFC metdata invalidation does not work and the only things that forces it is a recycle of the CE system.
This is contrary to what SAP has publicized, so is there a process in NWA or a single process (and NOT the server0 process) that we can refresh without stopping and starting the java engine.
Much like Visual Administration is there a single service we can stop and start to ensure the engine stays up and running and available?
Thanks
Weyland YutaniHi Weyland ,
did you check the guide ?
Metadata Cache Invalidation for Adaptive RFC Models
http://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/10465350-b4f5-2910-61ba-a58282b3b6df
There's a solution in this guide which explains how to proceed to avoid engine restart in case of ARFC.
(I don't know your engine release, but if it is >= 711, then you may welcome this guide as well:
Using an Adaptive RFC 2 Model in Web Dynpro Java
http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/50f7192d-2808-2d10-189b-df3fa5f71abf )
I hope this helps.
Best Regards,
Ervin -
How to install the metadata cache invalidation tool
Hi,
I have a problem in using JCO destinations for Adaptive RFC models.
I went through the below pdf and they mentioned metadata cahce invalidation tool and it is not installed in the portal
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/10465350-b4f5-2910-61ba-a58282b3b6df
please let me know how to install metadata cache invalidation tool
points will be rewarded for sure for the helpful answersI installed the Meta data cache invalidation tool using SDM and when i am trying to run that application from Content administrator it is throwing an exception
The currently executed application, or one of the components it depends on, has been compiled against class file versions that are different from the ones that are available at runtime.
If the exception message indicates, that the modified class is part of the Web Dynpro Runtime (package com.sap.tc.webdynpro.) then the running Web Dynpro Runtime is of a version that is not compatible with the Web Dynpro Designtime (Developer Studio or Component Build Server) which has been used to build + compile the application.*
Note: the above hints are only a guess. They are automatically derived from the exception that occurred and therefore can't be guaranteed to address the original problem in all cases.
please let me know how to resolve this issue
Points will be awarded for sure
Bala -
How to install metadata cache invalidation tool
Hi,
I have a problem in using JCO destinations for Adaptive RFC models.
I went through the below pdf and they mentioned metadata cahce invalidation tool and it is not installed in the portal
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/10465350-b4f5-2910-61ba-a58282b3b6df
please let me know how to install metadata cache invalidation tool
points will be rewarded for sure for the helpful answersThis tool is already installed on your system.
1) navigate to http://<hostname>:<port>/index.html
2) Click on "Webdynpro"
3) Click on "Web Dynpro Console"
3) Login as an Administrator (any user with admin priv's is ok).
4) Notice the last entry in the list -
Deployment: Metadata Cache Invalidation for Adaptive RFC Models
Dear SDN Member,
I have deployed the new "Cache Invalidation" Tool at our portal NW04s SPS12.
We have deployed the tool by using the sdm.
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/10465350-b4f5-2910-61ba-a58282b3b6df
The entrypoint is not visible in the webdynpro console navigation.
What have I done wrong?
Best regards,
Olaf ReissHello,
we also deployed it to our NW04s SPS12 Portal (since it was NOT included in SPS12)
We deplyoed the correct version. For us it is also not visible in the NWA.
However, it can be called from the Webdynpro console. Then you see it has this direct link.
http://<server>:<port>/webdynpro/dispatcher/local/InvalidationTool/Invalidation
However, the thing still has bugs.
Clicking the button "Get JCO destinations" just crashes with a 500 error (see below). Our developer said
<i>The initial exception that caused the request to fail, was:
java.lang.NoSuchFieldError: flush_cache
at com.sap.invalidation.InvalidationView.onActionGetSLDJCOs(InvalidationView.java:215)
at com.sap.invalidation.wdp.InternalInvalidationView.wdInvokeEventHandler(InternalInvalidationView.java:236)
at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)
at com.sap.tc.webdynpro.progmodel.controller.Action.fire(Action.java:67)
at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doHandleActionEvent(WindowPhaseModel.java:420)
... 26 more</i>
Using the lower part and option 2.
("Dictionaries Cache Invalidation" and "Enter Dictionary") is said to be working, if you exactly know the naming.
But how can we invalidate the RFC caches used by Visual Composer?
In Visual Admin/services/Connector Container/../SapFactory/Managed conenction factory/ConnectionDefintion I have already set the Connectionlifetime to 60 and ticked "expiraation" ?
Best regards
Ulf -
Metadata Cache Invalidation for Adaptive RFC Models
Hi,
Im trying the tutorial of the document: Metadata Cache Invalidation for Adaptive RFC Models.
Ive downloaded and deployed the EAR for NW7.0 on my server, but when I try to list the JCO destinations I have the following error:
java.lang.NoSuchFieldError: flush_cache
at com.sap.invalidation.InvalidationView.onActionGetSLDJCOs(InvalidationView.java:215)
When I try to invalidate a dictionary, I have the message:
Cache for Dictionary com.unilog.product.search.model.types.SearchProductModel invalidated
But the tooltip value is not updated in my application...
Can anyone give me some tips to use this component?
Thanks in advance.
Regards,
Clairehi friends
u see this weblogs&pdf,this is helpful for u
/people/bertram.ganz/blog/2007/01/08/the-top-12-hottest-sap-notes-every-web-dynpro-java-developer-must-know
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/f3f93ee7-0c01-0010-2593-d7c28b5377c2
Regards'
vino -
Is ServerSession Cache invalidated when we use raw SQL thru a UnitOfWork()
Is ServerSession Cache invalidated (for the relevant objects that are mapped to any of the tables used in raw sql) when we use raw update/insert/delete SQL thru executeQuery() on UnitofWork acquired from a clientSession ?
Or we need to do this ourselves by some procedure ?
If there is any documentation about this, could you please refer me towards it.
Thanks,
KrishnaSorry, don't know how that question was missed.
If you update data with SQL or stored procedures, then it's as if another application has updated the database and you must have a solid locking and refreshing policy in place. TopLink updates the cache after a UOW commit based on how you've manipulated the business model, not any adhoc updating SQL.
- Don -
How to trigger DSP cache invalidation and reload?
We have a scheduled job to update the database nightly. I used DSP caching to increase performance since the data only changes during the nightly updates.
Does anyone know how can I trigger the DSP cache invalidation and reload the updated data to DSP cache once the data loading is completed on the database server? (The database is hosted on a different server than DSP.)
Thanks in advance!
NavOn this page
http://e-docs.bea.com/aldsp/docs25/appdev/ejbclt.html
Bypassing the Data Cache When Using the Mediator API
Data retrieved by data service functions can be cached for quick access. This is known as a data caching. (See Configuring the Query Results Cache, in the DSP Administration Guide for details.) Assuming the data changes infrequently, it's likely that you'll want to use the cache capability.
You can bypass the data cache by passing the GET_CURRENT_DATA attribute within a function call, as shown in Listing 3-7. GET_CURRENT_DATA returns a Boolean value. As a by-product, the cache is also refreshed.
Listing 3-7 Cache Bypass Example When Using Mediator API
dataServices.customermanagement.CustomerProfile customerProfileDS =
customerDS=dataServices.customermanagement.CustomerProfile.getInstance(ctx,appName);RequestConfig
config = new
RequestConfig();attr.enableFeature(RequestConfig.GET_CURRENT_DATA);CustomerProfileDocument
customerProfileDoc customerPlofileDS.CustomerProfile(params,config); -
Cache Invalidation using Invalidation Rule -not working
Hi,
I am caching a JSP using servlet caching by specifying it in the cachespec.xml. I am setting a dependency id for the cache entry and have also set an invalidation rule saying if the dependency id comes as a parameter for "xyz" then invalidate the cache. The jsp is getting cached, and the value that I specify as dependency id is also appearing. But when i try to invalidate it by passing the parameter say "http://localhost/wps/myportal/dynacache?xyz=1234", the cache doesnt get invalidated.
Please suggest as what is the issue with this approach? Why is the cache invalidation not happening as per the rule set? Is there any other approach to invalidate it other than TTL? I understand invalidation-generator can only be used for web-service client cache.
Please reply ASAP..
This is my cache entry
<cache>
<cache-entry>
<class>servlet</class>
<name>/_caching/jsp/html/CachingPortletView.jsp</name>
<cache-id>
<component id="Cached" type="attribute">
<required>true</required>
</component>
<component id="locale" type="locale">
<required>false</required>
</component>
<component id="" ignore-value="true" type="pathinfo">
<required>false</required>
</component>
</cache-id>
<dependency-id>test
<component id="Cached" type="attribute">
<required>true</required>
</component>
</dependency-id>
<invalidation>test
<component id="Cached" type="parameter">
<required>true</required>
</component>
</invalidation>
</cache-entry>
</cache>
Regards,
SaribaThis sounds like an application server specific configuration, which is off-topic here. Try a forum devoted to your application server.
-
Database Change Notification and TopLink Cache Invalidation
Has someone succeeed in implementing the How-to Database Change Notification and TopLink Cache Invalidation.
I have corrected some document errata about the pl/sql content and I manage to have messages in the 'notify_queue'.
I obtain the Topic in Java from this queue.
But the TopicSuscriber instances do not receive any message. Is there something to have in mind to make it work ?
Regards.Reviving this thread again...
I am using DCN feature to build a middle-tier cache. I know oracle has problem sending physical rowid in case of 'Index Organized Table', however, in normal table also its not able to send proper rowid.
e.g, I have 2 records in Table A with rowid AAARIUAAGAAAV/uABw and AAARIUAAGAAAV/pAAX.
I have updated both the records. Strangely for the first record, oracle is sending INVALID rowid, although for the second record its sending the valid one.
Following is the output:
Row 1: (Wrong rowid being sent, AAARIUAAGAAAV/uABw is replaced with AAARIUAAGAAAXDCAAr)
Connection information : local=localhost.localdomain/127.0.0.1:47633, remote=localhost.localdomain/127.0.0.1:2278
Registration ID : 2102
Notification version : 1
Event type : OBJCHANGE
Database name : <sid>
Table Change Description (length=1)
operation=[UPDATE], tableName=<table_name>, objectNumber=70164
Row Change Description (length=1):
ROW: operation=UPDATE, ROWID=AAARIUAAGAAAXDCAAr
Row 2: (Right rowid being sent, AAARIUAAGAAAV/pAAX)
Connection information : local=localhost.localdomain/127.0.0.1:47633, remote=localhost.localdomain/127.0.0.1:2278
Registration ID : 2102
Notification version : 1
Event type : OBJCHANGE
Database name : <sid>
Table Change Description (length=1)
operation=[UPDATE], tableName=<table_name>, objectNumber=70164
Row Change Description (length=1):
ROW: operation=UPDATE, ROWID=AAARIUAAGAAAV/pAAX
Any idea ? -
Oracle9iAS Web Cache Invalidation?
Hi All,
Any body knows the default uid/pwd of Oracle9iAS Web Cache Invalidation running on port number 4001
regdsinvalidator:invalidator I think
-
Nobound exception on cache invalidation
Hi All,
I was trying to invalidate the catalog cache from program using following code and i am getting following error from the server
Caused by: java.rmi.NotBoundException: /atg/dynamo/service/GSAInvalidatorService
at sun.rmi.registry.RegistryImpl.lookup(RegistryImpl.java:106)
at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:386)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:359)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Naming.java:84)
the code which is doing the cache invalidation is as follows
GSAInvalidator invalidator = (GSAInvalidator)Naming.lookup(serviceName);
String itemDescName = getItemDescName();
if(StringUtils.isBlank(itemDescName) || "all".equalsIgnoreCase(itemDescName)){
itemDescName = null;
logInfo("service name to clear "+serviceName+" repo path "+getProductCatalogPath()+" item desc name "+itemDescName);
invalidator.invalidate(getProductCatalogPath(),itemDescName, null);
can you please help on thisgsaInvalidatorEnabled is true in /atg/dynamo/Configuration
and /atg/dynamo/server/RmiServer has following service registered rmi://servername.com:10360/atg/dynamo/service/GSAInvalidatorService
when i wrote a shell script and called the invalidator it worked fine
[GSAInvalidatorClient] Looking up rmi://ipaddress:20260/atg/dynamo/service/GSAInvalidatorService
[GSAInvalidatorClient] Calling invalidate(/atg/commerce/catalog/ProductCatalog, null, null)
[GSAInvalidatorClient] Done.
Thanks,
Tijomon Mathew
Edited by: 946140 on Dec 2, 2012 6:39 AM -
Hi,
Oracle version 11.2.0.1 on Linux
I understand thatt result cache (RC) invalidation is at table level.
I did a simple test:
create table customer (custno number, custname varchar2(30));
Table created.
insert into customer (custno,custname) values (1,'Customer_1');
insert INTO CUSTOMER (custno,custname) values (2,'Customer_X');
select * from customer;
CUSTNO CUSTNAME
1 Customer_1
2 Customer_X
commit;
Commit complete.Now I invoke result cache here
select /*+ RESULT_CACHE */ * FROM customer where custno=1;
Execution Plan
Plan hash value: 2844954298
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 30 | 3 (0)| 00:00:01 |
| 1 | RESULT CACHE | ggb2vz6jcvcn5ajzqh406j3n85 | | | | |
|* 2 | TABLE ACCESS FULL| CUSTOMER | 1 | 30 | 3 (0)| 00:00:01 |
Predicate Information (identified by operation id):
2 - filter("CUSTNO"=1)
Result Cache Information (identified by operation id):
1 - column-count=2; dependencies=(SCRATCHPAD.CUSTOMER); name="select /*+ RESULT_CACHE */ * FROM customer where custno=1"Invoke RC for second row query
select /*+ RESULT_CACHE */ * FROM customer where custno=2;
Execution Plan
Plan hash value: 2844954298
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 30 | 3 (0)| 00:00:01 |
| 1 | RESULT CACHE | fc8t6svvz6whh0gc8vcaxrh668 | | | | |
|* 2 | TABLE ACCESS FULL| CUSTOMER | 1 | 30 | 3 (0)| 00:00:01 |
Predicate Information (identified by operation id):
2 - filter("CUSTNO"=2)
Result Cache Information (identified by operation id):
1 - column-count=2; dependencies=(SCRATCHPAD.CUSTOMER); name="select /*+ RESULT_CACHE */ * FROM customer where custno=2"OK they are stored as separate result cache
Now update the second row in that table in another session
update customer set custname ='Customer_2' where custno=2;
1 row updated.
commit;
Commit complete.Now query custno=2 from the first session
select /*+ RESULT_CACHE */ * FROM customer where custno=2;
Execution Plan
Plan hash value: 2844954298
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 30 | 3 (0)| 00:00:01 |
| 1 | RESULT CACHE | fc8t6svvz6whh0gc8vcaxrh668 | | | | |
|* 2 | TABLE ACCESS FULL| CUSTOMER | 1 | 30 | 3 (0)| 00:00:01 |
Predicate Information (identified by operation id):
2 - filter("CUSTNO"=2)
Result Cache Information (identified by operation id):
1 - column-count=2; dependencies=(SCRATCHPAD.CUSTOMER); name="select /*+ RESULT_CACHE */ * FROM customer where custno=2"The same result cache reference is still there. So does this mean that result cache is NOT invalidated despite the row being updated or I am doing something wrong here?
Thanks
Edited by: 902986 on 12-Feb-2012 13:26The result cache id is a hash value for the query so that Oracle can later tell if a query will produce a result set that is already in the cache.
When you updated the table the result set in the cache was marked invalid. Then you ran the same query for record 2 and Oracle created a hash value for the query and the hash value is the same as the first time since the query is the same; that is, the query itself hashes to the same value. But the result cache contents for that query have changed and replace the old invalid contents.
If you query the result set cache you will get the new value not the old one since the old result set for your second query isn't there anymore. -
Should the publisher of a cache invalidation receive it's own?
Hi,
The way TopLink classes are coded TopLink send via JMS a command "MergeChangeSetCommand" to apply changes done to objects or invalidate them from the cache.
But the command is also received by the publisher/sender. So it seems it's a mistake because it's extra communication and in the case of invalidation will invalidate cache that is already up-to-date.
Source code of JMSTopicTransportManager.java is provided with TopLink, extract from the class:
// create a Subscriber
TopicConnection topicConnection = connectionFactory.createTopicConnection();
TopicSession topicSession = topicConnection.createTopicSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
TopicSubscriber subscriber = topicSession.createSubscriber(topic);
Extract from: http://java.sun.com/j2ee/1.4/docs/api/javax/jms/TopicSession.html#createSubscriber(javax.jms.Topic,%20java.lang.String,%20boolean)
The API to use is the following but not the one used:
createSubscriber(Topic topic, String messageSelector, boolean noLocal)<h#> tags are block tags already - you don't need to
make them so.
And your content looks exactly right in DW8 - I'm not sure I
see the
problem.
Murray --- ICQ 71997575
Adobe Community Expert
(If you *MUST* email me, don't LAUGH when you do so!)
==================
http://www.dreamweavermx-templates.com
- Template Triage!
http://www.projectseven.com/go
- DW FAQs, Tutorials & Resources
http://www.dwfaq.com - DW FAQs,
Tutorials & Resources
http://www.macromedia.com/support/search/
- Macromedia (MM) Technotes
==================
"synterx" <[email protected]> wrote in
message
news:e9oqt1$a7n$[email protected]..
> Harder to explain than show you.
http://www.graphikjam.com/temple
is the
> site.
> Right on the home page, you'll see in the middle, right
colum where What's
> New
> is located. In the old days, I'd simply use tables
inside tables to list
> several what's new paragraphs with photos. But I'm
trying not to do that.
>
> So, the top What's New headline is a h1, and I set that
as "block". In
> DW8,
> there is a box around it to indicate it's being treated
as a block. I was
> under
> the impression nothing wraps when it's a block.
>
> My problem is I wanted to do another headline, called
Special Offers. But,
> since I have that small photo there, but not enough text
to the right of
> it,
> the new Special Offers headline is up under the text.
Should I just make a
> 2-column table for each heading/photo/text area I want
and do it that way?
>
> Or, is there some CSS setting that automatically kicks
things down?
> -
Hi,
I'm new to TopLink (10.1.3) and I'm a bit puzzled as to how I'll solve my problem. We are currently loadind resources from the database into memory, about the same way as a ResourceBundle. However, I've set a DailyInvalidationPolicy for the cache and I'm trying to find a way to track an event upon expiry. Is there an Event I can use for a Listener implementation that would reload all my objects into memory from the BD? I've seen events like postRefresh and other events in DescriptorEventAdapter and SessionEventAdapter, but nothing seems to be appropriate. Thanks a lot in advance for any reply...Hello,
The DailyInvalidationPolicy mechanism does not actively invalidate objects. Instead when an object is requested TopLink checks the read date and determines if the object is invalid and requires refreshing. As such the only event available to mark this operation would be a postRefresh event.
--Gordon
Maybe you are looking for
-
Hi ALL Currently I am doing a scenario in which i m encrypting the incoming xml payload(field by field) in java mapping and then decrypting it with in the adapter module.Now problem that i m facing is that after encryption if i get some special chara
-
Drop shadow on eps shape produces fine line when inserted into InDesign and PDF created.
Hi I am having a few issues with an eps file that I have created. Basically it is a eps file with shapes, a gradient and a drop shadow on the outlined text - created in illustrator. All looks fine until I take it into Indesign and create a pdf. I the
-
Transfering apps and the data on them from an itouch to an iphone
How can i transfer the data from apps to the new iphone i got from my ipod touch.
-
Indesign CS5.5 - find Registration colour blank space
Hi, I am trying to find spaces in my document which for some reason were coloured registration (0%). I thought I could do a find and replace and use the object tab but it doesn't seem to work? Anyone know if its possible to goto certain colours (like
-
FTP - Issue "Invalid FTP handle"
Hi, I have a problem during the FTP process from SAP to another server. When I run the program in GUI mode mannually the file is getting written on the 3rd party server but when I schedule the program the FTP is getting failed with the error message