weblogic 10.x 上开发restful服务

简介: 之前已经学习过 利用JAX-RS快速开发RESTful 服务,当时是jboss环境,如果原封不动的迁移到weblogic 10.x 版本,会杯具的发现应用启动失败,需要做些小调整: 项目结构如下: 需要在原来的Rest Service(本文中是MyService.

之前已经学习过 利用JAX-RS快速开发RESTful 服务,当时是jboss环境,如果原封不动的迁移到weblogic 10.x 版本,会杯具的发现应用启动失败,需要做些小调整:

项目结构如下:

需要在原来的Rest Service(本文中是MyService.java)外,再包装一层,创建一个Application的子类,本例中是 MyApplication.java,代码如下:

 1 package yjmyzz.service;
 2 
 3 import java.util.HashSet;
 4 import java.util.Set;
 5 
 6 import javax.ws.rs.ApplicationPath;
 7 import javax.ws.rs.core.Application;
 8 
 9 
10 import yjmyzz.service.rest.MyService;
11 
12 @ApplicationPath("/rest")
13 public class MyApplication extends Application {
14 
15     public Set<Class<?>> getClasses() {
16         Set<Class<?>> s = new HashSet<Class<?>>();
17         s.add(MyService.class);
18         
19         return s;
20     }
21 }
MyApplication

MyService.java的内容如下:(这与在jboss环境中的代码完全相同)

 1 package yjmyzz.service.rest;
 2 
 3 import javax.ws.rs.GET;
 4 
 5 import javax.ws.rs.Path;
 6 
 7 import javax.ws.rs.Produces;
 8 
 9 import javax.ws.rs.core.MediaType;
10 import javax.xml.bind.JAXBElement;
11 import javax.xml.namespace.QName;
12 
13 @Path("/")
14 public class MyService {
15 
16     final String XMLNS_NAMESPACE = "http://yjmyzz.cnblogs.com/rest/service";
17     final String ROOT_NODE = "root";
18 
19     @GET
20     @Path("/json/hello")
21     @Produces(MediaType.APPLICATION_JSON)
22     public JAXBElement<String> getHelloWorldJSON() {
23         JAXBElement<String> result = new JAXBElement<String>(new QName("",
24                 ROOT_NODE), String.class, sayHelloWorld());
25         return result;
26     }
27 
28     @GET
29     @Path("/xml/hello")
30     @Produces(MediaType.APPLICATION_XML)
31     public JAXBElement<String> getHelloWorldXML() {
32         JAXBElement<String> result = new JAXBElement<String>(new QName(
33                 XMLNS_NAMESPACE, ROOT_NODE), String.class, sayHelloWorld());
34         return result;
35     }
36 
37     private String sayHelloWorld() {
38         return "Hello JAX-RS-1";
39     }
40 
41 }
MyService

还有一个关键步骤:在webapp/WEB-INF目录下创建web.xml,内容参考如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "
 4     version="2.5">
 5 
 6     <servlet>
 7         <servlet-name>MyService</servlet-name>
 8         <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
 9         <init-param>
10             <param-name>javax.ws.rs.Application</param-name>
11             <param-value>yjmyzz.service.MyApplication </param-value>
12         </init-param>
13     </servlet>
14 
15     <servlet-mapping>
16         <servlet-name>MyService</servlet-name>
17         <url-pattern>/rest/*</url-pattern>
18     </servlet-mapping>
19 
20 </web-app>
web.xml

最后附上pom.xml的内容:

 1 <?xml version="1.0"?>
 2 
 3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>org.jboss.as.quickstarts</groupId>
 8     <artifactId>helloworld-rs</artifactId>
 9     <version>7.1.2-SNAPSHOT</version>
10     <packaging>war</packaging>
11     <name>JBoss EAP Quickstart: helloworld-rs</name>
12     <description>JBoss EAP Quickstart: Helloworld using JAX-RS</description>
13 
14     <properties>
15         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
16         <version.jboss.maven.plugin>7.4.Final</version.jboss.maven.plugin>
17         <version.jboss.spec.javaee.6.0>3.0.2.Final</version.jboss.spec.javaee.6.0>
18         <version.war.plugin>2.1.1</version.war.plugin>
19         <maven.compiler.target>1.6</maven.compiler.target>
20         <maven.compiler.source>1.6</maven.compiler.source>
21     </properties>
22 
23     <dependencyManagement>
24         <dependencies>
25             <dependency>
26                 <groupId>org.jboss.spec</groupId>
27                 <artifactId>jboss-javaee-6.0</artifactId>
28                 <version>${version.jboss.spec.javaee.6.0}</version>
29                 <type>pom</type>
30                 <scope>import</scope>
31             </dependency>
32         </dependencies>
33     </dependencyManagement>
34 
35     <dependencies>
36         <dependency>
37             <groupId>com.sun.jersey</groupId>
38             <artifactId>jersey-bundle</artifactId>
39             <version>1.15</version>
40         </dependency>
41     </dependencies>
42 
43     <build>
44         <finalName>${project.artifactId}</finalName>
45         <plugins>
46             <plugin>
47                 <artifactId>maven-war-plugin</artifactId>
48                 <version>${version.war.plugin}</version>
49                 <configuration>
50                     <failOnMissingWebXml>true</failOnMissingWebXml>
51                 </configuration>
52             </plugin>
53 
54             <plugin>
55                 <groupId>org.jboss.as.plugins</groupId>
56                 <artifactId>jboss-as-maven-plugin</artifactId>
57                 <version>${version.jboss.maven.plugin}</version>
58             </plugin>
59         </plugins>
60     </build>
61 
62 
63 </project>
pom.xml

ok,打完收工!

附示例源码下载:weblogic-rest-helloworld.zip

目录
相关文章
|
3月前
|
JSON API 数据格式
探索后端开发:从零构建简易RESTful API
在数字时代的浪潮中,后端开发如同搭建一座桥梁,连接着用户界面与数据世界。本文将引导读者步入后端开发的殿堂,通过构建一个简易的RESTful API,揭示其背后的逻辑与魅力。我们将从基础概念出发,逐步深入到实际操作,不仅分享代码示例,更探讨如何思考和解决问题,让每一位读者都能在后端开发的道路上迈出坚实的一步。
|
3月前
|
缓存 前端开发 API
深入浅出:后端开发中的RESTful API设计原则
【10月更文挑战第43天】在数字化浪潮中,后端开发如同搭建梦想的脚手架,而RESTful API则是连接梦想与现实的桥梁。本文将带你领略API设计的哲学之美,探索如何通过简洁明了的设计,提升开发效率与用户体验。从资源定位到接口约束,从状态转换到性能优化,我们将一步步构建高效、易用、可维护的后端服务。无论你是初涉后端的新手,还是寻求进阶的开发者,这篇文章都将为你的开发之路提供指引。让我们一起走进RESTful API的世界,解锁后端开发的新篇章。
|
3月前
|
JSON 关系型数据库 测试技术
使用Python和Flask构建RESTful API服务
使用Python和Flask构建RESTful API服务
148 2
|
3月前
|
JSON API 开发者
构建高效API:后端开发中的RESTful最佳实践####
在数字化时代,API作为不同系统间通信的桥梁,其重要性日益凸显。本文将深入探讨RESTful API的设计原则与最佳实践,通过实际案例分析,揭示如何构建高效、可维护且易于使用的API接口,助力后端开发者提升项目质量与用户体验。 ####
|
3月前
|
JSON 缓存 API
探索后端开发中的RESTful API设计原则
【10月更文挑战第41天】在后端开发的广阔天地中,API的设计如同绘制一幅精细的地图,指引着数据的流向和前端的交互。本文将带你走进RESTful API的世界,一起探索如何用简洁高效的设计原则来构建一个清晰、可维护且易于理解的API结构。我们将从RESTful API的基础概念出发,通过实际案例分析,揭示如何在实践中应用这些设计原则,并讨论如何在复杂的业务逻辑中保持API的简洁性和一致性。
|
3月前
|
XML JSON API
【PHP开发专栏】PHP RESTful API设计与开发
随着互联网技术的发展,前后端分离成为Web开发的主流模式。本文介绍RESTful API的基本概念、设计原则及在PHP中的实现方法。RESTful API是一种轻量级、无状态的接口设计风格,通过HTTP方法(GET、POST、PUT、DELETE)操作资源,使用JSON或XML格式传输数据。在PHP中,通过定义路由、创建控制器、处理HTTP请求和响应等步骤实现RESTful API,并强调了安全性的重要性。
59 2
|
3月前
|
前端开发 关系型数据库 API
深入浅出后端开发——从零到一构建RESTful API
本文旨在为初学者提供一个关于后端开发的全面指南,特别是如何从零开始构建一个RESTful API。我们将探讨后端开发的基本概念、所需技术栈、以及通过实际案例展示如何设计和实现一个简单的RESTful API。无论你是完全的新手还是有一定编程基础的开发者,这篇文章都将为你提供实用的知识和技巧,帮助你在后端开发的道路上迈出坚实的一步。
|
3月前
|
安全 测试技术 API
构建高效RESTful API:后端开发的艺术与实践####
在现代软件开发的浩瀚星空中,RESTful API如同一座桥梁,连接着前端世界的绚丽多彩与后端逻辑的深邃复杂。本文旨在探讨如何精心打造一款既高效又易于维护的RESTful API,通过深入浅出的方式,剖析其设计原则、实现技巧及最佳实践,为后端开发者提供一份实用的指南。我们不深入晦涩的理论,只聚焦于那些能够即刻提升API品质与开发效率的关键点,让你的API在众多服务中脱颖而出。 ####
45 0
|
4月前
|
存储 XML API
探索后端开发中的RESTful API设计哲学
【10月更文挑战第21天】在数字化时代,后端开发是构建强大、可靠和可扩展应用程序的基石。本文将深入探讨RESTful API的设计原则,并展示如何通过这些原则来提升API的质量和性能。我们将从基础概念出发,逐步深入到实际案例分析,揭示高效API设计的秘诀。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧,帮助你在后端开发的道路上更进一步。
|
4月前
|
存储 API 数据库
深入浅出后端开发:从零到一搭建RESTful API
在数字化的浪潮中,后端开发如同一座桥梁,连接着用户界面与数据存储。本文将引导你理解后端开发的核心概念,并通过实践案例,展示如何从零开始构建一个RESTful API。我们将探索设计原则、选择合适的编程语言和框架、数据库交互以及API测试等方面。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你提供一条清晰的学习路径。