个人所得税组件的实现

这部分的内容比较简单,建立普通的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. 工厂模式理解了没有?
  3. 从零玩转HTML5前端+跨平台开发上
  4. python和php对比
  5. MapReduce-流量统计求和-Reducer和JobMain代码编写
  6. .net5 不支持winform_.NET 5.0 RC 2 发布,正式版将在11月.NET Conf大会上发布
  7. MySQL show processlist
  8. 【2031】求一元三次方程的解
  9. 201542010208、201571030331软件工程结对项目
  10. 对‘avformat_find_stream_info’未定义的引用、to the PKG_CONFIG_PATH environment variable
  11. 4.3 齐次线性方程组
  12. mysql查询本月第一周_mysql获取当前日期所在周(原则:每年1月1号所在周为第一周,最少1天,12月31日为最后一周)...
  13. 4-1 Aruba Central 云管理解决方案
  14. 彩色图直方图均衡化matlab
  15. javaweb项目开发案例
  16. 【统计】假设检验方法
  17. 关于 java 显示GIF
  18. http://39.98.219.132 题库标准答案(题库序号:1378)之沙盘游戏
  19. 分布式网络爬虫关键技术分析与实现一网络爬虫相关知识介绍
  20. 数据结构-串-KMP算法详解(Next数组计算)(简单易懂)

热门文章

  1. 【Excel学习笔记6】数据验证是什么?如何使用?小缺陷?
  2. 【Pytorch深度学习50篇】·······第三篇:【非监督学习】【训练篇】
  3. ArrayBlockingQueue 迭代器
  4. 使用Fiddler抓取到的“姐夫酷”API接口
  5. 开发游戏,我该使用何种语言
  6. SCAPY官方教程五
  7. 利用STL解决二维数组过大内存溢出问题
  8. atrix 4g linux,多年耳烧发现atrix4g的内放音质非常好。对比多款主流手机
  9. 小丑2019_“小丑规则”
  10. 交换机无法进入命令控制台问题