发表于: 2017-09-27 20:10:00

2 716


今天完成的事情:
1.成功打包完成了,在服务器上成功运行最后用的是shade的打包方式:
在pom里用shade插件打包成功:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.4.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>com.jnshu.main.StudentServiceTest</mainClass>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.handlers</resource>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.schemas</resource>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>
之前用assembly打包一直没有成功:用不带xml的打包方式打出来的没有主类,用xml打出来的包少两个spring文件:这两个文件好像是因为每个依赖的jar里面都有,就不知道放哪个了,然后在pom里指定一下还是不成功就换了shade,在服务器上是可以运行的。两个服务端分别制定了一个端口,然后昨天日报贴过了代码,然后随机访问,出错了就访问第二个,用了一个随机数制定访问哪个。
然后今天分别用jetty和resin访问,部署了两个web 然后用nginx分配端口,然后进行访问service也是成功的。
 
登录界面
进去界面
2.完成任务9的任务要求
首先看了一下 Tuscany
首先这是一个已经更新的框架。同样是基于maven的。 Tuscany是一个相当成熟的SCA框架,而SAC又是实现SOA的基础;SOA这是一种组件模式,它的组件概念就是复用的高度体现,包含接口和引用,可以实现类似于流水线一样的功能。
然后跑了两个例子一个不拆开的,另一个是拆开的。
<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
          xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
          targetNamespace="http://sample"
          xmlns:sample="http://sample"
          xmlns:scallop="http://scallop/xmlns/sca/1.1"
          name="Calculator">
    <component name="CalculatorServiceComponent">
        <implementation.java class="com.jnshu.impl.CalculatorServiceImpl"/>
        <service name="CalculatorService">
            <interface.java interface="com.jnshu.service.CalculatorService"/>
            <tuscany:binding.rmi uri="rmi://127.0.0.1:5555/CalculatorRMIService"/>
        </service>
        <reference name="addService" target="AddServiceComponent" />
        <reference name="subtractService" target="SubtractServiceComponent" />
        <reference name="multiplyService" target="MultiplyServiceComponent" />
        <reference name="divideService" target="DivideServiceComponent" />
    </component>
    <component name="AddServiceComponent">
        <implementation.java class="com.jnshu.impl.AddServiceImpl"/>
    </component>
    <component name="SubtractServiceComponent">
        <implementation.java class="com.jnshu.impl.SubtractServiceImpl"/>
    </component>
    <component name="MultiplyServiceComponent">
        <implementation.java class="com.jnshu.impl.MultiplyServiceImpl"/>
    </component>
    <component name="DivideServiceComponent">
        <implementation.java class="com.jnshu.impl.DivideServiceImpl"/>
    </component>
</composite>
最重要的是这个配置文件,可能是特殊的框架所以配置文件也特殊吧这个后缀都不一样。
public class CalculatorServer {
    public static void main(String[] args) throws RemoteExceptionNotBoundExceptionMalformedURLException {
        CalculatorService Calculator = (CalculatorService) Naming.lookup("//127.0.0.1:5555/CalculatorRMIService");
        System. out.println("1+2结果: " + Calculator.add(1,2));
    }
}
public class CalculatorServer {
    public static void main(String[] args) throws InterruptedException {

        Node node = NodeFactory.newInstance().createNode("Calculator.composite");
        node.start();
        System.out.println("service启动");
    }
}
这是两个登陆类
package com.jnshu.impl;


import com.jnshu.service.*;
import org.oasisopen.sca.annotation.Reference;


public class CalculatorServiceImpl implements CalculatorService {
    private AddService addservice;
    private SubtractService subtractService;
    private MultiplyService multiplyService;
    private DivideService divideService;

    @Reference
    public void setAddService(AddService addService) {
        this.addservice = addService;
    }

    @Reference
    public void setSubtractService(SubtractService subtractService) {
        this.subtractService = subtractService;
    }

    @Reference
    public void setDivideService(DivideService divideService) {
        this.divideService = divideService;
    }

    @Reference
    public void setMultiplyService(MultiplyService multiplyService) {
        this.multiplyService = multiplyService;
    }

    public double add(double n1, double n2) {
        return addservice.add(n1n2);
    }

    public double subtract(double n1, double n2) {
        return subtractService.subtract(n1n2);
    }

    public double multiply(double n1, double n2) {
        return multiplyService.multiply(n1n2);
    }

    public double divide(double n1, double n2) {
        return divideService.divide(n1n2);
    }
}
package com.jnshu.service;

import org.oasisopen.sca.annotation.Remotable;

@Remotable
public interface CalculatorService {

    double add(double n1, double n2);

    double subtract(double n1, double n2);

    double multiply(double n1, double n2);

    double divide(double n1, double n2);

}
这个上面的@Remotable是一定要加的
不然会报错,缺少注解。

这个任务感觉主要是理解SAC 和soc的 

那么问题来了,什么是SCA

       SCA的目的是使用户在构建企业应用时有一个不再直接面对具体的技术细节的层次,而是通过服务组件的方式来构建应用。这种方式也使得客户的企业应用具有良好的分层架构,能够很好的分离应用的业务逻辑和IT逻辑,不但易于应用的构建,也易于应用的更改和部署。

什么是SOC

  面向服务的体系结构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。

今天看任务9比较短,明天继续理解。

明天计划的事,明天提交任务8 9

师兄明天帮我看一下任务7的图片那步上传吧,我的项目删了,明天我down一个先


还是那个问题,那个项目打了tar包是怎么在服务器上运行呢


返回列表 返回列表
评论

    分享到