使用jsp控制器servlet直接调用xfire框架构建的 WebService怎么不行?
在MyEclipse8.5中,我新建了一个Web Service Project项目用xfire框架构建了一个webService并发布成功,并且用VS2008C#可以调用。在MyEclipse新建一个Web Project项目,并导入Xfire的所有库,新建一个带main函数的java类如下所示:package resourceOntology;
import java.net.URL;
import org.codehaus.xfire.client.Client;
public class HelloService {
public static void main(String arg[])throws Exception
{
Client client = new Client (new URL
("http://localhost:8080/xfire126Demo/services/MyService?wsdl"));
Object[] results =client.invoke("SayHello", new Object[]{"许小峰"});
System.out.println((String) results[0]);
}
}
直接运行类,可以成功调用,能输出结果,但是当我新建一个jsp页面,并建新一个servlet控制器,在调用webService代码添加到servlet的doPost()方法中,servlet代码如下所示:
package resourceOntology;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.net.MalformedURLException;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.net.URL;
import org.codehaus.xfire.client.Client;
public class OntologyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException,MalformedURLException {
Client client;
try {
client = new Client (new URL
("http://localhost:8080/xfire126Demo/services/MyService?wsdl"));
Object[] results =client.invoke("SayHello", new Object[]{"许小峰"});
System.out.println((String) results[0]);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
将该jsp页面提交到该servlet控制器,却出现错误:
java.lang.NoClassDefFoundError: org/codehaus/xfire/client/Client
好像是说:没有找到 org/codehaus/xfire/client/Client这个类。
我单独的java文件能找到这个类,并能输出结果,但为什么在servlet里就不行呢,我测试用的java类文件和servlet文件在同一个包的同一个目录下,仅仅因为一个是普通java类,另一个是servlet类吗?是不是在jsp控制器servlet中不能调用webService?试了试,好像也不能在jsp页面的小脚本<% %>中调用,可能是我的方法不太对,感觉很奇怪,各位遇到过这个问题没有是如何解决的,反正我知道使用javaScript+ajax是可以调用的。我想在servlet中直接调用,或者是在jsp页面的小脚本<% %>中调用,请各位赐教一下,感激不尽! --------------------编程问答-------------------- 你jsp页面有没有导入xfire的包
应该没什么问题 --------------------编程问答-------------------- 我的jsp页面代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page import="java.net.URL, org.codehaus.xfire.client.Client" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'MyJsp.jsp' starting page</title>
<script language="javascript" type="text/javascript">
function submit123()
{
var form=document.getElementById("test123");
form.action="servlet/OntologyServlet";
form.submit();
}
</script>
</head>
<body> <br> <form method="post" name="test1" id="test123"><p> </p><p> </p><p> <input type="button" value="提交" name="button1" onClick="submit123()"></p><p> </p><p> </p><p> </p></form></body>
</html>
运行该jsp页面时确实有错误提示说:
Generated servlet error:
D:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\ManufactureServiceSystem\org\apache\jsp\MyJsp_jsp.java:8: 软件包 org.codehaus.xfire.client 不存在
import org.codehaus.xfire.client.Client;
^
但是我在jsp页面所在的工程中确实是导入了xfire相关的库的,否则普通java类和servlet类中也无法使用包中的Client类,而不提示错误。
工程中导入的库如下图所示:
难道这样做还不够,是不是还需要针对这个jsp页面单独导入这些库和包,应该怎样导入? --------------------编程问答-------------------- 各位,顶一下啊,是不是不能在jsp和servlet中像这样创建客户端?那应该怎样调用服务? --------------------编程问答-------------------- 这个问题最终有没有解决 --------------------编程问答-------------------- 这个问题亟待解决 啊 。。。。。。。。。。大神们。。。。
补充:Java , Web 开发