当前位置: 首页 > 知识库问答 >
问题:

无法激活CXF ResponseTimeFeature

郑俊美
2023-03-14

我在Tomcat服务器中使用CXF公开了一个Web服务。我想在JMX中公开一些性能信息,比如由ResponseTimeFeature提出的那些信息。

我的cxf-beans.xml文件如下:

<cxf:bus bus="cxf" id="MyBus">
  <cxf:properties>
    <entry key="bus.jmx.enabled" value="true" />
  </cxf:properties>
</cxf:bus>

<bean id="CounterRepository" class="org.apache.cxf.management.counters.CounterRepository">
  <property name="bus" ref="cxf" />
</bean>

<jaxws:endpoint id="analyserEndpoint" implementor="#analyserImpl" address="/analyser">
  <jaxws:features>
    <bean class="org.apache.cxf.management.interceptor.ResponseTimeFeature" />
  </jaxws:features>
</jaxws:endpoint>

这与CXF JMX页面中的解释非常相似。

问题是,当我在[默认地址(service: jmx: rmi:///jndi/rmi://localhost:9913/jmxrmi)]使用j控制台连接时,我看不到任何性能MBean。我里面有MyBus和服务的管理信息。但没有关于响应时间的信息(即使在对服务进行SOAP-UI负载测试之后)。

我在web应用启动时记录了以下错误:

2012-09-10 15:13:19,692 ERROR org.apache.cxf.management.jmx.InstrumentationManagerImpl - Could not start JMX connector server : java.io.IOException: Cannot bind to URL [rmi://localhost:9913/jmxrmi]: javax.naming.NameAlreadyBoundException: jmxrmi [Root exception is java.rmi.AlreadyBoundException: jmxrmi]

有人知道如何解决这个问题吗?

提前感谢。

共有1个答案

施华奥
2023-03-14

我终于找到了一个“解决方案”(实际上这只是一个变通方法)。

<cxf:bus bus="MyBus" id="MyBus" name="MyBus">
  <cxf:properties>
    <entry key="bus.jmx.enabled" value="true" />
    <entry key="bus.jmx.persistentBusId" value="MyBus" />
    <entry key="bus.jmx.usePlatformMBeanServer" value="true" />
    <entry key="bus.jmx.createMBServerConnectorFactory" value="false" />
  </cxf:properties>
</cxf:bus>

<bean id="CounterRepository" class="org.apache.cxf.management.counters.CounterRepository">
  <property name="bus" ref="MyBus" />
</bean>

<jaxws:endpoint id="analyserEndpoint" implementor="#analyserImpl" address="/analyser">
  <jaxws:features>
    <bean class="org.apache.cxf.management.interceptor.ResponseTimeFeature" />
  </jaxws:features>
</jaxws:endpoint>

在JMX控制台的最后,我可以看到以下层次结构。

org.apache.cxf
  Bus
    MyBus
      Operations
        shutdown
      Notifications
  Performance.Counter.Server
    cxf+random_number
      "WebServiceServiceNameAsAQName"
        "WebServicePortName"
          Attributes
            NumInvocations
            AvgResponseTime
            MaxResponseTime
            MinResponseTime
            NumCheckedApplicationFaults
            NumLogicalRuntimeFaults
            NumRuntimeFaults
            NumUnCheckedApplicationFaults
            TotalHandlingTime
          Operations
            reset
          "WebServiceMethodName"
            Attributes (same as above, per method)
            Operations
              reset

我说的是解决方法,因为我丢失了CXF WebServices MBean上通常可用的一些属性(例如state),而且计数器的总线名称不是我设置的名称。

 类似资料:
  • 问题内容: 因此,我不断在多个服务器上收到此烦人的错误(它是一个警告,因此我将忽略它,但我需要该功能) 警告:curl_setopt()[function.curl- setopt]:启用safe_mode或在第56行的/home/xxx/public_html/xxx.php中设置了open_basedir时,无法激活CURLOPT_FOLLOWLOCATION 我将如何通过SSH解决此问题?

  • 问题内容: 所以,我正在尝试以编程方式创建一个SceneView 但我收到此错误消息: 由于未捕获的异常“ NSGenericException”而终止应用程序,原因:“无法激活具有锚点的约束,并且它们没有共同的祖先。约束或其锚点是否引用了不同视图层次结构中的项目?那是非法的。 这是部分发生的。如何为该元素添加约束? 问题答案: dan是正确的,您需要先添加为子视图,然后才能锚定它。尝试这样的事情

  • 问题内容: 我在项目周围创建了一个virtualenv,但是当我尝试激活它时却无法。它可能只是语法或文件夹位置,但是我现在很困惑。 您可以在下面看到,我创建了virtualenv并将其称为venv。一切看起来不错,然后我尝试通过运行来激活它 我在想它可能只与我的系统路径有关,但不确定将其指向什么(我确实知道如何编辑路径)。我在python 7 / Windows操作系统上,虚拟环境2.2.x 问题

  • 不熟悉在虚拟环境中运行Python,会弄乱Django,无法激活虚拟环境。 在过去的4个小时里,试图在本地终端/VS代码上激活虚拟环境(venv),但运气不佳。 避免了“sudo pip install virtualenv”,因为我试图避免以root用户身份安装和使用不同的目录路径等。 使用缓存的virtualenv-20.0.31-py2.py3-none-any.whl(4.9 MB)收集v

  • 我收到一个错误。当我在谷歌上搜索时,我得到了一些结果,但它们都是针对Android编程的。我使用Windows,Java1.8和Selenium自动测试。 错误 我的原始代码(我没有写,但正在调试,并已工作): 我得到的错误是“没有这样的窗口”。所以我想我可能需要等到窗口数量稳定下来,所以我在点击后和执行windows操作之前添加了以下内容: 正是在这一点上,它进行切换,我得到了 正如我之前提到的

  • 当实例的试用期结束时,Navicat Monitor 需要令牌以继续监控该实例。令牌可以作为永久许可证或订阅购买。若要管理你的令牌并许可你的实例,请前往“配置”->“激活令牌密钥和许可实例”。 【注意】永久许可证和订阅方案不能在同一个 Navicat Monitor 上使用。在更改激活方法之前,你需要取消激活令牌密钥或退出你的 Navicat ID。 永久许可证 如果你购买了永久许可证,你将收到一