2013-02-28 10 views
7

मैं अपाचे सीएक्सएफ और टोमकैट के लिए बिल्कुल नया हूं। मैं एक साधारण वेब सेवा बनाने और इसे टोमकैट पर तैनात करने की कोशिश कर रहा हूं। नीचे मेरा web.xml है, हालांकि जब मैं अपने ब्राउज़र का उपयोग कर 'सेवाओं' फ़ोल्डर तक पहुंचने का प्रयास करता हूं तो यह कहता है कि कोई भी सेवाएं नहीं मिली हैं। मैंने जावा वेब सेवा क्लाइंट बनाने की कोशिश की लेकिन यह सेवा का पता लगाने में सक्षम नहीं है। इसमें क्या गलत हो सकता है?अपाचे सीएक्सएफ और टोमकैट

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" 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"> 
    <display-name>Sample web service provider</display-name> 
    <listener> 
     <!-- For Metro, use this listener-class instead: 
      com.sun.xml.ws.transport.http.servlet.WSServletContextListener --> 
     <listener-class> 
       org.springframework.web.context.ContextLoaderListener 
     </listener-class> 
    </listener> 
    <!-- Remove below context-param element if using Metro --> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
       classpath:META-INF/cxf/cxf.xml 
     </param-value> 
    </context-param> 
    <servlet> 
     <servlet-name>WebServicePort</servlet-name> 
     <!-- For Metro, use this servlet-class instead: 
      com.sun.xml.ws.transport.http.servlet.WSServlet --> 
     <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>WebServicePort</servlet-name> 
     <url-pattern>/services/*</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout>60</session-timeout> 
    </session-config> 
</web-app> 

उत्तर

6

इसका मतलब है कि आपके पास आपके आवेदन में कोई भी सेवा नहीं है। आपका web.xml सही प्रतीत होता है लेकिन मैंने अभी एक चीज़, आपकी स्प्रिंग कॉन्फ़िगरेशन को याद किया है। अपने स्प्रिंग config स्थान इसके अलावा, उदा, के लिए, अपने web.xml में जोड़े .:

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>WEB-INF/applicationContext.xml</param-value> 
</context-param> 

, आप एक वर्ग है जो अपने वेब सेवा इंटरफ़ेस को लागू करने और अपने स्प्रिंग applicationContext.xml विन्यास फाइल में CXF समाप्ति बिंदु के रूप में यह सामने आ जाएगी बनाना होगा। उदा .:

<bean id="candidateImpl" class="some.pckg.CandidateImpl"/> 

<jaxws:endpoint id="candidateEndpoint" 
       implementor="#candidateImpl" 
       address="/Candidate" 
     /> 

आपका CandidateImpl वर्ग @WebService एनोटेशन होना चाहिए के लिए। उदाहरण के लिए:

@WebService(targetNamespace = "http://something.com/ws/candidate", 
     portName = "CandidateService", 
     serviceName = "Candidate", 
     endpointInterface = "some.pckg.types.CandidateService", 
     wsdlLocation = "WEB-INF/wsdl/CandidateService.wsdl") 
public class CandidateImpl implements CandidateService { 
    //Implementation of all methods from CandidateService. 
} 

तुम सब कुछ सही ढंग से किया है, तो आप देखना चाहिए वहाँ के तहत एक सेवा उपलब्ध है कि:

http(s)://whateverhost.com:<somePort>/SomeContextPath/services 

और तुम इस तरह WSDL फ़ाइल प्राप्त करने के लिए सक्षम होना चाहिए:

http(s)://whateverhost.com:<somePort>/SomeContextPath/services/Candidate?wsdl 

यह भी देखें:

1

आप वसंत विन्यास फाइल स्थान इस काम करने के लिए सेट करना होगा। आप इसे निम्नानुसार सेट कर सकते हैं।

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>WEB-INF/applicationContext.xml</param-value> 
</context-param> 
1

आपको अपने web.xml में एक सर्वलेट कॉन्फ़िगर करने की आवश्यकता है। एक उदाहरण के नीचे।

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE web-app 
     PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
     "http://java.sun.com/dtd/web-app_2_3.dtd"> 
<web-app> 

    <servlet> 
     <servlet-name>CXFServlet</servlet-name> 
     <display-name>CXF Servlet</display-name> 
     <servlet-class> 
      org.apache.cxf.transport.servlet.CXFServlet 
     </servlet-class> 
     <init-param> 
      <param-name>config-location</param-name> 
      <param-value>/WEB-INF/spring-ws-servlet.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>CXFServlet</servlet-name> 
     <url-pattern>/services/*</url-pattern> 
    </servlet-mapping> 

</web-app> 

अब आप वेब-INF फ़ोल्डर के अंतर्गत वसंत-WS-servlet.xml नाम की एक फ़ाइल को परिभाषित करने की जरूरत है। Spring-ws-servlet.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:context="http://www.springframework.org/schema/context" 
     xmlns:jaxws="http://cxf.apache.org/jaxws" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.2.xsd 
     http://cxf.apache.org/jaxws 
     http://cxf.apache.org/schemas/jaxws.xsd"> 

    <context:component-scan base-package="com.sample.service"/> 

    <!-- JAX-WS Service Endpoint --> 
    <bean id="personImpl" class="com.sample.service.impl.PersonServiceImpl"/> 

    <jaxws:endpoint id="personEndpoint" 
        implementor="#personImpl" 
        address="/person"> 
     <jaxws:properties> 
      <entry key="schema-validation-enabled" value="true"/> 
     </jaxws:properties> 
    </jaxws:endpoint> 
    <!-- JAX-WS Service Endpoint End--> 
</beans> 

इस के साथ, आप के तहत http://localhost:8080/services/person?wsdl

यह इस पोस्ट से लिया जाता है अपने वेब सेवा का उपयोग कर सकते हैं। यह IntelliJ विचार और स्प्रिंग

https://aldavblog.wordpress.com/2015/01/22/creating-a-web-service-from-scratch-using-spring-maven-apache-cxf/

+0

इस लिंक सवाल का जवाब कर सकते हैं, यह जवाब के आवश्यक हिस्से में शामिल हैं और संदर्भ के लिए लिंक प्रदान करने के लिए बेहतर है के साथ एक CXF सेवा बनाने के बारे में एक ट्यूटोरियल है। लिंक किए गए पृष्ठ में परिवर्तन होने पर लिंक-केवल उत्तर अमान्य हो सकते हैं। – tbodt

+0

ठीक है, मैंने लापता जानकारी के साथ जवाब अपडेट किया है। आशा करता हूँ की ये काम करेगा। –

संबंधित मुद्दे