WebLogic调用上的SOAP原子事务无法找到事务协调器

时间:2018-01-11 09:46:12

标签: java web-services soap weblogic transactional

简介
我试图在原子事务中测试WebCenter Content SOAP Services(GenericSOAP)的行为 已安装的产品(来自Oracle页面上的可用安装版本:12.2.1.3.0):

  • WebLogic
  • WebCenter Content

SOAP客户端是部署在WebLogic上的简单Web应用程序,包括:

  • html页面,只有一个调用servlet的链接
  • 调用服务类的servlet
  • 带有SOAP客户端的服务类

问题的简短描述
在原子事务中调用GenericSOAP时出现错误:

Error while invoking endpoint http://<host>:7001/wls-wsat/RegistrationPortTypeRPC from client

注意:<host&gt;是主机的实际IP地址,我只是将其替换为单词<host&gt;手动在上面和下面的日志中。

更多详情
安装WebLogic和WebCenter Content之后,使用Enterprise Manager I修改了GenericSOAP Web服务上的策略:

  • 删除了“oracle / wsmtom_policy”
  • 添加了“oracle / no_mtom_policy”(作为匿名用户的SOAP调用工作)
  • 为简单的身份验证测试添加了“oracle / wss_username_token_service_policy”(作为用户工作的SOAP调用)
  • 为原子事务添加了“oracle / atomic_transaction_policy”(SOAP调用依赖于客户端配置)

如果我在没有任何修改的情况下进行SOAP调用以启用事务性调用(用于测试“oracle / wss_username_token_service_policy”的相同调用),则SOAP调用有效。
如果我使用以下注释将客户端注册为事务性

@weblogic.wsee.wstx.wsat.Transactional(
   version = weblogic.wsee.wstx.wsat.Transactional.Version.DEFAULT,
   value = weblogic.wsee.wstx.wsat.Transactional.TransactionFlowType.SUPPORTS
)

SOAP调用不起作用,我在这个问题的开头就得到了错误 通过删除上面的注释,SOAP调用再次起作用。通过添加它,SOAP调用不起作用。

在记录SOAP请求/响应时,在请求中有CoordinationContext,其中包含上述地址。

UCM_server1-diagnostic.log的日志是:

[UCM_server1] [NOTIFICATION] [] [oracle.wsm.security.policy.scenario.util.ScenarioUtils] [tid: [ACTIVE].ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: e2b32686-5fe2-49d6-bdb4-1238c80399ad-00004c16,0:2] [APP: Oracle UCM Web Services] [partition-name: DOMAIN] [tenant-name: GLOBAL] [J2EE_APP.name: Oracle UCM Web Services] [J2EE_MODULE.name: idcws.war] [WEBSERVICE.name: GenericSoapService] [WEBSERVICE_PORT.name: GenericSoapPort] [oracle.wsm.policy.name: oracle/wss_username_token_service_policy] User name from authenticated subject: ranko

[UCM_server1] [ERROR] [] [] [tid: [ACTIVE].ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: e2b32686-5fe2-49d6-bdb4-1238c80399ad-00004c16,0:2] [APP: Oracle UCM Web Services] [partition-name: DOMAIN] [tenant-name: GLOBAL] [J2EE_APP.name: Oracle UCM Web Services] [J2EE_MODULE.name: idcws.war] [WEBSERVICE.name: GenericSoapService] [WEBSERVICE_PORT.name: GenericSoapPort] Error while invoking endpoint http://<host>:7001/wls-wsat/RegistrationPortTypeRPC from client; ServiceName: {http://schemas.xmlsoap.org/ws/2004/10/wscoor}RegistrationService_V10 ; PortName: {http://schemas.xmlsoap.org/ws/2004/10/wscoor}RegistrationCoordinatorPortTypePort ; Client side features: [weblogic.jws.jaxws.client.ClientIdentityFeature][com.sun.xml.ws.developer.MemberSubmissionAddressingFeature][com.sun.xml.ws.api.addressing.OneWayFeature]; Client side policies: 

[UCM_server1] [ERROR] [] [oracle.webservices.service] [tid: [ACTIVE].ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: e2b32686-5fe2-49d6-bdb4-1238c80399ad-00004c16,0:2] [APP: Oracle UCM Web Services] [partition-name: DOMAIN] [tenant-name: GLOBAL] An error occurred for port: {urn:GenericSoap}GenericSoapPort: oracle.fabric.common.PolicyEnforcementException: The server sent HTTP status code 404: Not Found.

为了使通话变得尽可能简单,我打电话给“DOC_INFO_BY_NAME”,因为它只需要一个参数,可以作为匿名用户执行。

来自其他研究:

  • 当它尝试使用事务协调器
  • 注册服务时,它似乎失败了
  • 没有必要安装SOA以使ws-xt工作,WebLogic就足够了
  • 可以配置WebLogic Console协调器的JTA部分中的
  • ,但只有部分,如果我想保护交换的消息。我不需要进行测试。从我所看到的,没有“启用/禁用”协调器,端口号等
  • 如文档(通过WebLogic控制台)中所述,为事务配置SOAP端点不起作用。 GenericSOAP服务/端点不会在那里公开/可见。
  • 企业管理器中GenericSOAP端点的配置具有以下值(开箱即用):
    • 原子交易流程选项:支持
    • 原子交易版:默认

它看起来像一个“简单的情况”,其中协调器不工作,应该打开/安装,但是,从我设法找到的,它应该可用/在“普通”WebLogic上开箱即用。

感谢您的时间和亲切的问候,
兰子

0 个答案:

没有答案
相关问题