WebLogic Portal VCR与JSR-170存储库的IllegalMonitorStateException连接(WebLogic Portal VCR IllegalMonitorStateException connection to JSR-170 Repository)

我们最近从WebLogic Portal 9.2.3升级到10.3.5。 我们有一个通过Day Software JSR-170 VCR-JCR提供商连接的JackRabbit存储库。 这在9.2.3上完全正常,但在10.3.5我们尝试检索内容时会得到IllegalMonitorStateException。 我们在JackRabbit之上有自己的外观,它实现了JCR-170。 以下是来自服务器的调试:

[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.initializeSessionState():1215] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2b70161: (re)initializing all repo sessions for username: <WLS Kernel>
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.initializeSessionState():1215] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2bf2311: (re)initializing all repo sessions for username: <WLS Kernel>
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.initializeSessionState():1215] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2fa5952: (re)initializing all repo sessions for username: <anonymous>
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.ensureConnectedToRepository():801] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2fa5952: no session found for repoName=indhold; need to connect
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.ensureConnectedToRepository():821] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2fa5952: connect write lock acquired for repoName=indhold
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.connectToRepository():875] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2fa5952: connecting to repositoryName= indhold
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.getRepositoryClass():1503] invoking Class.forName(repoClassName)
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.getRepository():1403] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2fa5952: Ticket authentication error for: indhold java.lang.IllegalMonitorStateException
at java.util.concurrent.locks.ReentrantReadWriteLock$Sync.tryReleaseShared(ReentrantReadWriteLock.java:363)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.releaseShared(AbstractQueuedSynchronizer.java:1317)
at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock(ReentrantReadWriteLock.java:745)
at com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.getRepositoryClass(RepositoryManagerDelegate.java:1537)
at com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.getRepository(RepositoryManagerDelegate.java:1327)
at com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.connectToRepository(RepositoryManagerDelegate.java:893)
at com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.ensureConnectedToRepository(RepositoryManagerDelegate.java:832)
at com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.connect(RepositoryManagerDelegate.java:1160)
at com.bea.content.federated.internal.delegate.RepositoryHelper.checkCapability(RepositoryHelper.java:759)
at com.bea.content.federated.internal.CapabilityManagerImpl.checkRepositoryCapability(CapabilityManagerImpl.java:57)
at com.bea.content.federated.internal.ManagerImplCapabilityHelper.checkCapability(ManagerImplCapabilityHelper.java:80)
at com.bea.content.federated.internal.ManagerImplCapabilityHelper.verifyCapability(ManagerImplCapabilityHelper.java:54)
at com.bea.content.federated.internal.NodeManagerImpl.getNode(NodeManagerImpl.java:432)
at dk.skat.portal.front.helper.ContentHelper.getNode(ContentHelper.java:1591)

似乎authenticationn失败了,但是如果我尝试在存储库中的登录方法中设置一个断点(我们的Facade,它不会执行任何身份验证挑战,只是包装JackRabbit,并且登录同一个用户 - “默认“ - 对于所有访问权限,我们永远不会被调用。 在“管理存储库”页面上设置用户名和密码似乎没有任何效果。 另一方面,如果我转到Portal管理控制台,并尝试管理或浏览存储库,一切正常,实际调用登录方法,服务器可以很好地连接到存储库。 这看起来很奇怪。 在cetain案例中(碰巧是随机发生的,我们可以让服务器突然进入存储库,但是在重新启动服务器时,它又会再次失败)。

我试图将存储库的用户名/密码设置为weblogic用户,但这似乎没有任何影响,我仍然得到错误。 此外,当我进入PAC并注销,关闭浏览器,重新打开浏览器或完全不同的浏览器时,PAC的输入似乎激活存储库以使其联机(尽管这不稳定或不需要)。

请指教,如果WebLogic中存在错误(似乎它试图解锁()ReadLock太多次,导致提到的异常 - 如果它在该异常上完全失败??,是否应该在之前检查锁定计数解锁?),或者如果你做错了什么? 我可以读到10.0.5的eclipse工具中存在一个关于这个错误的已知错误。

此外,我们在9.2.3中似乎没有任何问题,10.3.5中有什么变化?


We have recently upgraded from WebLogic Portal 9.2.3 to 10.3.5. We have a JackRabbit repository connected through the Day Software JSR-170 VCR-JCR provider. This has all worked perfectly fine on 9.2.3, but on 10.3.5 we are getting a IllegalMonitorStateException when we try to retrieve content. We have out own facade on top of JackRabbit, that implements the JCR-170. Here is the debug out from the server:

[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.initializeSessionState():1215] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2b70161: (re)initializing all repo sessions for username: <WLS Kernel>
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.initializeSessionState():1215] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2bf2311: (re)initializing all repo sessions for username: <WLS Kernel>
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.initializeSessionState():1215] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2fa5952: (re)initializing all repo sessions for username: <anonymous>
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.ensureConnectedToRepository():801] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2fa5952: no session found for repoName=indhold; need to connect
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.ensureConnectedToRepository():821] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2fa5952: connect write lock acquired for repoName=indhold
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.connectToRepository():875] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2fa5952: connecting to repositoryName= indhold
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.getRepositoryClass():1503] invoking Class.forName(repoClassName)
[com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.getRepository():1403] com.bea.content.federated.internal.delegate.RepositoryManagerDelegate@2fa5952: Ticket authentication error for: indhold java.lang.IllegalMonitorStateException
at java.util.concurrent.locks.ReentrantReadWriteLock$Sync.tryReleaseShared(ReentrantReadWriteLock.java:363)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.releaseShared(AbstractQueuedSynchronizer.java:1317)
at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock(ReentrantReadWriteLock.java:745)
at com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.getRepositoryClass(RepositoryManagerDelegate.java:1537)
at com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.getRepository(RepositoryManagerDelegate.java:1327)
at com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.connectToRepository(RepositoryManagerDelegate.java:893)
at com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.ensureConnectedToRepository(RepositoryManagerDelegate.java:832)
at com.bea.content.federated.internal.delegate.RepositoryManagerDelegate.connect(RepositoryManagerDelegate.java:1160)
at com.bea.content.federated.internal.delegate.RepositoryHelper.checkCapability(RepositoryHelper.java:759)
at com.bea.content.federated.internal.CapabilityManagerImpl.checkRepositoryCapability(CapabilityManagerImpl.java:57)
at com.bea.content.federated.internal.ManagerImplCapabilityHelper.checkCapability(ManagerImplCapabilityHelper.java:80)
at com.bea.content.federated.internal.ManagerImplCapabilityHelper.verifyCapability(ManagerImplCapabilityHelper.java:54)
at com.bea.content.federated.internal.NodeManagerImpl.getNode(NodeManagerImpl.java:432)
at dk.skat.portal.front.helper.ContentHelper.getNode(ContentHelper.java:1591)

It seems that authenticationn fails, but if I try to set a break-point in the login methods in the repository (our Facade, which doesn't do any authentication challenge, but just wraps JackRabbit, and logs in the same user - "default" - for all access), we are never getting called. Setting the username and password on the Manage Repositories page, doesn't seem to have any effect. If I on the other hand go to Portal Administration Console, and try to manage or browse the repository, everything works fine, and the login methods are actually called, and the server connects fine to the repository. This seems very strange. In cetain cases (that happens to happen randomly, we can get the server to all of a sudden get to the repository, but on restart of the server, it is again back to failing).

I've tried to set username/password for the repository to the weblogic user, but that doesn't seem to have any effect, I still get the error. Furthermore when I've been into the PAC, and logs out, closes the browser, reopen the browser or a completely different browser, the entering of PAC seems to activate the repository to become online (though this is not stable or desired).

Please advice, if there is a bug in WebLogic (it seems it tries to unlock() the ReadLock too many times, resulting in the mentioned exception - should it at all fail on that exception??, Should the lock-count be checked before unlocking?), or if w are doing anything wrong? I can read that there is a known bug in the eclipse tooling for 10.3.5 about exactly this error.

Furthermore, we didn't seem to have any trouble in 9.2.3, what changed in 10.3.5?


原文:https://stackoverflow.com/questions/12847573
2023-10-29 20:10

满意答案

我这样做:

In [184]: ['a','b','c'] + df.apply(lambda x: pd.factorize(x)[0]).astype(str)
Out[184]:
  col1 col2 col3
0   a0   b0   c0
1   a1   b1   c1
2   a2   b2   c2
3   a0   b0   c0
4   a2   b2   c1

更通用的方法:

import string

c = list(string.ascii_lowercase)[:len(df.columns)]
df1 = c + df.apply(lambda x: pd.factorize(x)[0]).astype(str)
df1
  col1 col2 col3
0   a0   b0   c0
1   a1   b1   c1
2   a2   b2   c2
3   a0   b0   c0
4   a2   b2   c1

I'd do it this way:

In [184]: ['a','b','c'] + df.apply(lambda x: pd.factorize(x)[0]).astype(str)
Out[184]:
  col1 col2 col3
0   a0   b0   c0
1   a1   b1   c1
2   a2   b2   c2
3   a0   b0   c0
4   a2   b2   c1

a bit more generic approach:

import string

c = list(string.ascii_lowercase)[:len(df.columns)]
df1 = c + df.apply(lambda x: pd.factorize(x)[0]).astype(str)
df1
  col1 col2 col3
0   a0   b0   c0
1   a1   b1   c1
2   a2   b2   c2
3   a0   b0   c0
4   a2   b2   c1

相关问答

更多

如何使用Pandas数据帧中的列值替换单元格中的索引值(How to replace indices values in a cell with the column value in a Pandas dataframe)

使用replace Serie : df = df.replace(df['id']) #or convert to dict (first solution) #df = df.replace(df['id'].to_dict()) print (df) id neighborl neighbor2 neighbor3 0 u1 u1 u4 u3 1 u2 u2 u3 u2 2 u3 u...

在Pandas数据框中查找唯一的值,而不管行或列的位置(Find unique values in a Pandas dataframe, irrespective of row or column location)

In [1]: df = DataFrame(np.random.randint(0,10,size=100).reshape(10,10)) In [2]: df Out[2]: 0 1 2 3 4 5 6 7 8 9 0 2 2 3 2 6 1 9 9 3 3 1 1 2 5 8 5 2 5 0 6 3 2 0 7 0 7 5 5 9 1 0 3 3 5 3 2 3 7 6 8 3 8 ...

使用Pandas替换数据帧列中的特定值(Replace specific values in a dataframe column using Pandas)

这种“查找和替换”的干净语法使用了一个字典,as df.Num_of_employees = df.Num_of_employees.replace({"10-Jan": "1-10", "Nov-50": "11-50"}) A clean syntax for this kind of "find and replace" uses a dict, as df.Num_of_employee...

将DataFrame列中的唯一值替换为其count [duplicate](Replace the unique values in a DataFrame column with their count [duplicate])

按value_counts创建的Series使用map : df['Label'] = df['Label'].map(df['Label'].value_counts()) print (df) Label 0 5 1 3 2 5 3 5 4 3 5 5 6 2 7 2 8 5 9 3 另一种transform + size解决方案: df['Label'] = df.groupby('L...

计算跨多个列的pandas数据帧中唯一值的出现(Count occurance of unique values in a pandas dataframe across multiple columns)

让我们使用pd.get_dummies和groupby : (df1.assign(**pd.get_dummies(df1) .pipe(lambda x: x.groupby(x.columns.str[2:], axis=1) .sum()))) 输出: a b c great hello world 0 hello world None 0 1 1...

为pandas数据帧的每个id替换列中序列的缺失值(Replace missing values of a sequence in a column for each id of pandas dataframe)

使用pd.MultiIndex.from_product : idx = pd.MultiIndex.from_product([df.id.unique(), np.arange(5)], names=['id', 'day']) out = (df.set_index(['id', 'day']) .reindex(idx).reset_index() ) 然后只需用您想要的填充值替换NaN 。 out.value = [d if isinstance(d, list) e...

替换数据框中特定列中的唯一值(Replace unique values in specific columns in a dataframe)

我认为需要: print (df) col1 col2 col3 0 Aba xxx jjj 1 Aba bhh jjj 2 ccc kkk jjj 3 Aba xxx yyy 4 ccc kkk jjj #check column for number of unique values m = df.nunique() < 3 print (m) col1 True col2 False col3 True dtype: bool im...

替换pandas多索引数据框中的列值(Replace column values in pandas multiindexed dataframe)

你使用了错误的符号。 尝试 data.ix['bar','c1'] = -999 索引的第一个元素引用行,第二个元素引用列。 查看文档 。 You used the wrong notation. Try data.ix['bar','c1'] = -999 The first element of the index refers to rows, and the second to columns. See the Docs.

Pandas:用唯一值替换多个列值(Pandas: Replace multiple column values by unique value)

替代替换,我们可以使用value_counts.head(2) , where通过映射value_counts获取mask并使用notnull() x = df['obj_col1'].value_counts().head(2) #B 2 #A 2 #Name: obj_col1, dtype: int64 df['obj_col1'].where(df['obj_col1'].map(x).notnull(),'Oth') 输出: 0 A 1 A 2 ...

Pandas数据帧替换列中的唯一值(Pandas dataframe replace unique values in a column)

我这样做: In [184]: ['a','b','c'] + df.apply(lambda x: pd.factorize(x)[0]).astype(str) Out[184]: col1 col2 col3 0 a0 b0 c0 1 a1 b1 c1 2 a2 b2 c2 3 a0 b0 c0 4 a2 b2 c1 更通用的方法: import string c = list(string.ascii_lowercase)...

相关文章

更多

weblogic启动server错误

我的weblogic启动时时报server错误,如下: &lt;2011-11-23 下午03时56分 ...

weblogic与websphere的区别

如题!性能方面的比较,以及架构方面的比较,以及各个方面的比较?

TUXEDO与WEBLOGIC通过WTC进行互连的配置

BEA公司的TUXEDO,WEBLOGIC作为最优秀的中间件产品,在银行、电信、金融等行业广泛使用,通 ...

session 传递的问题(在 tomcat和weblogic之间)

前提: ServerA 服务器用来作登录服务器,布署在weblogic下,读取所有用户信息 Ser ...

myEclipse8.5 New DataBase Connection Driver时出错

大侠看看,菜鸟求教。 这个密码指的是什么密码? 我把可能的秘密输出后有弹出这样的框, 问题补充 ...

There is already an open DataReader associated with this Connection which must be closed first

使用MVC4 EF Linq获取foreach列表循环的时候遇到了如下的问题:报错提示 Ther ...

Hadoop master connection reset by peer resolution

一次分布式程序运行下来,发现执行到最后的时候出错造成了 job异常退出,然后重新启动namenode是 ...

Spring四种注解(@Component、@Repository、@Service、@Controller)的区别-java cms开发五

看一下领悟书生的代码,在spring的类注解上有Component,Service等,既然是重构,必须 ...

The connection to adb is down, and a severe error has occured.

启动android模拟器时.有时会报The connection to adb is down, an ...

最新问答

更多

您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)

将diff文件复制到存储库的根目录,然后执行以下操作: git apply yourcoworkers.diff 有关apply命令的更多信息, apply 见其手册页 。 顺便说一下:一个更好的方法是通过文件交换整个提交文件是发送者上的命令git format-patch ,然后在接收器上加上git am ,因为它也传送作者信息和提交信息。 如果修补程序应用程序失败,并且生成diff的提交实际上在您的备份中,则可以使用尝试在更改中合并的apply程序的-3选项。 它还适用于Unix管道,如下

将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)

尝试将第二行更改为snprintf(buf1, sizeof buf1, "%.2f", balance1); 。 另外,为什么要声明用该特定表达式分配缓冲区的存储量? EDIT @LưuVĩnhPhúc在下面的评论中提到我的原始答案中的格式说明符将舍入而不是截断,因此根据如何在不使用C舍入的情况下截断小数,您可以执行以下操作: float balance = 200.56866; int tmp = balance1 * 100; float balance1 = tmp / 100.0; c

OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)

这是简单的解决方案 在你需要写的控制器中 BackendMenu::setContext('Archetypics.Team', 'website', 'team'); 请参阅https://octobercms.com/docs/backend/controllers-views-ajax#navigation-context BackendMenu::setContext('Author.Plugin name', 'Menu code', 'Sub menu code'); 你需要在r

页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)

每当发出请求时ASP都会创建一个新的Page对象,并且一旦它将响应发送回用户就不会保留对该Page对象的引用,因此只要你找不到某种方法来保持生命自己引用该Page对象后,一旦发送响应, Page和只能通过该页面访问的所有对象才有资格进行垃圾回收。 ASP creates a new Page object whenever a request is made, and it does not hold onto the reference to that Page object once it

codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)

要在生产服务器中调试这个,你可以临时放 error_reporting(E_ALL); 并查看有哪些其他错误阻止正确的重定向。 您还应该检查生产服务器发送的响应标头。 它是否具有“缓存”,是否需要重新验证标头等 to debug this in production server, you can temporary put error_reporting(E_ALL); and see what other errors are there that prevents the proper

在计算机拍照在哪里进入

打开娥的电脑.在下面找到视频设备点击进去就可以了...

使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)

你是对的。 第一次输入后,换行符将保留在输入缓冲区中。 第一次读取后尝试插入: cin.ignore(); // to ignore the newline character 或者更好的是: //discards all input in the standard input stream up to and including the first newline. cin.ignore(numeric_limits::max(), '\n'); 您必须为#inc

No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)

for (int k = 0; k > 10; k++) { System.out.println(k); } k不大于10,所以循环将永远不会执行。 我想要什么是k<10 ,不是吗? for (int k = 0; k < 10; k++) { System.out.println(k); } for (int k = 0; k > 10; k++) { System.out.println(k); } k is not greater than 10, so loop

单页应用程序:页面重新加载(Single Page Application: page reload)

优点是不注销会避免惹恼用户,以至于他们会想要杀死你:-)。 说真的,如果每次刷新页面时应用程序都会将我注销(或者在新选项卡中打开一个链接),我再也不会使用该应用程序了。 好吧,不要这样做。 确保身份验证令牌存储在刷新后的某个位置,即不在某些JS变量中,而是存储在cookie或本地存储中。 The advantage is that not logging off will avoid pissing off your users so much that they'll want to kill

在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)

EXECUTE IMMEDIATE 'SELECT '||field_val_temp ||' FROM tableb WHERE function_id = :func_val AND rec_key = :rec_key' INTO field_val USING 'STDCUSAC' , yu.rec_key; 和, EXECUTE IMMEDIATE 'UPDATE tablec SET field_val_'||i||' = :field_val' USI