使用axis创建webservice
1.下载axis jar包(在此文件夹中已存在)
2.创建一个web project 项目名称为axistest
在web.xml中添加axis相关配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>axistest</display-name>
<servlet>
<display-name>Apache-Axis Servlet</display-name>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet>
<display-name>Axis Admin Servlet</display-name>
<servlet-name>AdminServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>
<load-on-startup>100</load-on-startup>
</servlet>
<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>AdminServlet</servlet-name>
<url-pattern>/servlet/AdminServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
3.在项目下新建一个包并创建一个类 SendInfo(该类中模拟服务端发送xml文件给客户端,之后客户端解析这个xml文件)
package com;
import java.io.IOException;
import java.io.StringWriter;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.XMLOutputter;
public class SendInfo {
public String sendYDSSInfo(){
Document document = new Document();
//根节点
Element root = new Element("SyncYDCGSS");
//CurrentMonth节点
Element currentMonth = new Element("CurrentMonth");
Element year = new Element("Year");
Element month = new Element("Month");
year.setText("2017");
month.setText("5");
currentMonth.addContent(year);
currentMonth.addContent(month);
Element DataArea = new Element("DataArea");
for(int i=0;i<2;i++){
Element info = new Element("YDSS");
if(i==0){
createInfoElement(info,"projectType","工程");
createInfoElement(info,"projectName","房屋工程");
}else{
createInfoElement(info,"projectType","物资");
createInfoElement(info,"projectName","生活物资");
}
createInfoElement(info,"isGZ","0");
createInfoElement(info,"gzReason","采用特定专利");
createInfoElement(info,"yearPlanAmount","21");
createInfoElement(info,"yearTenderAmount","21");
createInfoElement(info,"yearMoney","6116.87");
createInfoElement(info,"yearPlanAmountGZ","19");
createInfoElement(info,"executePlanAmount","2");
createInfoElement(info,"yearTenderGZ","19");
createInfoElement(info,"executeTenderGZ","4");
createInfoElement(info,"yearMoneyGZ","5336.87");
createInfoElement(info,"executeMoneyGZ","36.94");
createInfoElement(info,"yearPlanAmountQT","2");
createInfoElement(info,"executePlanAmountQT","0");
createInfoElement(info,"yearTenderQT","2");
createInfoElement(info,"executeTenderQT","0");
createInfoElement(info,"yearMoneyQT","780.00");
createInfoElement(info,"executeMoneyQT","0.00");
createInfoElement(info,"amountRate","100.00");
createInfoElement(info,"moneyRate","100.00");
createInfoElement(info,"createDate","2017-01-01");
createInfoElement(info,"updateDate","2017-04-01");
DataArea.addContent(info);
}
root.addContent(currentMonth);
root.addContent(DataArea);
document.setRootElement(root);
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root/>";
try {
StringWriter sw = new StringWriter();
XMLOutputter out = new XMLOutputter();
out.output(document, sw);
xml = sw.toString();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return xml;
}
public String sendFGZDETAIL(){
Document document = new Document();
//根节点
Element root = new Element("SyncFGZDETAIL");
Element DataArea = new Element("DataArea");
for(int i=0;i<2;i++){
Element info = new Element("ZBMX");
if(i==0){
createInfoElement(info,"bjId","1");
createInfoElement(info,"tyep1","C工程");
}else{
createInfoElement(info,"bjId","2");
createInfoElement(info,"tyep1","B服务");
}
createInfoElement(info,"tyep2","0");
createInfoElement(info,"tyep3","01卷烟材料");
createInfoElement(info,"tyep4","04卷烟纸");
createInfoElement(info,"tyep5","03卷烟纸(全资三产)");
createInfoElement(info,"infoName","03卷烟纸(全资三产)");
createInfoElement(info,"purchase","北京卷烟厂");
createInfoElement(info,"name","20160101第一标段");
createInfoElement(info,"budget","27172.95");
createInfoElement(info,"procurement","单一来源");
createInfoElement(info,"reasonNo","中烟版[2012]313第16条");
createInfoElement(info,"otherReasonNO","其它");
createInfoElement(info,"createDate","2017-01-01");
createInfoElement(info,"updateDate","2017-05-01");
DataArea.addContent(info);
}
root.addContent(DataArea);
document.setRootElement(root);
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root/>";
try {
StringWriter sw = new StringWriter();
XMLOutputter out = new XMLOutputter();
out.output(document, sw);
xml = sw.toString();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return xml;
}
private void createInfoElement(Element info, String elementName, String userId) {
Element temp = new Element(elementName);
temp.setText(userId);
info.addContent(temp);
}
}
4.配置server-config.wsdd,在WEB-INF下新建server-config.wsdd文件,内容如下:
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<!-- 处理器 -->
<handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" />
<!-- 一个服务 -->
<!-- provider="java:RPC" webservice是以javabean的形式提供的-->
<service name="helloWorldService" provider="java:RPC">
<!-- 指定类名 -->
<parameter name="className" value="com.HelloWorld" />
<!-- 类中允许访问的方法 -->
<parameter name="allowedMethod" value="*"></parameter>
</service>
<service name="SendInfoService" provider="java:RPC">
<!-- 指定类名 -->
<parameter name="className" value="com.SendInfo" />
<!-- 类中允许访问的方法 -->
<parameter name="allowedMethod" value="*"></parameter>
</service>
<!-- 指定处理器 -->
<transport name="http">
<requestFlow>
<handler type="URLMapper"/><!-- 引用上边的 -->
</requestFlow>
</transport>
</deployment>
注意:
wsdd文件标签节点说明:
deployment:表明这是一个axis部署描述文件;
service:axis提供的一个web service服务。service标签中parameter allowedMethod用于指定一个以空格分隔的方法名,只有这些方法可以通过web service访问。也可以将这个值指定为“*”表示所有的方法都可以访问。
provider:服务类型,共有四种,分别是RPC,Document,Wrapped和Message。详见org.apache.axis.providers包的API文档;
parameter:用来设置Axis的各种属性;
requestFlow:局的请求Handlers,在调用实际的服务之前调用;
transport:定义了服务器端的传输方式
5.将项目部署到Tomcat上,启动项目就可以了。
在浏览器中输入 http://localhost:8080/axistest/services 出现内容,说明webservice 发布成功 ,之后点wsdl,就可以看到相关协议的内容(不清楚wsdl是什么,好像是什么协议之类的,具体的查查)
6.在axistest(服务端)项目中创建一个测试类进行测试
测试类如下
package test;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class Client {
public static void main(String[] args) {
Service service = new Service();
try {
Call call = (Call) service.createCall();
//设置地址
call.setTargetEndpointAddress(new java.net.URL("http://localhost:8080/axistest/services/SendInfoService?wsdl")); //这个URL就是在点wsdl后浏览器地址栏中的内容
//设置要执行的方法
//call.setOperationName(new QName("http://com","sayHello"));
call.setOperationName(new QName("http://com","sendYDSSInfo")); //这个是点wsdl后,页面上的一个内容,前面的是空间域名(好像是这个),后面这个是方法名
//设置要传入参数,如果没有要传入的参数,则不要写这个
//call.addParameter("msg", org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
//设置返回的类型
call.setReturnType(org.apache.axis.Constants.XSD_STRING);
String name = "花非花雾非雾";
//执行,调用webservice
String result = (String) call.invoke(new Object[]{}); //现在的写法是不带参数的方法,如果要将上面的name作为参数传进去的话,可以这样写 String result = (String) call.invoke(new Object[]{name});
System.out.println("返回的结果是:"+result);
} catch (ServiceException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行之后就会在控制台上输出相关内容
上面这个是在服务端进行测试,主要是看看,有没有什么问题,下面说的是创建客户端,在客户端调用服务端的方法
1.编写一个 client.bat,可以通过Axis的相关工具,可以自动从WSDL文件中生成Web Service的客户端代码
client.bat内容如下
set Axis_Lib=F:\axis\axistest\WebRoot\WEB-INF\lib ---这个是axis.jar 包所在的位置
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=F:\my ------这个是在已存在的文件夹,之后生成的客户端代码会放在my文件夹中
set Package=com.qiusu.client -----这个是客户端的代码所在的包
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% http://10.128.220.56:9020/axistest/services/SendInfoService?wsdl
---这个是刚才浏览器地址栏中的内容
注意最后一行地址一定要跟在 %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% 后面,不要换行,换行之后就执行不了,无法生成客户端代码
2.双击client.bat,生成客户端代码
注意:在双击的时候,服务端一定是要运行状态
3.新建一个web project 项目名:theclient,并将刚生成的客户端代码复制到src下
4.创建一个测试类,进行测试
package com.qiusu.test;
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import com.qiusu.client.SendInfoService_ServiceLocator;
public class Test {
public static void main(String[] args) throws RemoteException, ServiceException {
/*SendInfoService_ServiceLocator service = new SendInfoService_ServiceLocator();
String ydss = service.getSendInfoService().sendYDSSInfo();
System.out.println(ydss);*/
ReadXml readXml = new ReadXml();
int i=0;
if(i==0){
//保存月度实施数据并从数据库中读取
readXml.readYDSSXML();
}else if(i==1){
//保存非公招明细并从数据库中读取
readXml.readFGZDetail();
}
}
}
说明:注释的代码可以直接测试,为注释的是我封装的方法用于读取服务端的方法,然后将读取的xml文件保存到数据库中(我用的数据库是DB2)
参考网站:
http://blog.csdn.net/hfhwfw/article/details/6099670
1.下载axis jar包(在此文件夹中已存在)
2.创建一个web project 项目名称为axistest
在web.xml中添加axis相关配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>axistest</display-name>
<servlet>
<display-name>Apache-Axis Servlet</display-name>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet>
<display-name>Axis Admin Servlet</display-name>
<servlet-name>AdminServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>
<load-on-startup>100</load-on-startup>
</servlet>
<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>AdminServlet</servlet-name>
<url-pattern>/servlet/AdminServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
3.在项目下新建一个包并创建一个类 SendInfo(该类中模拟服务端发送xml文件给客户端,之后客户端解析这个xml文件)
package com;
import java.io.IOException;
import java.io.StringWriter;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.XMLOutputter;
public class SendInfo {
public String sendYDSSInfo(){
Document document = new Document();
//根节点
Element root = new Element("SyncYDCGSS");
//CurrentMonth节点
Element currentMonth = new Element("CurrentMonth");
Element year = new Element("Year");
Element month = new Element("Month");
year.setText("2017");
month.setText("5");
currentMonth.addContent(year);
currentMonth.addContent(month);
Element DataArea = new Element("DataArea");
for(int i=0;i<2;i++){
Element info = new Element("YDSS");
if(i==0){
createInfoElement(info,"projectType","工程");
createInfoElement(info,"projectName","房屋工程");
}else{
createInfoElement(info,"projectType","物资");
createInfoElement(info,"projectName","生活物资");
}
createInfoElement(info,"isGZ","0");
createInfoElement(info,"gzReason","采用特定专利");
createInfoElement(info,"yearPlanAmount","21");
createInfoElement(info,"yearTenderAmount","21");
createInfoElement(info,"yearMoney","6116.87");
createInfoElement(info,"yearPlanAmountGZ","19");
createInfoElement(info,"executePlanAmount","2");
createInfoElement(info,"yearTenderGZ","19");
createInfoElement(info,"executeTenderGZ","4");
createInfoElement(info,"yearMoneyGZ","5336.87");
createInfoElement(info,"executeMoneyGZ","36.94");
createInfoElement(info,"yearPlanAmountQT","2");
createInfoElement(info,"executePlanAmountQT","0");
createInfoElement(info,"yearTenderQT","2");
createInfoElement(info,"executeTenderQT","0");
createInfoElement(info,"yearMoneyQT","780.00");
createInfoElement(info,"executeMoneyQT","0.00");
createInfoElement(info,"amountRate","100.00");
createInfoElement(info,"moneyRate","100.00");
createInfoElement(info,"createDate","2017-01-01");
createInfoElement(info,"updateDate","2017-04-01");
DataArea.addContent(info);
}
root.addContent(currentMonth);
root.addContent(DataArea);
document.setRootElement(root);
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root/>";
try {
StringWriter sw = new StringWriter();
XMLOutputter out = new XMLOutputter();
out.output(document, sw);
xml = sw.toString();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return xml;
}
public String sendFGZDETAIL(){
Document document = new Document();
//根节点
Element root = new Element("SyncFGZDETAIL");
Element DataArea = new Element("DataArea");
for(int i=0;i<2;i++){
Element info = new Element("ZBMX");
if(i==0){
createInfoElement(info,"bjId","1");
createInfoElement(info,"tyep1","C工程");
}else{
createInfoElement(info,"bjId","2");
createInfoElement(info,"tyep1","B服务");
}
createInfoElement(info,"tyep2","0");
createInfoElement(info,"tyep3","01卷烟材料");
createInfoElement(info,"tyep4","04卷烟纸");
createInfoElement(info,"tyep5","03卷烟纸(全资三产)");
createInfoElement(info,"infoName","03卷烟纸(全资三产)");
createInfoElement(info,"purchase","北京卷烟厂");
createInfoElement(info,"name","20160101第一标段");
createInfoElement(info,"budget","27172.95");
createInfoElement(info,"procurement","单一来源");
createInfoElement(info,"reasonNo","中烟版[2012]313第16条");
createInfoElement(info,"otherReasonNO","其它");
createInfoElement(info,"createDate","2017-01-01");
createInfoElement(info,"updateDate","2017-05-01");
DataArea.addContent(info);
}
root.addContent(DataArea);
document.setRootElement(root);
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root/>";
try {
StringWriter sw = new StringWriter();
XMLOutputter out = new XMLOutputter();
out.output(document, sw);
xml = sw.toString();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return xml;
}
private void createInfoElement(Element info, String elementName, String userId) {
Element temp = new Element(elementName);
temp.setText(userId);
info.addContent(temp);
}
}
4.配置server-config.wsdd,在WEB-INF下新建server-config.wsdd文件,内容如下:
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<!-- 处理器 -->
<handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" />
<!-- 一个服务 -->
<!-- provider="java:RPC" webservice是以javabean的形式提供的-->
<service name="helloWorldService" provider="java:RPC">
<!-- 指定类名 -->
<parameter name="className" value="com.HelloWorld" />
<!-- 类中允许访问的方法 -->
<parameter name="allowedMethod" value="*"></parameter>
</service>
<service name="SendInfoService" provider="java:RPC">
<!-- 指定类名 -->
<parameter name="className" value="com.SendInfo" />
<!-- 类中允许访问的方法 -->
<parameter name="allowedMethod" value="*"></parameter>
</service>
<!-- 指定处理器 -->
<transport name="http">
<requestFlow>
<handler type="URLMapper"/><!-- 引用上边的 -->
</requestFlow>
</transport>
</deployment>
注意:
wsdd文件标签节点说明:
deployment:表明这是一个axis部署描述文件;
service:axis提供的一个web service服务。service标签中parameter allowedMethod用于指定一个以空格分隔的方法名,只有这些方法可以通过web service访问。也可以将这个值指定为“*”表示所有的方法都可以访问。
provider:服务类型,共有四种,分别是RPC,Document,Wrapped和Message。详见org.apache.axis.providers包的API文档;
parameter:用来设置Axis的各种属性;
requestFlow:局的请求Handlers,在调用实际的服务之前调用;
transport:定义了服务器端的传输方式
5.将项目部署到Tomcat上,启动项目就可以了。
在浏览器中输入 http://localhost:8080/axistest/services 出现内容,说明webservice 发布成功 ,之后点wsdl,就可以看到相关协议的内容(不清楚wsdl是什么,好像是什么协议之类的,具体的查查)
6.在axistest(服务端)项目中创建一个测试类进行测试
测试类如下
package test;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class Client {
public static void main(String[] args) {
Service service = new Service();
try {
Call call = (Call) service.createCall();
//设置地址
call.setTargetEndpointAddress(new java.net.URL("http://localhost:8080/axistest/services/SendInfoService?wsdl")); //这个URL就是在点wsdl后浏览器地址栏中的内容
//设置要执行的方法
//call.setOperationName(new QName("http://com","sayHello"));
call.setOperationName(new QName("http://com","sendYDSSInfo")); //这个是点wsdl后,页面上的一个内容,前面的是空间域名(好像是这个),后面这个是方法名
//设置要传入参数,如果没有要传入的参数,则不要写这个
//call.addParameter("msg", org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
//设置返回的类型
call.setReturnType(org.apache.axis.Constants.XSD_STRING);
String name = "花非花雾非雾";
//执行,调用webservice
String result = (String) call.invoke(new Object[]{}); //现在的写法是不带参数的方法,如果要将上面的name作为参数传进去的话,可以这样写 String result = (String) call.invoke(new Object[]{name});
System.out.println("返回的结果是:"+result);
} catch (ServiceException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行之后就会在控制台上输出相关内容
上面这个是在服务端进行测试,主要是看看,有没有什么问题,下面说的是创建客户端,在客户端调用服务端的方法
1.编写一个 client.bat,可以通过Axis的相关工具,可以自动从WSDL文件中生成Web Service的客户端代码
client.bat内容如下
set Axis_Lib=F:\axis\axistest\WebRoot\WEB-INF\lib ---这个是axis.jar 包所在的位置
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=F:\my ------这个是在已存在的文件夹,之后生成的客户端代码会放在my文件夹中
set Package=com.qiusu.client -----这个是客户端的代码所在的包
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% http://10.128.220.56:9020/axistest/services/SendInfoService?wsdl
---这个是刚才浏览器地址栏中的内容
注意最后一行地址一定要跟在 %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% 后面,不要换行,换行之后就执行不了,无法生成客户端代码
2.双击client.bat,生成客户端代码
注意:在双击的时候,服务端一定是要运行状态
3.新建一个web project 项目名:theclient,并将刚生成的客户端代码复制到src下
4.创建一个测试类,进行测试
package com.qiusu.test;
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import com.qiusu.client.SendInfoService_ServiceLocator;
public class Test {
public static void main(String[] args) throws RemoteException, ServiceException {
/*SendInfoService_ServiceLocator service = new SendInfoService_ServiceLocator();
String ydss = service.getSendInfoService().sendYDSSInfo();
System.out.println(ydss);*/
ReadXml readXml = new ReadXml();
int i=0;
if(i==0){
//保存月度实施数据并从数据库中读取
readXml.readYDSSXML();
}else if(i==1){
//保存非公招明细并从数据库中读取
readXml.readFGZDetail();
}
}
}
说明:注释的代码可以直接测试,为注释的是我封装的方法用于读取服务端的方法,然后将读取的xml文件保存到数据库中(我用的数据库是DB2)
参考网站:
http://blog.csdn.net/hfhwfw/article/details/6099670
http://www.williamlong.info/archives/701.html
可能遇到的问题
1.如果发布到tomcat上面可以运行,但是发布到weblogic上却提示数组角标越界,这个问题的原因可能是因为jar包冲突
和可以正常部署的war包中的jar包比较一下,确定是哪个jar包的问题
2.部署成功之后,如果服务端用到了hibernate。在服务端测试的时候数据保存之类的操作都没有问题,但是在客户端调用的时候,却报
org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/***/***/entity/Zbmx.hbm.xml
出现这个错误,可以修改Zbmx.hbm.xml 文件的头信息
原来的头信息
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
修改后的头信息
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
这样改完之后就可以访问了