个人所得税组件的实现

这部分的内容比较简单,建立普通的java程序,主要由两部分文件构成:
TaxCaculateInterface接口、IncomeTaxCaculate实现类。

TaxCaculateInterface接口:

package com;public interface TaxCaculateInterface {public float Caculate(float income);
}

TaxCaculate类:

package com;public class TaxCaculate implements TaxCaculateInterface {@Overridepublic float Caculate(float income) {float tax=0;float beyond=0;beyond=income-3500; //低于3500不用交税if(beyond<=0){tax=0;}else if(beyond<=1500){tax= (float) (beyond*0.03);}else if(beyond<=4500){tax=(float)(beyond*0.1-105);}else if(beyond<=9000){tax=(float)(beyond*0.2-555);}else if(beyond<=35000){tax=(float)(beyond*0.25-1005);}else if(beyond<=55000){tax=(float)(beyond*0.3-2755);}else if(beyond<=80000){tax=(float)(beyond*0.35-5505);}else{tax=(float)(beyond*0.45-13505);}return tax;}
}

然后将这个实现的组件打成jar包,组件完成。(具体步骤参考下面)


按照上图的顺序依次操作、命名,apply—>ok。在主界面build里面选择build Artifacts,选中自己命名的jar包,然后选择build,即可在工程的out/artifacts下面生成我们组件的jar包。

WebService服务封装

服务器端

新建webService工程。(具体步骤如下)
file->new project,按照下图中红色框里面的内容勾选

命名以后生成WebService服务器工程,file->project structure,然后按照以下步骤导入上面写好的个人所得税jar包:

导入成功以后,可以在工程文件目录里面看到导入的jar包:

编写服务器代码:

package example;import com.TaxCaculate;import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;@WebService
public class TaxCaculateService {@WebMethodpublic float tax(float income){TaxCaculate caculator=new TaxCaculate();return caculator.Caculate(income);}public static void main(String[] argv){Object imp=new TaxCaculateService();String address="http://localhost:8080/TaxCaculateService";Endpoint.publish(address,imp);System.out.println("WebService服务器启动成功!");}
}

代码里面的字符串address存储了service服务发布时占用的端口号,代码写完右键运行。
在浏览器输入:
http://localhost:8080/TaxCaculateService?wsdl
(可以看到这个地址是在上面的address后面加一个?wsdl构成的,可根据自己的需要修改前面的发布地址,后面加上?wsdl就是浏览器可以访问的地址了。)浏览器访问效果如下:

客户端

新建webServices Client工程。(具体步骤如下)
file->new project


这一步填写url的时候需要填写前面往浏览器填写的路径,即address+?wsdl,可以参考图片中的地址。另外需要强调的是在使用intelij idea创建webservice客户端的时候需要服务器端运行开启,不然即使输入的地址正确,也会提示url无效,无法点击ok摁扭。(个人猜测在生成客户端的时候,intelij idea会实时监测填写的url是否存在,只有检测到可以访问才会允许下一步操作)

可以看到在生成的client工程文件的目录中,有两个包,第一个包com包(在创建的时候自己命名的)里面存放的是自动生成的辅助类,第二个包example包(此包根据个人习惯自己命名)里面放着需要自己写的核心类。
客户端核心类TaxCaculatorClient代码:

package example;import com.TaxCaculateServiceService;public class TaxCaculatorClient {public static void main(String[] argv) {com.TaxCaculateService service = new TaxCaculateServiceService().getTaxCaculateServicePort();//invoke business methodfloat income=10000;System.out.println(service.tax(income));}
}

我这里的客户端主要写了往服务器传工资收入为10000,然后控制台输出服务器计算好的个人所得税,运行效果如下:

常见问题

一、在生成webServices Client 的时候报错,且乱码

控制台报错如下:

[WARNING] schema_reference: ���� accessExternalSchema �������õ����ƶ������� 'http' ����, ����޷���ȡ�����ĵ� 'HelloWorld?xsd=1'��http://localhost:9000/HelloWorld?wsdl#types?schema1�ĵ� 4 ��

原因

我使用的jdk和jre版本都是1.8,从官方文档中得知jaxb-xjc-2.2.7对jdk1.8存在一个bug,bug详情如下:
https://bugs.openjdk.java.net/browse/JDK-8020999?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

解决方法

1.在jrelib目录下创建jaxp.properties文件
2.文件中添加如下内容
javax.xml.accessExternalSchema = all

二、无法使用注解

这个问题没有仔细研究其中的原理,我一开始使用的高版本jdk(jdk11、12),后来通过更换成低版本jdk1.8问题完美解决。

Intelij idea实现简单的个人所得税EJB组件并用webservice服务封装以及常见的几个问题解决思路相关推荐

  1. 简单地发布EJB程序的过程

    step1. Compile - 编辑源程序 step2. Package - 将EJB组件(sesssion bean or message driven bean)打包至EJB模块,JAR文件 s ...

  2. [转载]使用SPRING AOP框架和EJB组件

    使用SPRING AOP框架和EJB组件 摘要 快速发展的开发人员社区.对各种后端技术(包括JMS.JTA.JDO. Hibernate.iBATIS等等)的支持,以及(更为重要的)非侵入性的轻量级I ...

  3. J2EE中使用Spring AOP框架和EJB组件

    快速发展的开发人员社区.对各种后端技术(包括JMS.JTA.JDO.Hibernate.iBATIS等等)的支持,以及(更为重要的)非侵入性的轻量级IoC容器和内置的AOP运行时,这些因素使得Spri ...

  4. J2EE中使用Spring AOP框架和EJB组件(1)

    J2EE中使用Spring AOP框架和EJB组件(1) [@more@]本文介绍了一种把J2EE应用程序中的EJB转换为Spring托管组件的方法,以及转换之后可以采用的强大技术.它还给出了几个实际 ...

  5. J2EE中使用Spring AOP框架和EJB组件(6)

    J2EE中使用Spring AOP框架和EJB组件(6) [@more@] 组合和链接通知 我们已经使用了一个简单的拦截器通知来实现附加的逻辑,并且将其当作一个独立的组件进行了测试.当应该在不进行修改 ...

  6. 流程编排、如此简单-通用流程编排组件JDEasyFlow介绍

    作者:李玉亮 JDEasyFlow是企业金融研发部自研的通用流程编排技术组件,适用于服务编排.工作流.审批流等场景,该组件已开源(https://github.com/JDEasyFlow/jd-ea ...

  7. 简单的bboss http组件使用方法

    简单的bboss http组件使用方法. 首先在工程中导入bboss http组件: maven坐标: <dependency><groupId>com.bbossgroups ...

  8. Bootstrap简单认识之Dropdown组件

    Dropdown(下拉框)组件 一.简介 此组件可以不指定 data-target 属性,不指定的话,必须按.dropdown-toggle 按钮和 dropdown-menu 列表放在同一个父元素下 ...

  9. JAX-WS RI组件开发基于JAX-WS规范的WebService服务入门程序

    一.服务端 创建一个普通的web项目:JaxWS_ri_calculator_server 先把服务端项目完成之后完整的结构示意图展示出来,方便你们做参考: 1.创建提供webservice服务的服务 ...

最新文章

  1. 这个美国议员候选人想发币,联邦选举委员会还答应了
  2. 3D 可视化,卷积、池化清清楚楚!网友:终于能看懂神经网络到底在干啥了......
  3. MySQL 的发展历史和版本分支:
  4. 栈和队列之用java实现栈
  5. java获取ram_Java:ChronicleMap第2部分,超级RAM映射
  6. 第二百一十九天 how can I 坚持
  7. python数据可视化的包怎么安装_数据可视化包 - matplotlib
  8. 网络协议从入门到底层原理(11)网络爬虫、无线网络、HTTP缓存、即时通信、流媒体
  9. Introducing and integrating Hibernate(Chapter 2 of Hibernate In Action)
  10. [转载] 七龙珠第一部——第005话 邪恶沙漠的雅木茶
  11. windows 文件保护机制
  12. 又是一江春水自东流!
  13. 精准营销的神器:小蜜蜂获客系统助你成功
  14. 煤炭传送带状态检测系统-python
  15. postman接口测试中文汉化教程
  16. FFM:土豪的利器,平民该怎么玩?(tensorflow2, Bi-FFM)
  17. window下python安装包问题小结
  18. 如何用计算机打出下划线,哪位可以告诉我在电脑上怎么打下划线
  19. 阿里云服务器高主频内存型hfr7磁盘I/O性能表
  20. MOOS-ivp 使用qt创建一个moosapp

热门文章

  1. 怎么样才能更好的管理仓库?方法有哪些?
  2. android 疯狂足球原码,基于Android的疯狂足球游戏源代码
  3. 两年多菊厂OD的心路历程
  4. Tripwire 应用
  5. 为什么企业网站需要做seo
  6. OpenGL分片渲染实现
  7. 互联神州2008年十一superCCNA
  8. CorelDRAW绘制的优秀人物肖像插画作品
  9. 系统稳定性测试过程中cpu使用率呈缓慢上升趋势
  10. 关于斯坦福句法剖析器 -- 答网友