一样的程序,在WSAD5.1中运行正常,但在WebSphere5中用网页调用时webService时提示
axis fault,404 not found
与webService没有配置好的提示一样。
稍后我把配置发上来,大家帮忙看看什么原因。

解决方案 »

  1.   

    WEB-INFO\lib下的jar包
    activation-1.1.jar
    antlr.jar
    axis.jar
    axis-ant.jar
    commons-attributes-api.jar
    commons-attributes-compiler.jar
    commons-beanutils.jar
    commons-codec.jar
    commons-collections.jar
    commons-collections-3.1.jar
    commons-dbcp-1.2.1.jar
    commons-digester.jar
    commons-discovery-0.2.jar
    commons-el.jar
    commons-fileupload.jar
    commons-lang.jar
    commons-lang-2.0.jar
    commons-logging.jar
    commons-logging-1.0.4.jar
    commons-pool-1.2.jar
    commons-validator.jar
    dtdparser119.jar
    jakarta-oro.jar
    jaxen-1.1-beta-6.jar
    jaxp.jar
    jaxrpc.jar
    jce.jar
    jstl.jar
    junit.jar
    log4j-1.2.9.jar
    mail-1.4.jar
    netscape.jar
    parser.jar
    saaj.jar
    server.jar
    servlet-api.jar
    spring.jar
    standard.jar
    struts.jar
    sunjce_provider.jar
    wsdl4j-1.5.1.jar
    xercesImpl.jar
    xml-apis.jar--------------------------------------------------------------------------------------
    WEB-INFO\web.xml内容
    <?xml version="1.0" encoding="UTF-8"?>
    <!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 id="WebApp">
    <display-name></display-name><listener>
    <!--axis config-->
    <!-- webService config begin -->
    <listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class>
    <!-- webService config end -->
    </listener>
    <!-- webService config begin -->
    <servlet>
    <servlet-name>AxisServlet</servlet-name>
    <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
    </servlet><servlet>
    <servlet-name>AdminServlet</servlet-name>
    <servlet-class> org.apache.axis.transport.http.AdminServlet</servlet-class>
    <load-on-startup>101</load-on-startup>
    </servlet><servlet>
    <servlet-name>SOAPMonitorService</servlet-name>
    <display-name>SOAPMonitorService</display-name>
    <servlet-class>org.apache.axis.monitor.SOAPMonitorService</servlet-class>
    <init-param>
    <param-name>SOAPMonitorPort</param-name>
    <param-value>5001</param-value>
    </init-param>
    <load-on-startup>102</load-on-startup>
    </servlet>
    <!-- webService config end -->
    <servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>/servlet/AxisServlet</url-pattern>
    </servlet-mapping><servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
    <url-pattern>*.jws</url-pattern>
    </servlet-mapping><servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
    </servlet-mapping><servlet-mapping>
        <servlet-name>SOAPMonitorService</servlet-name>
    <url-pattern>/SOAPMonitor</url-pattern>
    </servlet-mapping><servlet-mapping>
        <servlet-name>AdminServlet</servlet-name>
    <url-pattern>/servlet/AdminServlet</url-pattern>
    </servlet-mapping><session-config>
            <!-- Default to 5 minute session timeouts -->
            <session-timeout>5</session-timeout>
    </session-config>    <!-- currently the W3C havent settled on a media type for WSDL;
        http://www.w3.org/TR/2003/WD-wsdl12-20030303/#ietf-draft
        for now we go with the basic 'it's XML' response -->
      <mime-mapping>
        <extension>wsdl</extension>
         <mime-type>text/xml</mime-type>
      </mime-mapping>
      <mime-mapping>
        <extension>xsd</extension>
        <mime-type>text/xml</mime-type>
      </mime-mapping><!--axis config end --> <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list> <resource-ref>
    <description>Oracle Datasource</description>
    <res-ref-name>jdbc/myoracle</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
    </web-app>
      

  2.   

    --------------------------------------------------------------------------------------
    WEB-INFO\server-config.wsdd文件内容
    <?xml version="1.0" encoding="UTF-8"?>
    <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
     <globalConfiguration>
      <parameter name="sendMultiRefs" value="true"/>
      <parameter name="disablePrettyXML" value="true"/>
      <parameter name="adminPassword" value="admin"/>
      <parameter name="attachments.Directory" value="/WEB-INF/attachments"/>
      <parameter name="dotNetSoapEncFix" value="true"/>
      <parameter name="enableNamespacePrefixOptimization" value="false"/>
      <parameter name="sendXMLDeclaration" value="true"/>
      <parameter name="sendXsiTypes" value="true"/>
      <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>
      <requestFlow>
       <handler type="java:org.apache.axis.handlers.JWSHandler">
        <parameter name="scope" value="session"/>
       </handler>
       <handler type="java:org.apache.axis.handlers.JWSHandler">
        <parameter name="scope" value="request"/>
        <parameter name="extension" value=".jwr"/>
       </handler>
      </requestFlow>
     </globalConfiguration>
     <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
     <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
     <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
     <service name="AdminService" provider="java:MSG">
      <parameter name="allowedMethods" value="AdminService"/>
      <parameter name="enableRemoteAdmin" value="false"/>
      <parameter name="className" value="org.apache.axis.utils.Admin"/>
      <namespace>http://xml.apache.org/axis/wsdd/</namespace>
      <namespace>http://xml.apache.org/axis/wsdd/</namespace>
     </service>
     
     <!-- Mic begin -->
     <service name="mic" provider="java:RPC">
        <parameter name="allowedMethods" value="getSale"/>
       <parameter name="className" value="test.Mic"/>
     </service>
     <!-- Mic end -->
     
     <service name="Version" provider="java:RPC">
      <parameter name="allowedMethods" value="getVersion"/>
      <parameter name="className" value="org.apache.axis.Version"/>
     </service>
     
     <transport name="http">
      <requestFlow>
       <handler type="URLMapper"/>
       <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
      </requestFlow>
      <parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler"/>
      <parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>
      <parameter name="qs.list" value="org.apache.axis.transport.http.QSListHandler"/>
      <parameter name="qs.method" value="org.apache.axis.transport.http.QSMethodHandler"/>
      <parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler"/>
      <parameter name="qs.wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>
     </transport>
     <transport name="local">
      <responseFlow>
       <handler type="LocalResponder"/>
      </responseFlow>
     </transport>
    </deployment>--------------------------------------------------------------------------------------
    XytClient.java内容
    package test;import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;public class XytClient {

      /**
       * 测试 webService
       * @param args
       * @return
       * @throws Exception
       */
      public String invokeWs(String[] args) throws Exception {
      
    // 指出service所在URL     
    String instantName = "mic";
    String methodName="getSale";//
                    String url = "http://localhost:9081/myproject/services/";

             String[] param = null;
       param = new String[] { "1037020300590","20080122","20080122" };
    String endpoint = url + instantName;
      
    // 创建一个服务(service)调用(call)     
      Service service = new Service();    
       
      Call call = (Call) service.createCall();// 通过service创建call对象
       
    // 设置service所在URL     
      call.setTargetEndpointAddress(new java.net.URL(endpoint));    
       
    // 方法名(processService)与MyService.java方法名保持一致     
      call.setOperationName(methodName);    
       
    // Object 数组封装了参数,参数为"This is Test!",调用processService(String arg)
    String ret = "";
      try {
    ret = (String) call.invoke(param); //此处出错下行不打日志
    System.out.println(ret);
      } catch (Exception e) {
    System.out.println(e);//此处提示404 not found
      }
      
      return ret;
      }
    }--------------------------------------------------------------------------------------
    testWs.jsp文件内容
    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <%@ page import="test.XytClient" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
      try{ 
    XytClient xytClient = new XytClient();
       
       String ret = xytClient.invokeWs(null); 
       out.println(ret);
      }catch(Exception e){
      out.println("发生异常:"+e.getMessage());
      }
    %> 
    --------------------------------------------------------------------------------------
    Mic.java
    package testpublic class Mic {  public String getSale(String custId,String begDate,String endDate) {
        System.out.println("custId:" + custId);//此行未能打印出来,说明客户端没有成功调用webService
      }}
    --------------------------------------------------------------------------------------
    执行
    http://localhost:9081/myproject/testWs.jsp
    出现提示 axis fault 404 not found一样的环境在WSAD的开发环境就正常,发布到WebSphere调用不了webService。
      

  3.   

    让我自己搞定了。
    发布时打成ear包覆盖老项目就行了。
    直接发文件不行。