怎么让普通的项目发布为WebService呢?

解决方案 »

  1.   

    如果是java的话,可以使用axis2这个apache的项目做进一步开发,发布为webservice,不过工作量还是有的
      

  2.   

    可以用Xfire+Spring 支持的一系列Web Service的新标准--JSR181、WSDL2.0 、JAXB2、WS-Security来实现package com.webservice.jsr181;import javax.jws.WebService;
    //指定soap的命名空间
    @WebService(targetNamespace = "http://localhost:8007/test2")
    public interface BbtForumService {
    int getRefinedTopicCount(int lastDay);
    }
    package com.webservice.jsr181;import javax.jws.WebService;@WebService(serviceName = "BbtForumService",endpointInterface = "com.webservice.jsr181.BbtForumService")public class BbtFormServiceImp implements BbtForumService {
    public int getRefinedTopicCount(int lastDay) {
       return 0;
    }
    }
      

  3.   

    web.xml文件:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>XFireService</display-name><!-- begin Spring配置 -->
    <context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>
        /WEB-INF/applicationContext.xml,/WEB-INF/xfire-servlet.xml
       </param-value>
    </context-param>
    <listener>        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>    </listener>
    <listener>
       <listener-class>
        org.springframework.web.context.ContextLoaderListener
       </listener-class>
    </listener>
    <listener>
       <listener-class>
        org.springframework.web.util.IntrospectorCleanupListener
       </listener-class>
    </listener><!-- end Spring配置 --><!-- begin XFire 配置 -->
    <servlet>
       <servlet-name>xfire</servlet-name>
       <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
       </servlet-class>
    </servlet>
    <servlet-mapping>
       <servlet-name>xfire</servlet-name>
       <url-pattern>*.ws</url-pattern>
    </servlet-mapping>
    <servlet><!-- 配合Spring容器中XFire一起工作的Servlet-->
       <servlet-name>xfireServlet</servlet-name>
       <servlet-class>
        org.codehaus.xfire.spring.XFireSpringServlet
       </servlet-class>
    </servlet>
    <servlet-mapping>
       <servlet-name>xfireServlet</servlet-name><!-- 在这个URI下开放Web Service服务 -->
       <url-pattern>/service/*</url-pattern>
    </servlet-mapping><!-- end XFire 配置 -->
    </web-app>
    applicationContext.xml文件:这里将不再需要xfire-servlet.xml但是会报错,该怎么除掉这个错误,我还不知道。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
    <import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
    <!-- ①该Bean获取Spring容器中所有标注@WebService的Bean -->
    <bean id="webAnnotations"
       class="org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations" />
    <!-- ②对标注@WebService的Bean进行处理,完成导出工作 -->
    <bean id="jsr181HandlerMapping"
       class="org.codehaus.xfire.spring.remoting.Jsr181HandlerMapping">   <property name="xfire" ref="xfire" />   <property name="webAnnotations" ref="webAnnotations" /></bean>
    <bean id="bbtForum" class="com.webservice.jsr181.BbtFormServiceImp" />
    </beans>
      

  4.   

    使用jrs是在实现类的@WebService(serviceName = "BbtForumService"指定访问路径
    使用普通方式是在handler中指定访问路径:
    <bean
       class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
       <property name="urlMap">
        <map>
         <entry key="/HelloWorldService.ws">
          <ref bean="HelloWorldService" />
         </entry>
        </map>
       </property>
    </bean>log4j.rootLogger=info,stdout   log4j.appender.stdout=org.apache.log4j.ConsoleAppender
       log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
       log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss}\t %-5p \t%m%n
    在web.xml文件中:
       <context-param>           <param-name>log4jConfigLocation</param-name>           <param-value>/WEB-INF/log4j.properties</param-value>      </context-param>
       <listener>           <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>    </listener>