-
用cxf封装了一个应用程序,用了struts2,想部署到tomcat中,出了问题10
首先我把server端和client端都写成应用程序(就是有main函数的那种),server端代码
AnsysServer.java
package cn.edu.sjtu;
import javax.xml.ws.Endpoint;
public class AnsysServer {
protected AnsysServer() throws Exception {
System.out.println("Starting Server");
Object implementor = new cn.edu.sjtu.AnsysImpl();
String address = "http://localhost:9090/AnsysPort";
Endpoint.publish(address, implementor);
}
public static void main(String args[]) throws Exception {
new AnsysServer();
System.out.println("Server ready...");
Thread.sleep(5 * 60 * 1000);
System.out.println("Server exiting");
System.exit(0);
}
}
client端代码:
AnsysClient.java
package cn.edu.sjtu;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPBinding;
public class AnsysClient {
public static void main(String[] args) throws Exception {
QName serviceName = new QName("http://sjtu.edu.cn/", "AnsysService");
QName portName = new QName("http://sjtu.edu.cn/", "AnsysPort");
Service service = Service.create(serviceName);
service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING,"http://localhost:9090/AnsysPort");
cn.edu.sjtu.Ansys client = service.getPort(portName,cn.edu.sjtu.Ansys.class);
//Ansys client = new AnsysImpl();
// Insert code to invoke methods on the client here
client.init();
client.run();
}
}
还有个实现类AnsysImpl.java
代码不贴了,很长。
先运行AnsysServer.java,再运行AnsysClient.java,可以正常运行封装的应用程序Ansys90.exe。
我想做成这样,AnsysServer.java不变(仍然有main函数),然后打开浏览器,访问一个页面,点击页面中一个
按钮来启动client,AnsysClient.java改成这样:
package cn.edu.sjtu;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPBinding;
public class AnsysClient {
public String execute() throws Exception {
QName serviceName = new QName("http://sjtu.edu.cn/", "AnsysService");
QName portName = new QName("http://sjtu.edu.cn/", "AnsysPort");
Service service = Service.create(serviceName);
service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING,"http://localhost:9090/AnsysPort");
cn.edu.sjtu.Ansys client = service.getPort(portName,cn.edu.sjtu.Ansys.class);
//Ansys client = new AnsysImpl();
// Insert code to invoke methods on the client here
client.init();
return client.run();
}
}
用了struts2,点了页面上一个按钮,执行action,也就是类AnsysClient中的execute方法,
struts.xml配置文件
<%@ page contentType="text/html; charset=GBK" language="java"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
<title></title>
<s:head/>
</head>
<body>
<h3></h3>
<s:form action="startClient">
<s:submit name="startClient" value="启动客户端" />
</s:form>
</body>
</html>
点了按钮后,有这样的错误:
Servlet.service() for servlet default threw exception
java.lang.NullPointerException
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPortModel(WSServiceDelegate.java:570)
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:273)
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:267)
at javax.xml.ws.Service.getPort(Service.java:92)
at cn.edu.sjtu.AnsysClient.execute(AnsysClient.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
......
exception
javax.servlet.ServletException
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
问一下是什么原因?AnsysClient.java中cn.edu.sjtu.Ansys client = service.getPort(portName,cn.edu.sjtu.Ansys.class);这一行代码有什么问题了?2008年7月29日 15:28
1个答案 按时间排序 按投票排序
-
从stack trace 来看你没有用CXF, 用的是Sun 的JAXWS RI。
Servlet.service() for servlet default threw exception
java.lang.NullPointerException
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPortModel(WSServiceDelegate.java:570)
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:273)
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:267)2008年8月01日 08:35
相关推荐
Struts2则是一个用于构建MVC(模型-视图-控制器)架构的Java web应用框架。这个组合使得开发者能够高效地构建、管理和部署基于Web的服务。 【CXF】是Java世界中广泛使用的Web服务框架,支持SOAP和RESTful两种Web...
在Java开发中,创建Web服务是一种常见的需求,Eclipse作为流行的Java IDE,配合CXF(一个开源的Java SOAP和RESTful Web服务框架)以及Tomcat(流行的Java应用服务器),可以方便地实现这一目标。以下是使用Eclipse、...
总结来说,"零配置spring 整合cxf、struts2"是一个旨在减少XML配置,通过注解驱动实现Spring、CXF和Struts2无缝集成的实践。通过这种方式,开发者可以专注于业务逻辑,提高开发效率,同时降低维护成本。在实际开发中...
在提供的`cxf_sample.rar`中,可能包含了一个使用CXF构建的Web服务示例,包括配置文件、源代码和所需的库文件。 **Spring** 是一个全面的Java企业级应用开发框架,Spring 3.0 版本带来了许多改进,例如对JSR-330...
**Struts2** 是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,它旨在简化开发过程并提供可扩展性。Struts2通过拦截器机制实现了灵活的控制流程,可以处理HTTP请求,并将这些请求映射到相应的Action类...
Tomcat则是一个广泛使用的Java Servlet容器,用于运行Java Web应用程序。 【描述】提到的"工程中所用JAR包 来自官方网站apache-cxf-2.3.5.zip中lib下的包",意味着我们需要从Apache CXF的2.3.5版本下载源码包,然后...
【标题】"CXF+Spring+Tomcat发布WebService"涉及的是使用Apache CXF框架与Spring框架结合,在Tomcat服务器上部署和消费Web服务的过程。这是一个常见的企业级应用开发场景,特别是对于实现基于SOAP协议的Web服务。...
在了解如何使用Eclipse和CXF开发和部署Web服务...这是一个完整的从开发到部署的过程,涵盖了Web服务的基本概念、CXF框架的使用以及Tomcat作为应用服务器的配置。掌握这些知识对于进行企业级Java Web开发是至关重要的。
Struts则是Apache组织下的一个开源MVC(Model-View-Controller)框架,主要用于构建基于J2EE的Web应用。它通过分离业务逻辑、表示层和控制逻辑,使得代码更易于维护和扩展。Struts 2作为其最新版本,引入了更多现代...
【标题】"cxf+spring+tomcat"的组合是一个常见的Web服务开发环境,它将Apache CXF(一个用于构建和消费Web服务的开源框架)与Spring框架(一个广泛使用的Java企业级应用开发框架)以及Tomcat(一个流行的轻量级Java...
通过这个项目,学习者可以了解到如何配置Spring以实现DI和AOP,如何在Struts2中定义Action并使用Interceptor,如何在MyBatis中编写Mapper和SQL语句,以及如何通过CXF创建和调用Web服务。此外,了解这些框架的集成...
在IT行业中,构建Web服务是常见的任务,Spring、CXF和Tomcat的组合是一个流行的解决方案。这个项目"Spring+CXF+tomcat开发webservice"旨在教你如何利用这些技术搭建一个完整的Web服务环境,包括服务端和服务端客户端...
Struts2是一个流行的Java web框架,它为开发者提供了一种模型-视图-控制器(MVC)架构,便于构建可维护、可扩展的web应用程序。随着技术的发展,框架也需要不断更新以修复安全漏洞、提高性能并引入新特性。在本文中...
- **WAR包部署**: 将CXF服务打包成WAR文件,部署到支持Servlet容器(如Tomcat)中。 - **独立运行**: 利用CXF的Standalone Server或Jetty服务器,无需Web容器即可运行Web服务。 ### 6. 客户端调用 - **动态代理**: ...
5. **CXF的部署**:CXF支持多种部署方式,包括独立运行(使用CXF的Servlet容器)、嵌入式在其他应用服务器中(如Tomcat、Jetty),或者作为OSGi服务。在部署时,你需要将CXF的依赖库加入到项目的类路径中,并配置...
总之,部署Web Service到Tomcat是一个涉及多种技术和配置步骤的过程,需要对Java Web开发和Tomcat服务器有深入的理解。通过合理的规划和实施,可以成功地将Web Service发布到Tomcat,实现跨系统间的高效通信。
Struts2+Spring3+Hibernate4+Maven+EasyUI+CXF 是一个经典的Java Web开发框架集成,常用于构建高效、稳定的企业级应用。这个整合涵盖了前端展示、后端控制、持久化、依赖注入、项目管理和Web服务等多个层面,为...
在IT行业中,构建Web服务是常见的任务之一,而Apache CXF、Struts和Spring这三大框架的结合使用,能够帮助开发者高效地实现这一目标。本文将深入探讨这三大框架的集成及其在创建Web Service CXF+Struts+Spring示例中...
在本教程中,我们将深入探讨如何使用CXF在JBoss和Tomcat这两种流行的Java应用服务器上发布Web服务。 ### 一、CXF WebService发布 1. **CXF环境搭建** 在开始之前,确保你已经安装了Java Development Kit (JDK) 和...
此项目继承了Spring Struts2 Ibatis CXF,项目里面含有数据执行文件!具体请参见项目的readme.txt文件,里面详细描述需要对应框架支持需要的jar包。请注意,如果选取的版本不一致,所需要的jar可能不一样。