- 浏览: 254118 次
- 性别:
- 来自: 上海
最新评论
-
zouxiupeng12:
2Bizbox ERP论坛:http://www.obizbo ...
2BizBox免费ERP API初体验 -
shuishan_sun:
你好,现在正在学习twaver,对您这个例子很感兴趣,请问能把 ...
HTML5环形树拓扑图 -
YTT1121:
楼主,终于找到大神了,求物理网络拓扑发现的源代码,有偿。请联系 ...
瞧咱办公室的拓扑图 -
007007jing:
做的很炫。最近正好在做人际关系拓扑图,大神方便的时候给发份代码 ...
HTML5环形树拓扑图 -
out_lier:
楼主这个很清晰明了啊,是使用什么工具做的,我现在有个类似的需求 ...
HTML5环形树拓扑图
简介
什么是2BizBox API
2BizBox是免费的ERP软件,也是一个开放的ERP平台。2BizBox面向开发者提供了完整的API二次开发接口,用于对2BizBox进行集成和二次开发。2BizBox API涵盖了2BizBox的全部功能。掌握了2BizBox API,可以帮助开发者、系统集成商、实施服务商等深入了解2BizBox的功能和机制,并与其他软件系统进行无缝集成,满足企业客户的各种实际需求。例如,和OA、CRM、PDF、其他厂商ERP系统等的系统集成和数据交换,都是典型的应用场景。
举一个简单的例子:一家企业已经成功实施了**厂商的CRM系统和2BizBox ERP系统。一般来说,CRM中并没有产品的实时成本信息和BOM信息。在报价时候,企业希望能够在CRM中直接从2BizBox中获取报价商品的当前库存、成本、以及BOM信息,方便报价。此外,达成销售协议后,企业还希望通过鼠标点击,直接在2BizBox生成销售单。该如何进行呢?此时,如果您掌握了2BizBox API的开发技巧,这一切都将变得易如反掌。
2BizBox API的位置
2BizBox API是2BizBox整个系统的后台功能定义和数据结构定义,用于各种外部程序的调用。这些外部程序包括2BizBox系统本身的GUI桌面终端、基于Web的各种模块终端、PDA掌上终端、手机终端等等。同样,如果您掌握了2BizBox API的开发方法,也可以自己创建基于2BizBox的各种终端应用,或与2BizBox进行系统集成和数据联动。
下图展示了2BizBox API在整个2BizBox系统中的位置和作用。
2BizBox API可以做什么
2BizBox API包含了2BizBox系统本身的全部功能和数据结构。所以,理论上来说,通过2BizBox API,您可以操控系统,让它做任何它可以做的事。例如,创建单据、查询数据、修改订单等等。您甚至可以通过2BizBox API开发一个全新的客户端GUI程序,当然这一工作量将巨大无比。更多时候,我们是通过2BizBox API对一部分特定功能进行调用,以完成系统集成、数据查询、二次开发等工作。
2BizBox API目前提供的是Java版本。也就是说,您可以通过Java语言来使用2BizBox API,并集成在您的Java系统中。2BizBox可以应用在桌面Java程序中(例如Swing、SWT等),也可以应用在基于Web的Java环境中(例如Servlet、JSP等)。
为什么是API而不是源代码
2BizBox是免费软件,但并不是开源软件。2BizBox软件的源代码并不对公众开放。所以,提供完整的API就是对2BizBox进行二次开发和系统集成的最佳方式。此外,相比源代码,API有更多的优势。2BizBox有超过2百万行源代码,任何个人甚至企业要想消化理解这些源代码,都并非易事,而对其进行修改和定制,就更加的困难。此外,直接修改源代码,也会带来各种各样的Bug和安全风险,导致整个2BizBox系统的不稳定。当更多的开发者对源代码进行各种各样的修改的时候,系统的集成和发展将变得更加困难,甚至会产生分裂的危险,对最终用户和2BizBox的长远发展都将是不利的。而通过统一、一致、简单、开放的API接口,开发者就不用担心2BizBox的内部运作机制,也不必去理解浩如烟海的源代码。只要API接口一致且保持兼容,2BizBox就会携广大开发者不断的向前发展,齐心协力让2BizBox系统变得更加强大。
所以,我们认为API优于源代码。2BizBox会不断丰富和开放高质量的API,聚集广大开发者一起参与到2BizBox的发展中来。
目标读者
本教程面向2BizBox API开发者、2BizBox开发合作伙伴、2BizBox系统集成商。如果您是软件厂商,如果您提供各种BI、CAD、PLM、PDM、CRM、MES、OA、SCM、Call Center、财务系统、库房系统等等,都可以通过本文掌握2BizBox API的开发方法,和2BizBox进行集成,共同建立一个企业应用的生态圈。
对于2BizBox最终用户而言,无需了解2BizBox API和2BizBox二次开发相关知识。
此外,目前2BizBox API仅提供Java版本,所以您需要掌握基本的Java开发技术。
开发实战
前期准备
2BizBox API基于Java开发。所以您需要准备以下内容:
JDK 6或以上版本;
IDE,如Eclipse或NetBeans等均可。本教程以NetBeans为例;
安装2BizBox ERP,并保证其能够运行和登录。创建一些样例数据,以便于开发测试之用;
当然,您需要有Java编程的基本知识。例如,写一个class,添加一个main函数,编译并运行,debug调试等等。好了,有了这些,我们就可以开始了。
搭建2BizBox运行环境
首先从2BizBox官方网站或各大下载网站下载2BizBox免费ERP软件(注意要下载All-in-One版本,它包括了软件的客户端和服务器程序)。双击安装文件后,按照提示进行安装。安装结束后,可以自动运行2BizBox ERP服务器和客户端。注意服务器启动要大约半分钟到一分钟所有。结束后,可以点击客户端的“登录”按钮,登录到系统的“测试”公司中。
在系统中,可以首先创建几个零件。可以观看在线视频学习如何添加一个零件。添加的零件,可以用于下面API程序的测试。这个截图是作者所在系统的零件数据:
搭建开发环境
要使用2BizBox API,需要以下jar包:
第三方包:
commons-lang-2.4.jar,Apache的Commons Lang包,一个标准的Java增强工具包;
2BizBox运行包:
common.jar,2BizBox的数据结构定义包,包含2BizBox所有涉及到的业务数据的POJO定义;
server.jar,2BizBox后台业务模块API函数封装包,封装了全部2BizBox业务API;
以上所有运行包,都可以在本站下载页面下载。
创建工程
本教程使用NetBeans作为IDE进行开发介绍。对于熟悉Eclipse工具的读者,操作方法类似,应当没有太大困难。
第一步:创建工程 在NetBeans中创建一个全新的Java工程,如下图。
给新工程命名BBApiTest,并设定工程目录。
这样,我们就创建了一个全新的、空的Java工程。
第二步:添加Jar包 如上所述,工程需要用到3个jar包。右键点击工程的Libraries目录,添加准备好的3个jar文件包。
添加后,jar包列表如下图:
至此,工程以及工程环境就搭建好了。接下来,我们可以写代码了!
第三步:创建Java类 点击菜单,生成一个普通的Java类。
给这个Java类命名ApiTest,并设置package为test。
第四步:敲入代码
在新建的Java类中敲入如下代码:
package test; import com.serva.bb2.common.BizBoxServer; import com.serva.bb2.gui.server.EngServerActionManager; import com.serva.bb2.gui.server.ServerActionUtil; public class ApiTest { public static void main(String[] args) throws Exception { BizBoxServer server = new BizBoxServer("localhost", "80", "test", "username", "password", "zh"); ServerActionUtil.setTargetServer(server); EngServerActionManager eng = EngServerActionManager.getInstance(); int count = eng.getAllPartsCount(); System.out.println("2BizBox ERP系统中物料总计:" + count + "个"); } }
这是一段极其简单的Java代码。一个普通的Java类,一个main函数。在函数中,创建了一个2BizBox服务器目标,并设置ip地址、端口、公司、用户名、密码、连接语言。随后,获得工程模块的API管理器,调用函数getAllPartsCount获得连接2BizBox系统中所有物料总数。
第五步:执行工程 按F6键,执行该文件。在作者所在的及其环境下,输出结果如下:
run: 2BizBox ERP系统中物料总计:87042个 BUILD SUCCESSFUL (total time: 1 second)
恭喜!您已经成功创建了第一个2BizBox API程序。
高级开发
上面的例子简单的演示了如何通过2BizBox API来连接2BizBox后台服务器并获取数据。本章节继续用复杂一点的例子来演示如何在一个桌面程序或Web程序中通过2BizBox API与已有2BizBox系统进行集成。
Swing程序集成示例
我们假设您已经有了一个基于Java Swing的复杂的桌面应用系统,需要和2BizBox进行数据交换。或者,您已经有了一套基于桌面的OA系统,可以处理各种单据的审批,并在审批结束后,自动到2BizBox ERP中进行单据创建(例如采购单)。此时,2BizBox API就可以大有所为。
我们这里创建并模拟了一个非常简单的基于Java Swing的桌面应用程序,并通过2BizBox API与2BizBox服务器获取数据。这里我们以“模糊查询零件名字并列出”为例子,介绍如何在一个Java Swing程序中对后台的2BizBox服务器进行操作和通讯。
本例子假设您对Java和Swing技术熟悉。
重新创建一个新的Java类,命名ApiTestSearchPartUI,并从JFrame继承。在这个窗口中,上部放置几个输入框,分别用于输入要连接的服务器的IP地址、公司、用户名、密码,以及要查询零件的关键字。窗口中间,放一个大的文本框,用于显示返回结果。
下面几行代码用于对窗口初始化。包括大小、关闭动作、标题等:
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("2BizBox API测试"); this.setSize(750, 500); this.setLocation(300, 300);
接下来,把创建好的Swing组件放在一个Panel中,并放置在窗口顶端:
JPanel settingPane = new JPanel(new FlowLayout(FlowLayout.LEADING, 5, 0)); settingPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); settingPane.add(new JLabel("Server:")); settingPane.add(this.txtServer); settingPane.add(new JLabel("Company:")); settingPane.add(this.txtCompany); settingPane.add(new JLabel("User:")); settingPane.add(this.txtUser); settingPane.add(new JLabel("Password:")); settingPane.add(this.txtPassword); settingPane.add(new JLabel("Search:")); settingPane.add(this.txtSearch); settingPane.add(btnConnect);
在后面,放置一个按钮。当点击按钮时,我们根据用户输入的信息,对服务器进行连接,并根据搜索条件,从后台搜索符合条件的零件:
this.btnConnect.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { initServer(); findPartsByDescriptionInside(); } catch (Exception ex) { ExceptionWorker worker = new ExceptionWorker(ex); String message = worker.getMessage(); JOptionPane.showMessageDialog(ApiTestSearchPartUI.this, message); } } });
代码中,后台调用可能发生异常。所以,在catch异常后,我们要进行处理。这里,使用2BizBox API中提供的ExceptionWorker对异常进行分析和处理,并将结果翻译、解析,通过getMessage()函数返回。我们直接把异常的详细描述通过文本框显示出来即可。
在调用后台时,先通过如下代码初始化服务器。其中,端口默认是80,登录语言默认是英文。
private void initServer() { String server = this.txtServer.getText().trim(); String port = "80"; String company = this.txtCompany.getText().trim(); String user = this.txtUser.getText().trim(); String password = new String(this.txtPassword.getPassword()); String language = "en"; BizBoxServer targetServer = new BizBoxServer(server, port, company, user, password, language); ServerActionUtil.setTargetServer(targetServer); }
接下来是真正的调用代码。首先获得工程模块的接口EngineeringBox,然后调用其中的findPartsByDescriptionInside函数,来模糊搜索符合条件的零件。其中几个参数解释如下:
第一个参数:零件号。如果不限定零件号,直接输入空字符串""即可;
第二个参数:零件类型。如果不限定零件类型,直接输入空字符串""即可;
第三个参数:零件描述。这是我们要使用的零件描述过滤条件,传入用户在界面上的录入;
第四个参数:返回集合的开始游标。也就是从符合条件的结果集的第几个记录开始;
第五个参数:返回集合的长度。也就是最多返回多少个符合条件的记录,注意不要太大,导致服务器附在过重。这里设置100条;
private void findPartsByDescriptionInside() throws Exception { EngineeringBox eng = EngServerActionManager.getInstance(); String search = this.txtSearch.getText().trim(); Collection<PartBasicInfo> parts = eng.findPartsByDescriptionInside("", "", search, 0, 100); String result = ""; if (parts != null) { Iterator<PartBasicInfo> it = parts.iterator(); while (it.hasNext()) { PartBasicInfo part = it.next(); result += part.getPartPk().getPartNumber(); result += "\t"; result += part.getDescription(); result += "\n"; } } this.txtResult.setText(result); }
返回结果集是PartBasicInfo对象的集合。PartBasicInfo对象包含了零件对象的简要信息。对返回结果集进行遍历,将零件号和零件描述输出到文本框中进行显示。
完整程序如下:
package test; import com.serva.bb2.common.BizBoxServer; import com.serva.bb2.common.PartBasicInfo; import com.serva.bb2.common.box.EngineeringBox; import com.serva.bb2.gui.server.EngServerActionManager; import com.serva.bb2.gui.server.ServerActionUtil; import com.serva.bb2.gui.swing.ExceptionWorker; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Collection; import java.util.Iterator; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class ApiTestSearchPartUI extends JFrame { private JTextField txtServer = new JTextField("192.168.1.121", 8); private JTextField txtCompany = new JTextField("test", 4); private JTextField txtUser = new JTextField("admin", 4); private JPasswordField txtPassword = new JPasswordField("password", 4); private JTextField txtSearch = new JTextField(8); private JTextArea txtResult = new JTextArea(); private JButton btnConnect = new JButton("Connect"); public ApiTestSearchPartUI() { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("2BizBox API测试"); this.setSize(750, 500); this.setLocation(300, 300); JPanel settingPane = new JPanel(new FlowLayout(FlowLayout.LEADING, 5, 0)); settingPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); settingPane.add(new JLabel("Server:")); settingPane.add(this.txtServer); settingPane.add(new JLabel("Company:")); settingPane.add(this.txtCompany); settingPane.add(new JLabel("User:")); settingPane.add(this.txtUser); settingPane.add(new JLabel("Password:")); settingPane.add(this.txtPassword); settingPane.add(new JLabel("Search:")); settingPane.add(this.txtSearch); settingPane.add(btnConnect); this.add(settingPane, BorderLayout.NORTH); JPanel resultPane = new JPanel(new BorderLayout()); resultPane.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10)); resultPane.add(new JScrollPane(txtResult), BorderLayout.CENTER); this.add(resultPane, BorderLayout.CENTER); this.btnConnect.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { initServer(); findPartsByDescriptionInside(); } catch (Exception ex) { ExceptionWorker worker = new ExceptionWorker(ex); String message = worker.getMessage(); JOptionPane.showMessageDialog(ApiTestSearchPartUI.this, message); } } }); } private void initServer() { String server = this.txtServer.getText().trim(); String port = "80"; String company = this.txtCompany.getText().trim(); String user = this.txtUser.getText().trim(); String password = new String(this.txtPassword.getPassword()); String language = "en"; BizBoxServer targetServer = new BizBoxServer(server, port, company, user, password, language); ServerActionUtil.setTargetServer(targetServer); } private void findPartsByDescriptionInside() throws Exception { EngineeringBox eng = EngServerActionManager.getInstance(); String search = this.txtSearch.getText().trim(); Collection<PartBasicInfo> parts = eng.findPartsByDescriptionInside("", "", search, 0, 100); String result = ""; if (parts != null) { Iterator<PartBasicInfo> it = parts.iterator(); while (it.hasNext()) { PartBasicInfo part = it.next(); result += part.getPartPk().getPartNumber(); result += "\t"; result += part.getDescription(); result += "\n"; } } this.txtResult.setText(result); } public static void main(String[] args) throws Exception { ApiTestSearchPartUI ui = new ApiTestSearchPartUI(); ui.setVisible(true); } }
运行效果如下图:
在这个例子中,我们输入了正确的登录信息,并收入汉字“机”作为零件描述的关键字,在要连接的2BizBox服务器上进行数据查询,搜索出了大量符合条件的记录,并显示在了下面的文本框中。读者可以自行修改查询条件,在您的2BizBox系统中自由查询,体现“自由操控2BizBox”的乐趣!
以上例子是一个非常简单、典型的Swing程序,但它已经可以成功的连接任意2BizBox服务器,只要您有正确的用户登录信息即可,并且可以查询和搜索零件信息。只要稍加改造,就可以把上面的代码嵌入在您自己的Swing程序中,和2BizBox ERP进行联动或数据集成了。
Web程序集成示例
在Web开发环境中集成2BizBox API也是非常简单的事情。本例子用一个非常简单的JSP来说明如何在JSP中通过2BizBox API来调用远程2BizBox服务器并获得数据、在浏览器中输出。在实际Web开发中,您可以通过这种方式来和2BizBox服务器进行通讯和数据交换,并与您现有的Web系统进行集成和整合。
首先准备tomcat。可以到tomcat官方网站下载免安装版本的zip格式文件。下载后,解压zip文件。进入其中的bin目录,双击startup.bat文件,确保能够正常启动tomcat。如果不能启动,最可能的问题是没有安装Java环境,或没有正确设置JAVA_HOME环境变量。
接下来,我们手工创建一个非常简单的JSP。在webapps目录中,我们创建一个2bizbox目录,作为测试工程。在其中,创建WEB-INF子目录,并在WEB-INF中创建一个web.xml文件,用来定义这个Web工程的信息。我们在其中放入最简单的一个配置文件即可,内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> </web-app>
然后,在WEB-INF中创建lib文件夹,将2BizBox API需要的几个运行jar包放进去,分别是common.jar、commons-lang-2.4.jar、server.jar几个包。好了,这样,一个空的Web环境就搭建成功了。
下面,我们创建JSP测试文件。在2bizbox目录中,用写字板创建一个test.jsp文件。在其中,输入下面代码:
<%@ page import="java.util.*, com.serva.bb2.common.*, com.serva.bb2.common.box.*, com.serva.bb2.gui.server.*, com.serva.bb2.gui.swing.*" %> <% BizBoxServer server = new BizBoxServer("localhost", "80", "test", "admin", "password", "en"); ServerActionUtil.setTargetServer(server); EngineeringBox eng = EngServerActionManager.getInstance(); String search = "TEST"; Collection<PartBasicInfo> parts = eng.findPartsByDescriptionInside("", "", search, 0, 100); String result = ""; if (parts != null) { Iterator<PartBasicInfo> it = parts.iterator(); while (it.hasNext()) { PartBasicInfo part = it.next(); result += part.getPartPk().getPartNumber(); result += "********"; result += part.getDescription(); result += "<br>"; } } out.write(result); %>
这段代码很简单,首先创建2BizBox目标服务器的地址和登录信息,并进行连接。然后,从其中的工程模块调用findPartsByDescriptionInside方法查询最多100条描述中包含"TEST"字符串的零件。最后,把返回的结果集通过字符串把零件号和零件描述输出在网页中。
在作者的环境下,输出结果如下图:
如果进一步简单改造,可以在这个页面上增加表单,自由输入服务器地址、用户名、密码、查询条件等,并提交本页面进行动态查询,就可以实现真正的零件查询了。
了解更多
通过以上步骤可以看到,基于2BizBox API进行二次开发和系统集成是非常简单的事情。对于一个熟悉Java的开发者来说,几分钟就可以完成本教程。怎么样,您是否有兴趣亲自试一试呢?
您可以到在线JavaDoc页面,在线查看详细的2BizBox API JavaDoc文档;
您可以到2BizBox API下载页面下载最新版本的2BizBox API运行包;
希望您能够从中得到更多乐趣!
评论
第一个的错误如下:
请问如何解决?
Exception in thread "main" com.serva.bb2.gui.ServerActionException: java.lang.reflect.InvocationTargetException
at com.serva.bb2.gui.server.ServerActionUtil.invokeImpl(ServerActionUtil.java:146)
at com.serva.bb2.gui.server.ServerActionUtil.invokeImpl(ServerActionUtil.java:388)
at com.serva.bb2.gui.server.ServerActionUtil.getObjectsCount(ServerActionUtil.java:56)
at com.serva.bb2.gui.server.AbstractServerActionManager.getAllCount(AbstractServerActionManager.java:64)
at com.serva.bb2.gui.server.EngServerActionManager.getAllPartsCount(EngServerActionManager.java:31)
at test.ApiTest.main(ApiTest.java:14)
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.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.reflect.InvocationTargetException
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.serva.bb2.login.FacadeServlet$2.invoke(FacadeServlet.java:87)
at com.serva.bb2.login.LoginUtil.invokeInTransaction(LoginUtil.java:18)
at com.serva.bb2.login.FacadeServlet.doPost(FacadeServlet.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:619)
Caused by: com.serva.bb2.common.LoginException
at com.serva.bb2.login.FacadeServlet$3.invoke(FacadeServlet.java:264)
at com.serva.bb2.login.LoginUtil.invokeInTransaction(LoginUtil.java:18)
at com.serva.bb2.login.FacadeServlet.login(FacadeServlet.java:339)
... 28 more
at com.serva.bb2.gui.server.ServerActionUtil.invokeImpl(ServerActionUtil.java:151)
at com.serva.bb2.gui.server.ServerActionUtil.invokeImpl(ServerActionUtil.java:109)
at com.serva.bb2.gui.server.ServerActionUtil.getObjectsCount(ServerActionUtil.java:64)
at com.serva.bb2.gui.server.AbstractServerActionManager.getAllCount(AbstractServerActionManager.java:64)
at com.serva.bb2.gui.server.EngServerActionManager.getAllPartsCount(EngServerActionManager.java:31)
at test.ApiTest.main(ApiTest.java:15)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:852)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:793)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:718)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:896)
at com.serva.bb2.common.Spiderman$FacadeProxy.invoke(Spiderman.java:155)
at com.serva.bb2.common.Spiderman$FacadeProxy.login(Spiderman.java:112)
at com.serva.bb2.common.Spiderman.login(Spiderman.java:39)
at com.serva.bb2.common.Spiderman.<init>(Spiderman.java:34)
at com.serva.bb2.common.Spiderman.<init>(Spiderman.java:26)
at com.serva.bb2.gui.server.ServerActionUtil.invokeImpl(ServerActionUtil.java:124)
... 5 more
这么多异常,都是按楼主步骤来的,只怪我太菜鸟了。
Connection refused: connect 是说无法连接服务器。是不是没开2BizBox服务器?
at com.serva.bb2.gui.server.ServerActionUtil.invokeImpl(ServerActionUtil.java:151)
at com.serva.bb2.gui.server.ServerActionUtil.invokeImpl(ServerActionUtil.java:109)
at com.serva.bb2.gui.server.ServerActionUtil.getObjectsCount(ServerActionUtil.java:64)
at com.serva.bb2.gui.server.AbstractServerActionManager.getAllCount(AbstractServerActionManager.java:64)
at com.serva.bb2.gui.server.EngServerActionManager.getAllPartsCount(EngServerActionManager.java:31)
at test.ApiTest.main(ApiTest.java:15)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:852)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:793)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:718)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:896)
at com.serva.bb2.common.Spiderman$FacadeProxy.invoke(Spiderman.java:155)
at com.serva.bb2.common.Spiderman$FacadeProxy.login(Spiderman.java:112)
at com.serva.bb2.common.Spiderman.login(Spiderman.java:39)
at com.serva.bb2.common.Spiderman.<init>(Spiderman.java:34)
at com.serva.bb2.common.Spiderman.<init>(Spiderman.java:26)
at com.serva.bb2.gui.server.ServerActionUtil.invokeImpl(ServerActionUtil.java:124)
... 5 more
这么多异常,都是按楼主步骤来的,只怪我太菜鸟了。
xiaozhonghua算是一个iteye上我认识的java的牛人。
相关推荐
2BizBox免费ERP自实施指南.pdf
随着2BizBox免费ERP软件v3.1.0中文版的火热发布,越来越多的朋友强烈要求尽快提供通俗易懂、内容全面、版本配套的用户手册,以便更好、更快的了解、学习、使用2BizBox这套免费ERP软件。经过2BizBox团队全体人员将近...
随着2BizBox免费ERP软件v3.1.0中文版的火热发布,越来越多的朋友强烈要求尽快提供通俗易懂、内容全面、版本配套的用户手册,以便更好、更快的了解、学习、使用2BizBox这套免费ERP软件。经过2BizBox团队全体人员将近...
2BizBox免费ERP快速入门教程, 2BizBox是免费的生产企业ERP
2bizbox免费ERP用户手册-采购管量,一款不错的软件说明书,采购部分
2BizBox 采购管理 2BizBox免费ERP用户手册-采购管理.pdf
### 2BizBox免费ERP自实施指南:详细配置解析 #### 一、概览 2BizBox是一款功能全面的企业资源规划(ERP)软件,适用于中小企业。为了帮助用户更好地理解和掌握2BizBox的安装与配置流程,本文将详细介绍《2BizBox...
2BizBox ERP用户手册的这部分内容详细介绍了如何管理和维护零件的基本信息,包括添加新零件、更新现有零件信息以及如何查看和搜索零件的方法。这些操作是企业物料管理的基础,能够帮助企业有效地跟踪和管理其库存和...
2BizBox历经十多年的发展,目前官网开放V5.0试用版下载。 本教程是来自官网的权威学习指南。带您用10分钟时间梳理BOM清单,销售单,采购单,工单,库存收发料,财务应收应付一个完整的生命周期。 适合广大的2BizBox...
介绍2BizBox整个操作的一个流程,从建物料开始,销售,采购,生产,收料,发料,应收,应付,收款,付款整个一个操作流程的讲解。30分钟即可入门
免费ERP,公司工厂很实用,有免费,这个是大型的ERP,可以省钱了
讲解如何初始化系统,如何建基础数据,快速搭建公司的一个运作环境。
### 2BizBox免费制造业ERP快速指南 #### 一、2BizBox ERP概述 2BizBox ERP是一款功能全面且完全免费的企业资源计划(Enterprise Resource Planning, ERP)软件,专为按单生产制造业设计。该软件涵盖了从产品设计到...
关于日常操作中数据的备份与还原。文档的备份与还原。软件免费,资源当然也要免费了。
免费 ERP 2bizbox V4.5.1 的客户端安装程序,在官网找不到了
* 2BizBox 是功能全面、易于使用的免费 ERP 软件。 * 2BizBox 可以在 30 分钟内完成基础设置。 二、安装 2BizBox * 可以从 www.2bizbox.com 官网下载 2BizBox 安装程序。 * 安装需要一台装有任意版本 Windows 操作...
简单的ERP系统
2bizbox论坛已经删除了开发部分介绍,这里把以前收集的和大家分享一下