2012-12-18 2 views
1

새로운 웹 서비스를 개발 중입니다. 하지만 웹 서비스를 jboss로 배포 할 수있는 가장 좋은 방법은 7로 파악할 수 없습니다.jboss에서 cxf 웹 서비스를 7로 구성

jboss 설명서에 따라 web.xml이 나와 있습니다. JBoss의 문서로서 당

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    version="2.5"> 

<servlet> 
    <servlet-name>testService</servlet-name> 
    <servlet-class>com.sgb.testService.ws.web.TestService</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>testService</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

, 또한 CXF 스프링 모든 구성하는 보스-cxf.xml 필요하다.

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:cxf="http://cxf.apache.org/core" 
xmlns:jaxws="http://cxf.apache.org/jaxws" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:wsa="http://cxf.apache.org/ws/addressing" 
xmlns:http="http://cxf.apache.org/transports/http/configuration" 
xmlns:sec="http://cxf.apache.org/configuration/security" 
xsi:schemaLocation=" 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd 
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd 
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd 
http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd "> 

<import resource="classpath:META-INF/cxf/cxf.xml" /> 
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> 
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> 

<!-- import spring application context configurations --> 
<import resource="classpath:META-INF/spring/applicationContext-ws.xml" /> 

<jaxws:endpoint id="testService" 
    implementor="com.sgb.testService.ws.web.TestService" 
    address="/testService" > 
    <!-- 
    address="http://localhost:8080/testService"> 
    --> 
    <jaxws:properties> 
     <entry key="schema-validation-enabled" value="true" /> 
    </jaxws:properties> 
    <jaxws:invoker> 
     <bean class="org.jboss.wsf.stack.cxf.InvokerJSE" /> 
    </jaxws:invoker> 
</jaxws:endpoint> 

그리고 봄의 구성은 여기에 ApplicationContext를-ws.xml에 정의되어 있습니다.

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:aop="http://www.springframework.org/schema/aop" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:jee="http://www.springframework.org/schema/jee" 
xmlns:jaxws="http://cxf.apache.org/jaxws" 
xmlns:tx="http://www.springframework.org/schema/tx" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
    http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.1.xsd 
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd 
    http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> 

<context:property-placeholder location="classpath*:META-INF/spring/*.properties" /> 

<!-- 
import the common configurations from core sub-module 
which contains the declarations for Datasource, EntityManagerFactory & PersistanceUnit 
--> 
<import resource="applicationContext-core.xml" /> 
<import resource="applicationContext-jpa.xml" /> 


<!-- setting up multiple packages to scan for components --> 
<context:component-scan base-package="com.sgb.testService.ws.service" /> 


<!-- Declare the Transaction Manager --> 
<bean id="transactionManager" 
    class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
</bean> 


<!-- declare transactions as annotation driven --> 
<tx:annotation-driven 
    transaction-manager="transactionManager" /> 

위를 잘 보면합니까? 누락 된 것이 있습니까?

특정 질문 : jboss AS 7에서 cxf 기반 웹 서비스를 배포하는 경우 스프링 빈 구성 (위의 ApplicationContext-ws.xml)은 어디에 정의해야합니까?

나를 최근 (2012) 예제 또는 자습서로 안내 할 수 있습니까? 온라인으로 찾은 대부분의 예제는 오래된 것 같아서 jboss 또는 스프링 웹 사이트에서 적절한 자습서를 찾을 수없는 것 같습니다 ...

감사합니다. -SGB

편집에 추가하려면 : 오류 메시지가 전쟁 파일을 배포하는 동안, 제이 보스가 JBOSS_HOME/독립형/데이터/WSDL/TestService.war에 WSDL을 게시하려고 나타 내기 위해 보이지만로 실패 스키마 (xsd 파일)를 찾을 수 없습니다. 이것은 bot와 스키마 wsdl이 WEB-INF/wsdl/디렉토리 안에 있다는 점에서 조금 이상합니다. 곳 JBOSS_HOME = C : \의 Program Files (x86) \ 아파치 소프트웨어 재단 \ jboss-as-7.1.1.Final이

오류 메시지 \ :

15:56:09,146 INFO [org.apache.cxf.service.factory.ReflectionServiceFactoryBean] (MSC service thread 1-4) Creating Service {http://www.sgb.com/Slm/ES 
/TestServiceIdentifier}TestServiceIdentifier from WSDL: WEB-INF/wsdl/TestService.wsdl 
15:56:09,238 INFO [org.apache.cxf.endpoint.ServerImpl] (MSC service thread 1-4) Setting the server's publish address to be http://localhost:8080/eucl 
id-ws 
15:56:09,266 INFO [org.jboss.wsf.stack.cxf.deployment.WSDLFilePublisher] (MSC service thread 1-4) WSDL published to: JBOSS_HOME/standalone/data/wsdl/testService-ws.war /TestService.wsdl 
15:56:09,270 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC00001: Failed to start service jboss.deployment.unit."testService-ws.war".INSTA 
LL: org.jboss.msc.service.StartException in service jboss.deployment.unit."testService-ws.war".INSTALL: Failed to process phase INSTALL of deployment "eucl 
id-ws.war" 
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_33] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_33] 
    at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_33] 
Caused by: java.lang.RuntimeException: Cannot publish wsdl to: JBOSS_HOME\standalone\data\ 
wsdl\testService-ws.war\TestService.wsdl 
    at org.jboss.wsf.stack.cxf.deployment.WSDLFilePublisher.publishWsdlFiles(WSDLFilePublisher.java:107) 
    at org.jboss.wsf.stack.cxf.deployment.EndpointImpl.publishContractToFilesystem(EndpointImpl.java:222) 
    at org.jboss.wsf.stack.cxf.deployment.EndpointImpl.doPublish(EndpointImpl.java:93) 
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:239) 
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:509) 
    at org.jboss.wsf.stack.cxf.configuration.NonSpringBusHolder.configure(NonSpringBusHolder.java:117) 
    at org.jboss.wsf.stack.cxf.deployment.aspect.BusDeploymentAspect.startDeploymentBus(BusDeploymentAspect.java:113) 
    at org.jboss.wsf.stack.cxf.deployment.aspect.BusDeploymentAspect.start(BusDeploymentAspect.java:66) 
    at org.jboss.as.webservices.deployers.AspectDeploymentProcessor.deploy(AspectDeploymentProcessor.java:74) 
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1 
.Final] 
    ... 5 more 
Caused by: java.io.FileNotFoundException: JBOSS_HOME\standalone\data\wsdl\testService-ws.war\TestServiceIdentifier.xsd (The system cannot find the file specified) 
    at java.io.FileInputStream.open(Native Method) [rt.jar:1.6.0_33] 
    at java.io.FileInputStream.<init>(FileInputStream.java:120) [rt.jar:1.6.0_33] 
    at java.io.FileInputStream.<init>(FileInputStream.java:79) [rt.jar:1.6.0_33] 
    at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70) [rt.jar:1.6.0_33] 
     at  sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161) [rt.jar:1.6.0_33] 
     at java.net.URL.openStream(URL.java:1010) [rt.jar:1.6.0_33] 
    at org.jboss.ws.common.utils.AbstractWSDLFilePublisher.publishSchemaImports(AbstractWSDLFilePublisher.java:243) 
    at org.jboss.ws.common.utils.AbstractWSDLFilePublisher.publishSchemaImports(AbstractWSDLFilePublisher.java:250) 
    at org.jboss.ws.common.utils.AbstractWSDLFilePublisher.publishSchemaImports(AbstractWSDLFilePublisher.java:250) 
    at org.jboss.wsf.stack.cxf.deployment.WSDLFilePublisher.publishWsdlFiles(WSDLFilePublisher.java:94) 
    ... 14 more 

15:56:09,343 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870:  Deploy of deployment "testService-ws.war" was rolled back with failure 
message {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"testService-ws.war\".INSTALL" => "org.jboss.msc.service.StartException in service jbos 
s.deployment.unit.\"testService-ws.war\".INSTALL: Failed to process phase INSTALL of deployment \"testService-ws.war\""}} 
15:56:09,413 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015877: Stopped deployment testService-ws.war in 70ms 
15:56:09,414 INFO [org.jboss.as.controller] (DeploymentScanner-threads - 2)  JBAS014774: Service status report 
JBAS014777: Services which failed to start:  service jboss.deployment.unit."testService-ws.war".INSTALL: org.jboss.msc.service.StartException in serv 
ice jboss.deployment.unit."testService-ws.war".INSTALL: Failed to process phase INSTALL of deployment "testService-ws.war" 

15:56:09,421 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) {"JBAS014653: Composite operation failed and was rolled ba 
ck. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"testService-ws.war\".INSTALL" => "org.jboss.m 
sc.service.StartException in service jboss.deployment.unit.\"testService-ws.war\".INSTALL: Failed to process phase INSTALL of deployment \"testService-ws.war\"" 

}}}}

위에서 근본 원인이 될 것 같다 :

Caused by: java.io.FileNotFoundException: JBOSS_HOME\standalone\data\wsdl\testService-ws.war\TestServiceIdentifier.xsd (The system cannot find the file specified) 

는 WSDL을 찾을 수있는 것 같다,하지만 사용하지 해당 XSD는 avai이다 WSDL 파일과 동일한 디렉토리에 있습니다.

+0

wsdl 및 스키마를 WEB-INF/wsdl/디렉토리로 복사 할 수있었습니다. 그러나 war 파일을 배포 할 때 wsdl이 JBOSS_HOME/standalone/data/wsdl/testService.war /에 복사되는 것처럼 보이지만 xsd 파일이 복사되지 않습니다.따라서 문제는 – SGB

+0

JBOSS_HOME = C : \ Program Files (x86) \ Apache Software Foundation \ jboss-as-7.1.1.Final \입니다. 위의 경로에 공간이 있으면 문제가 발생합니까? 관련 링크 [https://issues.jboss.org/browse/JBWS-3532]처럼 보이는이 링크를 찾았습니다. [/ link] – SGB

답변

1

이 부분은 https://issues.jboss.org/browse/JBWS-3532으로, JBOSS_HOME 디렉토리 경로상의 공백 때문일 수 있습니다. 위의 링크에있는 Richard Opalka의 의견에 따르면, 새로운 빌드에서도 수정 된 것처럼 보입니다.

jboss의 최신 야간을 다운로드하여 c : \ jboss \에 설치했는데 문제가 해결되지 않았습니다.

관련 문제