2012-10-23 59 views
2

我有使用Spring + ApacheCXF開發的Web服務,我需要將它們部署在JBoss AS7上。 正在通過CXFServlet正確部署它們。如何在JBoss AS 7中禁用掃描@WebService註釋?

但JBoss AS7也通過掃描@WebService註釋來部署它們(正如預期的那樣,沒有使用Spring Injection)。

如何在JBoss AS 7中禁用掃描@WebService註釋? PS:我正在部署爲.war文件。

PS PS: 我目前的cxf web服務正在正確部署。但JBoss AS7也試圖掃描@WebService類並部署它們(沒有依賴注入)。我正在尋找一種方法來轉換JBossAS7的@WebService類的掃描。

回答

1

我在我的應用程序上下文XML文件中使用exclude-filter從Spring組件掃描中排除Web服務組件。

<context:component-scan base-package="your.application.base.package"> 
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> 
    <context:exclude-filter type="annotation" expression="javax.jws.WebService" /> 
</context:component-scan> 

同時我將它們包含在CXF上下文XML中的組件掃描中。

+0

我想讓Spring/CXF掃描它們......希望JBossAS7忽略@WebService。 –

+0

您應該在我們的應用程序中至少有2個上下文XML,如果您使用自己的上下文來設置調度程序servlet,則應該有3個上下文XML。我所建議的是爲包含WebService組件的CXFServlet上下文編寫組件掃描,並在排除它們的應用程序上下文中編寫組件掃描。 – hoaz

2

我相信你會想從你standalone.xml刪除此

<extension module="org.jboss.as.webservices"/> 

<subsystem xmlns="urn:jboss:domain:webservices:1.1"> 
    <modify-wsdl-address>true</modify-wsdl-address> 
    <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host> 
    <endpoint-config name="Standard-Endpoint-Config"/> 
    <endpoint-config name="Recording-Endpoint-Config"> 
     <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM"> 
     <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/> 
     </pre-handler-chain> 
    </endpoint-config> 
</subsystem> 

這是我做過什麼刪除JBoss的web服務,所以我可以使用別的東西。我仍然處於測試階段,但不再部署這些服務。我假設我將只能使用spring來部署。希望這可以幫助。

0

我使用的是JBoss EAP 6.1,我解決了除子系統jaxrs和webservices之外的同樣的問題。

JBoss的部署,structure.xml

<?xml version="1.0"?> 

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> 
     <deployment> 
      <exclude-subsystems> 
       <subsystem name="jaxrs" /> 
       <subsystem name="webservices" /> 
      </exclude-subsystems> 
      <exclusions> 
       <module name="javaee.api" /> 
       <module name="org.apache.log4j" /> 
      </exclusions> 
      <dependencies> 
       <module meta-inf="export" name="com.liferay.portal"> 
        <imports> 
          <include path="META-INF" /> 
        </imports> 
       </module> 
       <module name="javax.mail.api" /> 
       <module name="org.jboss.modules" /> 
      </dependencies> 
     </deployment> 
</jboss-deployment-structure> 
2

這適用對於JBoss 6爲好。我在我的Jboss 6.2.2上試了一下。 評論中standalone.xml

<!-- <extension module="org.jboss.as.webservices"/> -->

以下然後註釋以下代碼段在同standalone.xml。請注意,如果您使用的是不同的配置文件名稱或域模式,則必須在類似的位置執行此操作。

<!-- 
    <subsystem xmlns="urn:jboss:domain:webservices:1.2"> 
     <modify-wsdl-address>true</modify-wsdl-address> 
     <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host> 
     <endpoint-config name="Standard-Endpoint-Config"/> 
     <endpoint-config name="Recording-Endpoint-Config"> 
      <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM"> 
       <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/> 
      </pre-handler-chain> 
     </endpoint-config> 
     <client-config name="Standard-Client-Config"/> 
    </subsystem> 
    -->