2012-01-31 17 views
1

私はCXFフレームワークを使用してJAX-RS Webサービスを開発しましたが、私はJboss6にデプロイしました。私は私のHTMLページから、次のURL http://localhost:8080/UPCServiceLayer/services/upcLineOfBusiness/createを使用してアプリケーションにアクセスしようとしますが 私はCXF-RS throwing一致するリクエストパス/作成が見つかりません

No operation matching request path /create is found,

次のサーバーコンソールで次のエラーを取得しています(唯一のPOSTメソッドを使用して)私のcxf.xmlある

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" 
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jaxrs="http://cxf.apache.org/jaxrs" 
    xsi:schemaLocation=" 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd 
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd 
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd 
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"> 
    <import resource="classpath:META-INF/cxf/cxf.xml" /> 
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> 
    <import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml"/> 
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> 
    <import resource="classpath:../upc-spring-dao.xml" /> 
    <jaxrs:server id="upcLineOfBusinessRestServiceServer" address="/upcLineOfBusiness"> 
     <jaxrs:serviceBeans> 
      <ref bean="upcLineOfBusinessRestService" /> 
     </jaxrs:serviceBeans> 
    </jaxrs:server> 
    <bean id="upcLineOfBusinessRestService" 
     class="com.tecnotree.upc.services.restservices.impl.UpcLineOfBusinessRestServiceImpl"> 
     <property name="upcLineOfBusinessDao"> 
      <ref bean="upcLineOfBusinessDao" /> 
     </property> 
     <property name="upcUserDao"> 
      <ref bean="upcUserDao" /> 
     </property> 
    </bean> 
</beans> 

次は

@Path("/") 
public classUpcLineOfBusinessRestService { 
    @POST 
    @ConsumeMime("application/xml") 
    @ProduceMime("application/xml") 
    @Path("/create") 
    public UpcLineOfBusinessEntity createUpcLineOfBusinessEntity(
      UpcLineOfBusinessEntity upcLineOfBusinessEntity) 
      throws GenericUpcException 

私のリソースクラスであり、私はまた私のweb.xmlファイルにCXFサーブレットを宣言しました。

<servlet> 
      <servlet-name>CXFServlet</servlet-name> 
      <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> 
      <load-on-startup>1</load-on-startup> 
     </servlet> 
     <servlet-mapping> 
      <servlet-name>CXFServlet</servlet-name> 
      <url-pattern>/services/*</url-pattern> 
     </servlet-mapping> 

この4行は、私にはOKを見てくれ

答えて

1

私は、そこに@ProduceMime@ConsumeMimeという注釈があることに多少驚いています。現在のスタイルでは代わりに@Produces@Consumesを使用します(JAX-RS標準から)。これは重要です。なぜなら、CXFはメソッドのマッチングプロセスの一環としてコンテンツタイプの注釈を使用しています。これにより、内容が一致しなくなり、エラーメッセージが混乱する可能性があります。

(また、サーバーに「application/xml」と投稿していますか?間違っていて、一致しないエラーもあります。サーバーのログのレベルを上げて、この問題を追跡するのに役立ちますが、デフォルトでは無効にすることはできません。非常にです。

+1

ありがとうございました。私が@ProduceMimeを使用している理由は、Jboss6がcxf2.3.1にバンドルされているからです。このバージョンでは、jsr311-api-0.8-1.3.0.jarのみを使用できます。このjarファイルは、MIMEタイプの古いクラスのみを持ちます。どのようにデータをapplication/xmlとして投稿するのですか?そのHTMLページのコンテンツタイプをapplication/xmlとして設定する必要がありますか?ここで私はデータを投稿するためにプレーンHTMLフォームを使用しています。 – Dilip

+0

当面は、Consumes注釈値をapplication/x-www-form-urlencodedに変更しました。その後、私はHTMLフォームのPOSTメソッドを使用してリソースを呼び出そうとしていますが、新しい例外が発生しています。要求クラスのメッセージボディリーダーが見つかりません:UpcLineOfBusinessEntity、ContentType:application/x-www-form-urlencoded。 Googleに基づいて、CXFでJAXBを設定する必要があることを理解しています。そこで、次の行をcxf.xmlに追加しました...... – Dilip

+0

\t \t <プロパティ名=" marshallerProperties」REF = "propertiesMap" /> \t \t \t \t <エントリーキー= "jaxb.formatted.output"> \t \t \t <値タイプ= "はjava.lang.Boolean">真 \t \t \tしかし、私は同じ例外を取得しています。助けてください – Dilip

0

を助けてください:

<url-pattern>/services/*</url-pattern> 

<jaxrs:server id="upcLineOfBusinessRestServiceServer" address="/upcLineOfBusiness"> 

@Path("/") 

@Path("/create") 

彼らは/services/upcLineOfBusiness/createと一致している必要がありTogehter。

+0

ありがとうございました。 WADLファイルhttp:// localhost:8080/UPCServiceLayer/services/upcLineOfBusiness?_wadl&_type = xmlを開こうとすると、次の15:36:55,206 WARN [org.apache.cxf.jaxrs.utils.JAXRSUtils]例外が発生します。 ContentType:*/*、Accept:text/html、application/xhtml + xml、application/xml; q = 0.9、*/*; q = 0.8、。 15:36:55,231 WARN [org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper] WebApplicationExceptionがキャッチされました:原因がありません – Dilip

関連する問題