[heading]问题描述[/heading]

Oracle WebCenter Portal 12C创建新Portal时,走完创建向导,门户创建完成,然后报错。

[highlight dark=”no”]Create Portal

Portal creation completed with errors.
createSpaceError[/highlight]

[heading]解决过程[/heading]

这算是最近折腾WCP比较坑的一个问题,花费了大量的时间与精力解决这个问题。开始时在Oracle Support找答案,发现在WCP 12C早期版本是有这样一个不能创建Portal的bugs,于是下载了所有能找到的系统补丁,用Opatch一一打上去,但是不能创建Portal的问题依旧;

只能回到原点,仔细去看Portal Server的Log。因为我们的门户是自己写的Portal Extension,看见有些Bean有报错,于是把矛头对准了自己的工程代码,好不容易把代码调得完全没有报错,发布到系统上无法创建Portal(在这里不得不吐槽一把O记,11g的Portal Framework方式没有了,现在改写portal只能用extension方式,程序的调试那可叫一个费时间,哥们有一半的工作时间是浪费在等待中)。

看来也不是代码的问题,又乖乖的回去一行行的看Log。还是最后无意在想到,在公司的环境里用Weblogic内置的ldap是没这个问题的,而客户的环境是配置了外部的LDAP做用户身份验证就不能创建门户了,看来问题的症结还是用户权限设置。重新配置了门户的权限设置,最后终于能成功创建门户了。

新部署的WebCenter Portal服务器,写了Portal Extension后发布到服务器,门户不能正常运行。找到问题修正后门户能访问,但是发现WebCenter Portal不断抛出一个[highlight dark=”no”]java.lang.IllegalArgumentException: URI scheme is not “file”[/highlight]的错误,并记录到日志文件。

[heading]问题描述[/heading]

WebCenter Portal不断在日志生成级别为[Warning]的URI scheme is not “file”错误,完整消息如下:

[2016-09-23T11:56:53.293+08:00] [WC_Portal] [WARNING] [] [org.eclipse.persistence.jaxb.BeanValidationHelper] [tid: [ACTIVE].ExecuteThread: ’21’ for queue: ‘weblogic.kernel.Default (self-tuning)’] [userId: weblogic] [ecid: 74e955f6-ec4b-4aa5-8713-c12464770bc1-000002c8,0] [APP: webcenter] [partition-name: DOMAIN] [tenant-name: GLOBAL] [DSID: 0000LTL6BfOFw000jzwkno1Nt9jz000003] Error parsing validation.xml the async way[[
java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: URI scheme is not “file”
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.eclipse.persistence.jaxb.BeanValidationHelper.getConstraintsMap(BeanValidationHelper.java:139)
at org.eclipse.persistence.jaxb.BeanValidationHelper.isConstrained(BeanValidationHelper.java:120)
at org.eclipse.persistence.jaxb.JAXBBeanValidator.isConstrainedObject(JAXBBeanValidator.java:255)
at org.eclipse.persistence.jaxb.JAXBBeanValidator.shouldValidate(JAXBBeanValidator.java:206)
at org.eclipse.persistence.jaxb.JAXBMarshaller.validateAndTransformIfNeeded(JAXBMarshaller.java:587)
at org.eclipse.persistence.jaxb.JAXBMarshaller.marshal(JAXBMarshaller.java:481)
at org.glassfish.jersey.jaxb.internal.AbstractRootElementJaxbProvider.writeTo(AbstractRootElementJaxbProvider.java:201)
at org.glassfish.jersey.jaxb.internal.AbstractRootElementJaxbProvider.writeTo(AbstractRootElementJaxbProvider.java:180)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:265)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:250)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:106)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:86)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
at weblogic.jaxrs.server.internal.ChunkedOutputWriter.aroundWriteTo(ChunkedOutputWriter.java:65)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1130)
at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:683)
at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:424)
at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:414)
at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:312)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:292)
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:460)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:386)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:334)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:286)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:260)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:137)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:350)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at oracle.webcenter.content.integration.servlets.ContentServletFilter.doFilter(ContentServletFilter.java:168)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at oracle.webcenter.jaxrs.services.portal.controller.swagger.SwaggerApiOriginFilter.doFilter(SwaggerApiOriginFilter.java:44)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at oracle.adf.share.http.ServletADFFilter.doFilter(ServletADFFilter.java:77)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at oracle.webcenter.portal.context.impl.PortalRequestServletFilter$1.call(PortalRequestServletFilter.java:53)
at oracle.webcenter.portal.context.impl.PortalRequestServletFilter$1.call(PortalRequestServletFilter.java:48)
at oracle.webcenter.portal.context.impl.PortalRequestExecutorImpl.execute(PortalRequestExecutorImpl.java:47)
at oracle.webcenter.portal.context.impl.PortalRequestServletFilter.doFilter(PortalRequestServletFilter.java:47)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:141)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:649)
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:124)
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:232)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:94)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:141)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:649)
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:124)
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:232)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:94)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:224)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:141)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:649)
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:124)
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:232)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:94)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:32)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3654)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3620)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:326)
at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:196)
at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2423)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2280)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2258)
at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1626)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1586)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:270)
at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:617)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:397)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)
Caused by: java.lang.IllegalArgumentException: URI scheme is not “file”
at java.io.File.<init>(File.java:421)
at org.eclipse.persistence.jaxb.ValidationXMLReader.parseValidationXML(ValidationXMLReader.java:147)
at org.eclipse.persistence.jaxb.ValidationXMLReader.call(ValidationXMLReader.java:67)
at org.eclipse.persistence.jaxb.ValidationXMLReader.call(ValidationXMLReader.java:1)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

[heading]原因[/heading]

一开始以为是自己代码的问题,从头到尾Debug了N遍找问题,但是一发布到WebCenter Portal,问题依旧。这令人不得不怀疑是WebCenter Portal的问题了。Google了一把,发现原来是产品的一个bug,据说O记会在下一个版本修复。

[heading]解决方法[/heading]

虽说这个问题不影响使用,但是做为非典型的强迫症患者,看着这样的消息连写代码都受影响。不能完全解决只能把这个报错信息关掉了。

打开WebCenter Portal所在的服务器EM,找到Portal服务器,选择Log Configuration,在Log Level选项卡下找BeanValidationHelper,把Logging Level从[highlight dark=”no”]WARNING[/highlight]改为[highlight dark=”no”]SEVERE[/highlight],保存更改,这下终于天下太平了。

loglevel

坑爹的O记。

当想把WebCenter Space扩展程序发布至WebCenter Portal 12c时出现这个错误。

[highlight dark=”no”][Deployer:149140]The task cannot be processed further until the current edit session is activated.[/highlight]

 

space-error

 

[heading]原因[/heading]

The user is the current owner of the domain configuration edit lock.

[heading]解决方法[/heading]

Activate (or cancel) the edit session. The user can exit the deployer tool without affecting the task.

说成人话就是重启管理服务器或者在开发机器上把Default Domain删除了再重建即可解决。

 

继续试用WCC 12c,比起11g,WCC 12c最大的改进当属是采用了全新的Alta UI,当然了,其它的一些功能就只有慢慢试了。

和WCS一样,安装的前提是JDK 8,Oracle Database 12c,Weblogic Server 12c,具体的安装步骤可以参考这篇文章安装Oracle WebCenter Sites 12c (part 1) ,RCU的设置及安装可参考安装Oracle WebCenter Sites 12c (part 2) 。这篇文章从安装WCC开始。

[highlight dark=”no”]1. 安装WCC软件[/highlight]

1.1 启动安装向导

输入命令,[highlight dark=”no”]”c:\Program Files\Java\jdk1.8.0_65\bin\java.exe”[/highlight] -jar fmw_12.2.1.0.0_wccontent_generic.jar启动安装向导。

wcc1

 

wcc2

1.2 自动更新

跳过,点Next.

wcc3

 

1.3 安装位置

选择Oracle Home位置,Next

wcc4

1.4 先决条件检查

检查成功后,Next

wcc5

1.5 安装汇总

点Install,开始安装WCC软件。

wcc6

安装进行中

wcc7

1.6 完成WCC软件安装

wcc8

[highlight dark=”no”]2. 配置WCC域[/highlight]

2.1 运行RCU创建所需的数据库表空间

wcc9

 

wcc10

wcc11

2.2 创建域

转至 ORACLE_HOME/oracle_common/common/bin目录下,运行config.cmd,启动WCC应用域创建向导。

创建新Domain

wcc12

选择域模板

wcc13

Domain模式和JDK

wcc14

数据源

wcc15

数据库配置

[highlight dark=”no”]输入信息后点Get RCU Configuration[/highlight]

wcc16

 

wcc17

 

wcc18

 

Credentials

wcc19

配置管理服务器

wcc20

 

wcc21

 

wcc22

 

wcc23

 

wcc24

 

wcc25

wcc26

 

wcc27

 

完成域配置及安装

wcc28

 

wcc29

wcc30

 

wcc31

2.3 启动管理服务器

利用命令startNodeManager.cmd和startWeblogic.cmd启动Node Manager和Admin Server,通过地址http://localhost:7001/console登入控制台。

wcc32

启动UCM_Server1

wcc33

确认管理服务器已处于Running状态。

wcc34

2.4 访问WCC服务器,完成初始化配置

访问地址http://localhost:16200/cs,登录WCC,完成初始化设定

wcc35

 

wcc36

 

wcc37

 

重新启动服务器,即可正常使用WCC了。

wcc38

 

wcc39

如果要使用Alta UI,必须启动WCCADF_server1,通过地址http://localhost:16225/wcc,即可体验New UI。

wcc40

 

wcc41

 

 

 

 

 

继续本系统文章的最后一篇,配置并运行Oracle WebCenter Sites.

[highlight dark=”no”]6. 配置Oracle WebCenter Sites[/highlight]

6.1 启动管理服务器

运行Oracle Home目录下的user_projects\domains\wc_domain\startWeblogic.cmd,启动管理服务器。

wcs63

6.2 启动Node Manager

运行Oracle Home目录下的user_projects\domains\wc_domain\startNodeManager.cmd,启动Node Manager,成功启动后显示[highlight dark=”no”]<Nov 3, 2015 8:42:22 PM PST> <INFO> <Secure socket listener started on port 5556, host localhost/127.0.0.1>[/highlight]等字眼。

wcs64

6.3 为OPSS授权

运行Oracle Home目录下的user_projects\domains\wc_domain\wcsites\bin\grant-opss-permission.bat,输入管理账户名及密码,进行OPSS授权。

wcs65

6.4 创建共享文件夹

创建名为sitesData的共享文件夹供Sites使用。

wcs66

6.5 启动sites管理服务器

访问地址http://localhost:7001/console,输入用户名及密码,登入Admin Server.

wcs67

Environment–>Servers,转到Control面板,选择wcsites_server1,点Start,启动Sites管理服务器。

wcs68

确认wcsites_server1的状态变为Running.

wcs69

6.6 进行WebCenter Sites初始化配置

访问地址[highlight dark=”no”]http://localhost:8001/sites/sitesconfigsetup[/highlight],点Begin开始进入Sites初始化设置。

wcs70

指定共享目录路径

把路径设置为之前创建的共享目录路径,点Next

wcs71

JNDI数据源

接受默认名称点Next

wcs72

Web应用参数

输入主机名与端口,点Next

wcs73

CAS部署信息

确认信息后点Next

wcs74

WebCenter Sites Administrator Accounts

输入WebCenter Sites管理员的账号与密码信息,点Next

wcs75

Sample Sites

选择所需的示例站点,Next.

wcs76

配置汇总

在配置汇总页面点Test, 确认所有配置信息正确,点Start开始处理。

wcs77

完成配置

等待WebCenter Sites配置完成,显示成功画面。

wcs78

[highlight dark=”no”]7. 测试Oracle WebCenter Sites[/highlight]

7.1 重新启动wcsites_server1

停止重新启动wcsites_server1.

wcs68

7.2 访问WebCenter Sites

访问地址http://localhost:8001/sites,显示sites登录页面,用 fwadmin/xceladmin或者firstsite/firstsite登录系统。

wcs79

选择站点及喜欢的界面,进入系统。

wcs80

 

至此,完成了Oracle WebCenter Sites的安装及初始化配置。吐槽一把可恶的IE,居然无法正常显示Sites的界面,只好重新装个FF来测试。

 

 

 

 

 

 

[highlight dark=”no”]4. 运行RCU,创建数据库[/highlight]

RCU是FMW 12c系列与之前版本最大的区别,在新的版本中,RCU已集成在Oracle Fusion Middleware Infrastructure中,所以只需安装Oracle Fusion Middleware Infrastructure,就可以开始配置FMW应用所需的数据库。

在Oracle Home的oracle_common\bin目录下,运行rcu.bat,开始创建WebCenter Sites所需的表空间。

4.1 运行RCU,开始创建向导

wcs30

4.2 创建Repository

选择Create Repository–>System Load and Product Load, 点Next.

wcs31

4.3 数据库连接信息

输入Oracle数据库的连接信息,点击Next.

wcs32

wcs33

[highlight dark=”no”]注意如果使用XE的话,数据库检查会报错,只要点击忽略就可以继续。[/highlight]

4.4 选择安装组件

勾选WebCenter Sites,其它所需组件会自动先上,确认后点击Next.

wcs34

通过先决条件检查后点OK确认。

wcs35

4.5 设置Schema的密码

输入并确认Schema的密码后点Next.

wcs36

4.6 表空间信息确认并创建表空间

确认表空间信息无误,点击Next.

wcs37

检查后点击OK。

wcs38

开始创建不存在的表空间,完成后点OK,再点Next。

wcs39

4.7 RCU汇总并创建所需的表

确认信息无误后点Create,创建WebCenter Sites所需的表。

wcs40

开始创建所需的组件。

wcs41

4.8 完成RCU安装

完成RCU安装,点Close.

wcs42

[highlight dark=”no”]5. 创建Oracle WebCenter Sites域[/highlight]

5.1 运行config.cmd,开始域创建向导

运行Oracle Home目录下的oracle_common\common\bin\config.cmd。

wcs43

选择创建新Domain,Next.

wcs44

5.2 选择域使用的模板

选择Oracle WebCenter Sites with Examples, Oracle WebCenter Sites – Visitor Services, Oracle Enterprise Manager,点Next.

wcs45

5.3 应用位置

点Next.

wcs46

5.4 设置域管理员账号密码

输入域管理员的账号密码,点Next.

wcs47

5.5 Domain模式和JDK

选择所需模式及JDK后点Next.

wcs48

5.6 数据库连接配置

输入数据库密码后点击Get RCU Configuration,测试数据库连接没问题后点Next.

wcs49

5.7 组件数据源连接设置

输入组件数据源的数据库连接信息,点击Next。

wcs50

5.8 JDBC测试

JDBC测试成功后点Next.

wcs51

5.9 Advanced Configuration

Advanced Configuration选择Administration Server, Node Manager和Managed Servers, Clusters and Coherence.

wcs52

Administration Server

默认7001端口,Next.

wcs53

Node Manager

选择Node Manager的类型,输入Node Manager的用户名及密码。

wcs54

Managed Servers

设定管理服务器的名称及端口,点Next.

wcs55

Clusters

直接Next

wcs56

Coherence Clusters

直接Next

wcs57

5.10 Machines

输入主机名,点Next.

wcs58

5.11 指定管理服务器给主机

为所有的管理服务器指定给上一步设定的主机名,点Next

wcs59

5.12 配置汇总

直接点Create,开始Domain创建。

wcs60

5.13 进行Domain创建

完成配置后点Next

wcs61

5.14 完成域配置

点击Finish,完成Domain的创建及配置。

wcs62

 

至此,我们完成了Oracle WebCenter Sites所需Domain及Managed Server的创建,下一步是进一步配置并真正把WebCenter Sites运行起来。

[highlight dark=”no”]未完待续,To be continued……[/highlight]

 

有个客户很羡慕传说中WebCenter Site的功能,准备在一项目在使用这产品。为了能评估工作量加上不被各色人等忽悠,只能自己装一次评估。在eDelivery上下载了安装程序,真坑爹,一点都不象以前O记的产品,居然安装说明的文档都没有。在Weblogic上安装,以手工部署的方式很顺利就完成了应用的安装,但在升级到7.6时就卡住了,测试时出现以下错误:

HelloCS has failed.
Ping DB has failed.
DB Permissions has failed. 

在服务器启动时报Caused By: java.lang.IllegalAccessError: tried to access field
org.slf4j.impl.StaticLoggerBinder.SINGLETON from class

org.slf4j.LoggerFactory

 的错。折腾了老半天,鬼就出在slf4j-api-1.5.8.jar和slf4j-jdk14-1.5.8.jar两个文件上,干掉后继续安装成功。

两天的试用,觉得O记要完全实现Fatwire与Webcenter Content整合明显需要一段时间。拿这玩意来做外网应用的还是值得探讨的。

比较赞同这篇文章上的话:http://shishank.info/pcm/wordpress/2011/11/10/oracle-web-centre-fatwire-is-it-an-old-generation-cms/
Not so good

  • Some of the basic changes within the implementation requires quite a lot of work. A good example is vanity URLs. Most of the clients now a days have this basic requirement especially around blobs but there is none out of the box URL assembler available
  • Deployment is one of the most painful area. Even with CSDT, which is just the recent addition to product, there are many area’s which it lacks. The basic use cases are not covered by CSDT
  • With CS 761, there are headless installs which is welcome change through if you are upgrading to CS 761 from version below CS 75 there is no other way apart from GUI based installers
  • Product customisation is one of the pain area’s. There is no concept of extending the existing elements into your project elements and apply changes. Which means each time you run an upgrade, there is an activity to reapply all the changes again which makes upgrades sooo much error prone and time consuming
  • CS Engage, for providing personalised content, has never been an easy product to work with and get your head around it
  • There are number of modules on top of core content server but its been utilised scarcely across the globe and tough to find a single case study when in need
  • Rollbacks are still is old 90′s fashion way of taking file system and database dump and restoring them back. Cold dumps needs to be taken to get an exact snapshot of the system at that point in time
  • Lots of documentation is there but they cover basic information and for anything beyond basic changes require folow-up on yahoo groups or through support
  • Support centre has not been supportive. It sometimes feel, just to meet their SLA’s, there are responses which doesn’t even relate back to the actual query
  • etc. etc.

最近几天为客户搭建一个POC环境,客户使用微软Active Directory进行用户管理,希望实现UCM、WebCenter与AD的集成。下面是实现步骤:
1.配置Weblogic Server与AD集成
1)通过http://host:7001/console登录Weblogic Server管理控制台;
2)选择安全领域,选择myrealm,点击“提供程序”选择卡;
3)点击“新建”,新建验证提供程序,提供程序类型选择“ ActiveDirectoryAuthenticator”,控制标记选择“SUFFICIENT”;
4)设定提供程序,依据AD实际结构设定提供程序
Host:
Port: 389           (default)
Principal: CN=Administrator,CN=Users,DC=company,DC=com
Credential:
SS Enabled: 不选(默认)
User Base DN: OU=Ucm,DC=company,DC=com
All Users filter: 空 (默认)
User from Name Filter: (&(cn=%u)(objectclass=user))    (默认)
User search scope: onelevel (按实际情况选择onelevel或subtree)
User name attribute: cn (默认)
User object class: user (默认)
Use retrieved User Name as Principal: not-checked  (默认)
Group Base DN: OU=Roles,OU=Ucm,DC=company,DC=com
All groups filter:    (默认)
Group from name filter: (&(cn=%g)(objectclass=group))    (默认)
Group search scope: subtree (默认)
Group membership searching: unlimited (默认)
Max Group membership search level: 0 (默认)
Ignore duplicate membership: not-checked (默认)
Use token groups for group membership lookup: not-checked   (leave not-checked, unless you experience slow performance and/or double-lookups to AD from WLS) (default is not checked)
Static group name attribute: cn (默认)
Static group object class: group (默认)
Static member DN attribute: member (默认)
Static Group DNs from Member DN filter: (&(member=%M)(objectclass=group))   (default)
Dynamic groups: All entries (默认)
General: left all as default except Connection retry limit: 5
Keep alives enabled: checked
Cache enabled: un-checked (for testing, so there is no cache. You may want caching for a Production install)



保存设定。
5)把myrealm的DefaultAuthenticator的控制标记设置为“SUFFICIENT”,把提供程序重新排序把AD的验证提供程序放至第一位;
6)重启Weblogic Server,在管理控制台应该的用户和组可以看到AD中的用户与组。完成Weblogic Server上AD的配置。

 2.UCM与AD集成的设置
1)完成WLS上AD的设定后,应该可以利用AD的用户登录到UCM;
2)AD上的组对应到UCM的Roles,在UCM上进行相应的角色授权就可完成;如需使用UCM的Account进行细粒度的权限控制,可以AD组名前加“@”符号实现。

3. WebCenter与AD集成
1)修改C:\Oracle\Middleware\user_projects\domains\uaes_domain\config\fmwconfig下的jps-config.xml文件,增加以下内容:
 
       
           
           
       
       
       
 注意value根据AD的实际情况进行调整。
2)重启WebCenter Space,试验是否可能用AD用户登录系统。

4.注意事项
1)设置提供程序的时候注意AD的结构;

2)调整jps-config.xml文件时注意value值,这是关系能否正常登录的关键,如果使用账号value用“sAMAccountName”

3)如果你还使用WebCenter与UCM集成,注意Documents Services是否正确配置。